当应用程序在真实的Android设备上运行时,虚线实际上并不是虚线

在我的应用程序中,我使用XML定义的垂直虚线

<?xml version="1.0" encoding="utf-8"?> <rotate xmlns:android="http://schemas.android.com/apk/res/android" android:fromDegrees="90" android:toDegrees="90"> <shape android:shape="line"> <stroke android:width="1dp" android:color="@color/light_gray" android:dashWidth="2dp" android:dashGap="4dp" /> </shape> 

当我在Android Studio中挑选我的布局时,线条应该呈现为点状,但是在真实设备上运行应用程序时出现问题。 这条线是坚实的,没有缺口..你知道哪里可能是问题? 我尝试了很多不同的设备,包括那些运行最新的4.3 Android。它看起来无处不在:/

Solutions Collecting From Web of "当应用程序在真实的Android设备上运行时,虚线实际上并不是虚线"

这很可能与硬件加速有关:GL模式不支持虚线。

其logging在这里: https : //code.google.com/p/android/issues/detail?id=29944

在你的AndroidManifest.xml中closures你的硬件加速,如下所示:

 android:hardwareAccelerated="false" 

要么:

 myView.setLayerType(View.LAYER_TYPE_SOFTWARE, null) 

有关如何使用第一个解决scheme的更多信息: http : //developer.android.com/guide/topics/graphics/hardware-accel.html

控制硬件加速

您可以在以下级别控制硬件加速:

  • 应用

  • 活动

  • 窗口

  • 视图

应用级别

 <application android:hardwareAccelerated="true" ...> 

活动水平

 <application android:hardwareAccelerated="true"> <activity ... /> <activity android:hardwareAccelerated="false" /> </application> 

窗口级别

 getWindow().setFlags( WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED, WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED); 

查看级别

 myView.setLayerType(View.LAYER_TYPE_SOFTWARE, null); 

参考