画一条虚线
先说题外话,今天下午去面试了,我还是挺喜欢面试我的那个人的,也觉得那家公司很不错,But,我表现的好差,要 GG 了...
不过事后复盘(这词会不会太耀眼了哈哈哈)一下,问题其实都不算难,只是我很多还没有去仔细看过,比如问了:Android 系统架构(这我竟然记不住...每一本入门书第一章都会讲这个)、XML 的解析方式以及它们的区别、Socket等等,不过我回答的上面这些问题我回答的并不是很好。
真的是入门书的第一章内容虽然技术问题跪了,但是其它方面我觉得聊得还时挺不错的,感觉对方公司的想法很好,而且在面对面交流的时候,面试官的口头表达能力能不错,聊着很舒服,而我虽然也在尽力表达自己的观点但却显得有点力不从心。
面试机会对我来说还是比较稀少的,而如果每一次都拿它来试错和学习,这样成本是非常高的,所以也就是面试前一定要做好充足的准备,当我认为自己已经准备的很充分的时候,其实只是自己认为的充分,而不是真的。
说回今天内容,画一条虚线,是在 Android 中画一条虚线,先来看看效果图:
效果图.pngAndroid 对于我们画各种形状的支持其实很完善的,不过这里就不一一介绍了,不过去看官方文档才能看的更全面,地址如下:
https://developer.android.com/guide/topics/resources/drawable-resource.html?hl=zh-cn
如果想要实现一个虚线的效果,只需要创建一个类似这样的 xml 即可。
<?xml version="1.0" encoding="utf-8"?>
<!-- 这是一个 shape,它可以用于画各种形状,且指定这里画的是一条线 -->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="line">
<!-- dashWidth 表示一条线段的宽度 -->
<!-- dashGap 表示线段之间的的宽度 -->
<!-- color 表示线的颜色 -->
<!-- width 表示线的宽度 -->
<stroke
android:color="#999999"
android:dashGap="20dp"
android:dashWidth="10dp"
android:width="100dp"/>
</shape>
当然 android:dashWidth 与 android:dashGap 互相依赖,所以就必须同时存在,当我们画一条虚线,其实就是无数的线段,而线段间的间距就是用 android:dashGap 来表示的,android:dashWidth 用来表示每条短线段的宽度,而 width 用来指定这条线整体的宽度,所以上面的效果其实最终是这样的:
效果图.png当然写完之后我就很自信的运行了,结果啥也没有,Nothing,我感到十分心疼,不过后来我懂了运来是的我 View 的高度不够,当我的 View 高度超过虚线高度后才会显示出来,但这时显示额度竟然是一条直线!我靠说好的虚线呢?
于是乎我只能求助 Google,并解决这个问题。参考地址如下:
http://blog.chenming.info/blog/2012/09/18/android-hardware-accel/
解决方法就是加一行代码即可: android:layerType="software",原因是因为硬件加速,而这个代码只是针对 View 的解决方案,其实可以针对 Application、Activity、Window。
代码.png记一次虚线踩坑,不过虚线画起来好好玩,哈哈哈...