画一条虚线

先说题外话,今天下午去面试了,我还是挺喜欢面试我的那个人的,也觉得那家公司很不错,But,我表现的好差,要 GG 了...

不过事后复盘(这词会不会太耀眼了哈哈哈)一下,问题其实都不算难,只是我很多还没有去仔细看过,比如问了:Android 系统架构(这我竟然记不住...每一本入门书第一章都会讲这个)、XML 的解析方式以及它们的区别、Socket等等,不过我回答的上面这些问题我回答的并不是很好。

真的是入门书的第一章内容

虽然技术问题跪了,但是其它方面我觉得聊得还时挺不错的,感觉对方公司的想法很好,而且在面对面交流的时候,面试官的口头表达能力能不错,聊着很舒服,而我虽然也在尽力表达自己的观点但却显得有点力不从心。

面试机会对我来说还是比较稀少的,而如果每一次都拿它来试错和学习,这样成本是非常高的,所以也就是面试前一定要做好充足的准备,当我认为自己已经准备的很充分的时候,其实只是自己认为的充分,而不是真的。

说回今天内容,画一条虚线,是在 Android 中画一条虚线,先来看看效果图:

效果图.png

Android 对于我们画各种形状的支持其实很完善的,不过这里就不一一介绍了,不过去看官方文档才能看的更全面,地址如下:

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

记一次虚线踩坑,不过虚线画起来好好玩,哈哈哈...

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 172,924评论 25 708
  • 原理:创建一个UILabel的子类,重写的他的drawRect方法,在上下文中画一条虚线。这个Label中就有一条...
    oo追xx阅读 1,486评论 0 2
  • ```CAShapeLayer *shapeLayer = [CAShapeLayer layer];shapeL...
    烟影很美阅读 1,798评论 2 3
  • 我自认为自己是一个很爱狗的人,而且也已经很努力的保护他们了,可不知为何,我养过的每一只狗陪伴我都没有超过五年。 我...
    小白柳阅读 513评论 10 1
  • 朋友说人一定要在年轻的时候疯狂一次,这才算成功的人生。我大概是一个很失败的人,每天按部就班的生活,工作,没有一点波...
    拾万阅读 177评论 0 0