hape能画直线,虚线,矩形,圆形等,当然也可以画虚线,刚开始弄了半天就是没有效果。不懈的翻阅博客,各种尝试,总算解决了这个问题。
1.XML中定义shape,命名为
<shape
android:shape="line"
xmlns:android="http://schemas.android.com/apk/res/android">
<stroke
android:width="@dimen/px_3"
android:dashGap="@dimen/px_9"
android:dashWidth="@dimen/px_18"
android:color="@color/color_e2"
/>
<size android:height="@dimen/px_6" />
</shape>
2.在View中使用
<View
android:layout_width="match_parent"
android:layout_height="@dimen/px_18"
android:background="@drawable/sha_dash_e2"/>
理论上来说,此时应该有虚线效果的,但实际情况并没有效果。有的说将View的高度设置为大于shape的高度,可以看xml,view的高度明显大于shape的高度。还有的说从android3.0开始,安卓关闭了硬件加速功能,所以就不能显示了,所以就是在 AndroidManifest.xml,或者是在activity中把硬件加速的功能关掉就可以了android:hardwareAccelerated=”false”或者是view.setLayerType(View.LAYER_TYPE_SOFTWARE, null);依然没有效果。
经过各种尝试,终于实现了虚线效果,先上代码:
<View
android:layout_width="match_parent"
android:layout_height="@dimen/px_18"
android:layerType="software"
android:background="@drawable/sha_dash_e2"/>
此时,强制view以软件方式绘制.用软件方式绘制当前view,避开硬件呈现管道限制的最简单的方式.
效果是实现了,但是还是得找出来自己的问题来,原来项目中,并没有使用硬件加速。如果你也有类似的问题,先查看项目中是否使用了硬件加速。如果使用了硬件加速依然没有效果,可以尝试此方法。