2011-02-18 8 views
14

Estoy trabajando para agregar compatibilidad para pantallas de tamaño tableta a mis aplicaciones. Ya tengo imágenes en drawable-mdpi y drawable-hdpi para diferentes pantallas de densidad. Mi problema es con tabletas como la Galaxy 7 "que es una pantalla" grande "pero aún es de densidad media. Parte de mi diseño tiene 5 botones en el ancho de la pantalla que están espaciados uniformemente. En la pantalla grande con gráficos mdpi aunque el las imágenes son muy pequeñas, con toneladas de espacios en blanco entre ellas.¿Cómo puedo alias un mapa de bits de Android a un dibujable de otro tamaño (drawable-large-mdpi aliases a drawable-hdpi)

Me gustaría usar gráficos más grandes para el diseño grande para que se vean apropiados, así como para aprovechar la pantalla de bienes raíces. Tengo algunos gráficos de doble tamaño en mi IPAP directorio que funcione a la perfección. como prueba, he copiado todas las imágenes desde/res/dibujable-IPAP en/res/dibujable a gran-MDPI y todo era exactamente como yo quiero.

Sin embargo, No quiero hinchar el tamaño de mi aplicación haciendo frente a todas esas imágenes. Me gustaría ju st crea alias para cada uno de ellos de modo que cuando se solicita/res/drawable-large-mdpi/button_0, en realidad use/res/drawable-hdpi/button_0.

He intentado crear un mapa de bits xml pero no sé cómo hacer referencia a un dibujable de un directorio específico. ¿Alguna ayuda?

Contenido de /res/drawable-large-mdpi/button_0.xml:

<?xml version="1.0" encoding="utf-8"?> 
<bitmap xmlns:android="http://schemas.android.com/apk/res/android" 
    android:src="@drawable-hdpi/button_0" /> 

El error que consigo con lo anterior es:

error: Error: No resource found that matches the given name (at 'src' with value '@drawable-hdpi/button_0_highlighted'). 
+0

Hola Kenny, ¿cómo resolviste ese problema ?????. Tengo el mismo [problema] (http://stackoverflow.com/questions/5839371/how-to-create-an-application-for-both- tablet-and-mobile) por favor ayúdenme – DroidBot

+0

Nunca podría hacer que el aliasing funcione. Solo tuve que copiar todas las imágenes en el directorio drawable-large-mdpi. –

Respuesta

2

this page habla de los diferentes modificadores que puedas usar en carpetas de recursos. Parece indicar que el orden de precedencia es tal que el tamaño de la pantalla (pequeño, med, grande, xlarge) es mayor que la densidad (ldpi, mdpi, hdpi). Creo que esto significa que si cambiaste el nombre de la carpeta drawables-hdpi a drawables-large-hdpi aunque la pestaña Galaxy tenga una densidad media, seguirá utilizando los archivos extraíbles de esta carpeta porque tiene una pantalla grande.

Editar: Acabo de probar esto, resuelve su problema de una manera. Las imágenes dentro de la carpeta drawables-large-hdpi se muestran en la pestaña Galaxy cuando se ejecuta la aplicación. Pero desafortunadamente, agregar el calificador grande lo hace para que no se muestre en pantallas de tamaño medio con densidades de hppi. Su parecer usted podría tener que hacer carpetas separadas y tienen 2 copias de sus grandes recursos si se desea conseguir esta funcionalidad = (.

+0

Esa es una idea interesante y sin duda lo tendré en cuenta para problemas futuros, pero definitivamente quiero encontrar una manera de aliar un directorio completo o los bosquejos individuales dentro del directorio a otro directorio con modificadores específicos. –

+0

Gracias por la actualización.Voy a darle un par de días para obtener otras respuestas, pero aceptaré esta si nadie más tiene la solución. –

+0

¿Estás seguro de que el Galaxy Tab se considera un dispositivo mdpi? Estoy jugando un poco con los recursos de una de las aplicaciones en las que estoy trabajando y de forma predeterminada está sacando sus herramientas de la carpeta drawable-hdpi. De acuerdo con la página de Wikipedia para la pestaña Galaxy tiene 260 dpi. Y de acuerdo con el cuadro en esta página: http://developer.android.com/guide/practices/screens_support.html hdpi comienza alrededor de 200 ppp. ¿Estás seguro de que tu galaxia está tomando imágenes de tu carpeta mdpi? – FoamyGuy

16

Mueve el recurso de botón en la carpeta drawable-nodpi y cambiarle el nombre a button_0_hdpi.xml.

<?xml version="1.0" encoding="utf-8"?> 
<bitmap xmlns:android="http://schemas.android.com/apk/res/android" 
    android:src="@drawable/button_0" /> 

Al usar un alias XML, no puede especificar el calificador. Tenía @ drawable-hdpi y debe ser simplemente @drawable. Probablemente también necesite crear un segundo alias XML en la ubicación original de su botón mapa de bits.

Aquí hay un buen artículo sobre el método http://blog.evendanan.net/2011/03/Android-resources-and-device-fragmentation

+0

Cuando tenga un momento libre, ¡intentaré esto! –

+0

Acabo de resolver esto yo mismo, vine aquí para buscar una mejor manera y aquí está lo mismo. Upvoted – Zulaxia

+0

IMO esta debería ser la respuesta aceptada, ya que considera lo que el OP preguntó: use alias para resolver el problema –

Cuestiones relacionadas