Пунктирная линия на самом деле не пунктирна, когда приложение работает на реальном устройстве 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.

Его документируется здесь: 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); 

Справка