android android-drawable xml-drawable dotted-line

La línea de puntos en realidad no está salpicada cuando la aplicación se ejecuta en un dispositivo Android real



android-drawable xml-drawable (3)

Controlando la aceleración del hardware

Puede controlar la aceleración de hardware en los siguientes niveles:

  • Solicitud

  • Actividad

  • Ventana

  • Ver

Nivel de aplicación

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

Nivel de actividad

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

Nivel de ventana

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

Nivel de vista

myView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);

http://developer.android.com/guide/topics/graphics/hardware-accel.html

En mi aplicación utilizo una línea de puntos vertical definida por 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>

Cuando estoy seleccionando mi diseño en Android Studio, la línea se representa correctamente punteada, como debería, pero surge un problema cuando ejecuto la aplicación en un dispositivo real. La línea es sólida sin huecos. ¿Sabe dónde podría estar el problema? Probé muchos dispositivos diferentes, incluidos los que ejecutan Android 4.3. Se ve igual en todas partes: /


Encontré una misma solución pero en Ver atributos (xml):

<View android:layout_width="wrap_content" android:layout_height="4dp" ... android:layerType="software"/>

Supongo que es un nivel de Vista como se dijo anteriormente. Otras variantes para el atributo ("ninguno" y, por supuesto, "hardware") no funcionaron para mí.


Lo más probable es que esté relacionado con la aceleración de hardware: las líneas discontinuas no se admiten en el modo GL.

Se documenta aquí: https://code.google.com/p/android/issues/detail?id=29944

Apague su aceleración HW en su AndroidManifest.xml de esta manera:

android:hardwareAccelerated="false"

o:

myView.setLayerType(View.LAYER_TYPE_SOFTWARE, null)

Para obtener más información sobre cómo usar la primera solución: http://developer.android.com/guide/topics/graphics/hardware-accel.html