1.使用Drawable定义虚线或者矩形框
定义一个虚线--在drawable文件夹下创建一个xml文件,名为dash_line,类型为shape,内容为:
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="line">
<stroke
android:width="1px"
android:dashWidth="5dp" android:dashGap="3dp"
android:color="@color/bg_btn_gray_pre"/>
</shape>
定义一个虚线矩形框--在drawable文件夹下创建一个xml文件,名为bg_dash_storke,类型为shape,内容为:
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<stroke
android:width="1dp"
android:color="@color/bg_btn_gray_pre"
android:dashWidth="5dp"
android:dashGap="3dp"/>
</shape>
在布局文件中使用:两者都是作为view的背景使用:
<View
android:layout_width="match_parent"
android:layout_height="2dp"
android:layerType="software"
android:background="@drawable/dash_line"/>
<View
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_marginTop="30dp"
android:layerType="software"
android:background="@drawable/bg_dash_storke"/>
效果图:
蓝线是预览时系统的线,灰色的是定义出来的线。
其中width是线的高度,dashWidth是虚线中每个小的实线的宽度,dashGap是虚线的间隔宽度。定义这样的线简单的很。
2.关闭硬件加速
上面的确可以拿到想要的效果,预览正常。但是在运行起来后,发现虚线变成了实线,并不是预览效果中的虚线,原来是硬件加速的问题。Android从3.0以后支持2D图像绘制的硬件加速,但是在使用某些自定义view和Drawable资源时,硬件加速却会出现问题,明明预览效果都出来了,但是运行起来不管是在模拟器上还是在真机上都不会出现想要的效果。具体什么时候出问题说不清楚,有时候出现有时候不出现,但是出现问题时,我们就需要把硬件加速关闭。可以从三个方面来关闭:
1.在清单文件中的application标签下添加属性:
android:hardwareAccelerated="false"
2.一般都是因为某个view有问题,可以在清单文件中在该view所属的Activity标签下添加上面属性。
3.在布局xml文件中使用,给该view添加属性:
android:layerType="software"
layerTpye有三个属性:software、hardware、none,意思很明白,不多说,因为是硬件加速产生的问题,所以我们给其属性software即可。
以上三种方法,任意一种即可,不过还是最后一个比较好,因为一般不会有硬件加速导致这样的问题,所以如果产生了这样的问题,给产生问题的添加属性就可以了。