android - una - Si se proporciona un recurso dibujable para ldpi, mdpi, hdpi, xhdpi, este dibujable no necesita proporcionarse para nodpi?
screen size android studio (3)
¿Entiendo esto correctamente?
Todos los dispositivos Android caen en uno de estos 4 cubos de densidad: ldpi, mdpi, hdpi, xhdpi.
Entonces, si se proporciona un recurso dibujable para cada una de estas densidades (existe un dibujable o con el mismo nombre en cada una de estas carpetas), entonces no es necesario proporcionar un dibujante con el mismo nombre en / res / dibujable o / res / drawable-nodpi.
¿Es comprensivo mi razonamiento?
Entonces, la única razón es por qué tiene sentido proporcionar el mismo recurso en / res / drawable, para que la aplicación sea más resistente al futuro, en caso de que se defina un nuevo cubo de densidad para el sistema operativo Android.
¿Es comprensivo mi razonamiento?
A través de este párrafo, eres más o menos correcto. Te vas un poco "fuera de los carriles" con tu próximo párrafo:
Entonces, la única razón es por qué tiene sentido proporcionar el mismo recurso en / res / drawable, para que la aplicación sea más resistente al futuro, en caso de que se defina un nuevo cubo de densidad para el sistema operativo Android.
Realmente no.
ShapeDrawable
recursos en res/drawable/
que son intrínsecamente escalables (por ejemplo, un ShapeDrawable
). res/drawable-nodpi/
recursos en res/drawable-nodpi/
que, por alguna razón, no desea que se ajuste la escala para que coincida con la densidad del dispositivo.
Si Android inventa una nueva cubeta de densidad (por ejemplo, -uhdpi
para una densidad ultra alta de -uhdpi
), Android probablemente hará lo que hace hoy si omite una cubeta de densidad: escale una de sus otras ediciones. Por ejemplo, si tiene -xhdpi
y no tiene -hdpi
, Android tomará una muestra de la imagen -xhdpi
para usarla en un dispositivo -hdpi
.
Esto es correcto, siempre y cuando tenga dibujables en los 4 cubos de densidad, está cubierto. Una práctica común es hacer un dibujo personalizable en / res / dibujable que se refiere a la densidad que se extiende a los elementos dibujables.
Por ejemplo, es posible que desee un botón con diferentes estados para presionar y sin presionar. Primero, incluiría un dibujo de cada densidad para un botón presionado y sin presionar. Luego, puede crear el siguiente button_black_selector.xml en / res / drawables:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="false"
android:drawable="@drawable/button_black"/>
<item android:state_pressed="true"
android:drawable="@drawable/button_black_selected" />
</selector>
Si su recurso se agrega para las cuatro densidades, entonces está en lo cierto de que no tiene que agregar el dibujable a la carpeta /res/drawable
. Sin embargo, ha adivinado correctamente que es mejor tener algo en la carpeta predeterminada en el caso si aparece un nuevo calificador. Por lo tanto, recomiendo colocar recursos mdpi no en la carpeta /res/drawable-mdpi
, sino en la carpeta predeterminada ( /res/drawable/
). Es una buena práctica para todo tipo de recursos.
En cuanto a la carpeta /res/drawable-nodpi
, es una carpeta especial, porque se supone que contiene recursos que no se escalan automáticamente a diferencia de todos los demás calificadores. Por lo tanto, normalmente usa solo la carpeta /res/drawable-nodpi
, o no la usa en absoluto.