Пунктирная линия на самом деле не пунктирная, когда приложение работает на реальном устройстве 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..он выглядит везде одинаково:/
2 ответов
это, скорее всего, связано с аппаратным ускорением: пунктирные линии не поддерживаются в режиме GL.
его документально здесь: https://code.google.com/p/android/issues/detail?id=29944
выключите HW-ускорение в вашем AndroidManifest.xml, как это:
android:hardwareAccelerated="false"
или:
myView.setLayerType(View.LAYER_TYPE_SOFTWARE, null)
для Больше информации как использовать сперва решение: 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);