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