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

ссылка