studio soporte programacion para pantallas móviles multiples medidas layouts diseñar diferentes desarrollo curso app aplicaciones android screen-size text-size

soporte - programacion android pdf 2018



Tamaño del texto y diferentes tamaños de pantalla de Android (9)

@forcelain Creo que debe verificar este PDF de Google IO para Diseño . En ese pdf, vaya a la página No: 77 en la que encontrará cómo sugerir el uso de dimens.xml para diferentes dispositivos de Android, por ejemplo, consulte la estructura siguiente:

res/values/dimens.xml res/values-small/dimens.xml res/values-normal/dimens.xml res/values-large/dimens.xml res/values-xlarge/dimens.xml

por ejemplo, ha utilizado a continuación dimens.xml en valores.

<?xml version="1.0" encoding="utf-8"?> <resources> <dimen name="text_size">18sp</dimen> </resources>

En la carpeta de otros valores, debe cambiar los valores para el tamaño del texto.

Nota: Según lo indicado por @espinchi, las versiones pequeña, normal, grande y xlarge han quedado obsoletas desde Android 3.2 a favor de lo siguiente:

Declarando diseños de tableta para Android 3.2

Para la primera generación de tabletas que ejecutan Android 3.0, la forma correcta de declarar diseños de tabletas era ponerlas en un directorio con el calificador de configuración xlarge (por ejemplo, res / layout-xlarge /). Para acomodar otros tipos de tabletas y tamaños de pantalla, en particular, tabletas de 7 ", Android 3.2 presenta una nueva forma de especificar recursos para tamaños de pantalla más discretos. La nueva técnica se basa en la cantidad de espacio que necesita su diseño (como 600dp de ancho), en lugar de tratar de hacer que su diseño se ajuste a los grupos de tamaños generalizados (como grande o xlarge).

El motivo por el que diseñar tabletas de 7 "es complicado cuando se usan grupos de tamaños generalizados es que una tableta de 7" está técnicamente en el mismo grupo que un auricular de 5 "(el grupo grande) .Sin embargo, estos dos dispositivos están aparentemente uno cerca del otro , la cantidad de espacio para la IU de una aplicación es significativamente diferente, al igual que el estilo de interacción del usuario. Por lo tanto, una pantalla de 7 "y 5" no siempre debe usar el mismo diseño. Para que sea posible proporcionar diferentes diseños para estos dos tipos de pantallas, Android ahora le permite especificar sus recursos de diseño en función del ancho y / o alto que está realmente disponible para el diseño de su aplicación, especificado en unidades dp.

Por ejemplo, una vez que haya diseñado el diseño que desea usar para los dispositivos estilo tableta, puede determinar que el diseño deje de funcionar bien cuando la pantalla tenga menos de 600dp de ancho. Por lo tanto, este umbral se convierte en el tamaño mínimo que necesita para el diseño de su tableta. Como tal, ahora puede especificar que estos recursos de diseño se deben usar solo cuando haya al menos 600 pb de ancho disponible para la IU de su aplicación.

Debe elegir un ancho y un diseño como su tamaño mínimo o probar cuál es el ancho más pequeño que admite su diseño una vez que esté completo.

Nota: Recuerde que todas las figuras utilizadas con estas nuevas API de tamaño son valores de píxeles independientes de la densidad (dp) y sus dimensiones de diseño también deben definirse siempre utilizando unidades dp, porque lo que más le importa es la cantidad de espacio de pantalla disponible después del sistema cuentas para densidad de pantalla (en contraposición a usar resolución de píxel en bruto). Para obtener más información sobre los píxeles independientes de la densidad, lea Términos y conceptos, anteriormente en este documento. Usar nuevos calificadores de tamaño

Las diferentes configuraciones de recursos que puede especificar en función del espacio disponible para su diseño se resumen en la tabla 2. Estos nuevos calificadores le ofrecen más control sobre los tamaños de pantalla específicos que admite su aplicación, en comparación con los grupos de tamaño de pantalla tradicionales (pequeños, normales, grande, y xlarge).

Nota: Los tamaños que especifique utilizando estos calificadores no son los tamaños de pantalla reales. Por el contrario, los tamaños son para el ancho o alto en unidades dp que están disponibles para la ventana de su actividad. El sistema Android puede usar parte de la pantalla para la interfaz de usuario del sistema (como la barra del sistema en la parte inferior de la pantalla o la barra de estado en la parte superior), por lo que parte de la pantalla podría no estar disponible para su diseño. Por lo tanto, los tamaños que declare deben ser específicamente sobre los tamaños que necesita su actividad: el sistema da cuenta de cualquier espacio utilizado por la interfaz de usuario del sistema al declarar cuánto espacio proporciona para su diseño. También tenga en cuenta que Action Bar se considera una parte del espacio de la ventana de su aplicación, aunque su diseño no lo declara, por lo que reduce el espacio disponible para su diseño y debe tenerlo en cuenta en su diseño.

Tabla 2. Nuevos calificadores de configuración para el tamaño de pantalla (introducido en Android 3.2). Configuración de pantalla Valores de calificador Descripción smallestWidth swdp

Ejemplos: sw600dp sw720dp

El tamaño fundamental de una pantalla, como lo indica la dimensión más corta del área de pantalla disponible. Específicamente, el ancho más pequeño del dispositivo es el más corto de la altura y ancho disponibles de la pantalla (también puede considerarlo como el "ancho más pequeño posible" para la pantalla). Puede usar este calificador para asegurarse de que, independientemente de la orientación actual de la pantalla, su aplicación tenga al menos dps de ancho disponible para su UI.

Por ejemplo, si su diseño requiere que su dimensión más pequeña del área de la pantalla sea al menos 600 dp en todo momento, entonces puede usar este calificador para crear los recursos de diseño, res / layout-sw600dp /. El sistema utilizará estos recursos solo cuando la dimensión más pequeña de la pantalla disponible sea al menos de 600 pb, independientemente de si el lado de 600 pd es el ancho o el alto percibido por el usuario. El ancho más pequeño es una característica de tamaño de pantalla fija del dispositivo; el ancho más pequeño del dispositivo no cambia cuando cambia la orientación de la pantalla.

El ancho más pequeño de un dispositivo tiene en cuenta las decoraciones de pantalla y la interfaz de usuario del sistema. Por ejemplo, si el dispositivo tiene algunos elementos UI persistentes en la pantalla que representan espacio a lo largo del eje del ancho más pequeño, el sistema declara que el ancho más pequeño es más pequeño que el tamaño de pantalla real, porque esos son píxeles de pantalla no disponibles para su UI.

Esta es una alternativa a los calificadores de tamaño de pantalla generalizada (pequeño, normal, grande, xlarge) que le permite definir un número discreto para el tamaño efectivo disponible para su UI. Usar smallestWidth para determinar el tamaño general de la pantalla es útil porque el ancho suele ser el factor determinante en el diseño de un diseño. Una IU a menudo se desplazará verticalmente, pero tendrá restricciones bastante duras en el espacio mínimo que necesita horizontalmente. El ancho disponible también es el factor clave para determinar si se debe usar un diseño de un panel para teléfonos o diseño de paneles múltiples para tabletas. Por lo tanto, es probable que le importe cuál será el ancho más pequeño posible en cada dispositivo. Ancho de pantalla disponible wdp

Ejemplos: w720dp w1024dp

Especifica un ancho mínimo disponible en unidades dp en el que se deben usar los recursos, definido por el valor. El valor correspondiente del sistema para el ancho cambia cuando la orientación de la pantalla cambia entre horizontal y vertical para reflejar el ancho real actual que está disponible para su UI.

A menudo, esto es útil para determinar si se usa un diseño de paneles múltiples, porque incluso en un dispositivo de tableta, a menudo no querrá el mismo diseño de paneles múltiples para la orientación vertical como lo hace para el paisaje. Por lo tanto, puede usar esto para especificar el ancho mínimo requerido para el diseño, en lugar de usar juntos el tamaño de la pantalla y los calificadores de orientación. Altura de pantalla disponible hdp

Ejemplos: h720dp h1024dp etc.

Especifica una altura de pantalla mínima en unidades dp en la que se deben usar los recursos, definida por el valor. El valor correspondiente del sistema para la altura cambia cuando la orientación de la pantalla cambia entre horizontal y vertical para reflejar la altura real actual que está disponible para su UI.

Usar esto para definir la altura requerida por su diseño es útil de la misma manera que wdp es para definir el ancho requerido, en lugar de usar tanto el tamaño de la pantalla como los calificadores de orientación. Sin embargo, la mayoría de las aplicaciones no necesitarán este calificador, teniendo en cuenta que las IU a menudo se desplazan verticalmente y, por lo tanto, son más flexibles con la cantidad de altura disponible, mientras que el ancho es más rígido.

Si bien el uso de estos calificadores puede parecer más complicado que usar grupos de tamaño de pantalla, en realidad debería ser más simple una vez que determine los requisitos para su UI. Cuando diseña su interfaz de usuario, lo más importante que probablemente le interese es el tamaño real en el que su aplicación cambia entre una interfaz de usuario estilo auricular y una interfaz de usuario estilo tableta que usa varios paneles. El punto exacto de este cambio dependerá de su diseño particular; tal vez necesite un ancho de 720 pb para el diseño de su tableta, tal vez 600 pb sea suficiente, o 480 pd, o algún número entre estos. Al usar estos calificadores en la tabla 2, usted tiene el control del tamaño preciso al que cambia su diseño.

Para obtener más información sobre estos calificadores de configuración de tamaño, consulte el documento Proporcionar recursos. Ejemplos de configuración

Para ayudarlo a orientar algunos de sus diseños para diferentes tipos de dispositivos, estos son algunos números para anchos de pantalla típicos:

320dp: a typical phone screen (240x320 ldpi, 320x480 mdpi, 480x800 hdpi, etc). 480dp: a tweener tablet like the Streak (480x800 mdpi). 600dp: a 7” tablet (600x1024 mdpi). 720dp: a 10” tablet (720x1280 mdpi, 800x1280 mdpi, etc).

Usando los calificadores de tamaño de la tabla 2, su aplicación puede cambiar entre sus diferentes recursos de diseño para teléfonos y tabletas usando cualquier número que desee para ancho y / o alto. Por ejemplo, si 600dp es el ancho disponible más pequeño compatible con el diseño de su tableta, puede proporcionar estos dos conjuntos de diseños:

res / layout / main_activity.xml # Para auriculares res / layout-sw600dp / main_activity.xml # Para tabletas

En este caso, el ancho más pequeño del espacio de pantalla disponible debe ser 600 pd para que se aplique el diseño de la tableta.

Para otros casos en los que desee personalizar aún más su interfaz de usuario para diferenciar entre tamaños como tabletas de 7 "y 10", puede definir diseños de ancho más pequeños adicionales:

res / layout / main_activity.xml # Para teléfonos (menos de 600dp de ancho disponible) res / layout-sw600dp / main_activity.xml # Para tablets de 7 "(600dp de ancho y más grande) res / layout-sw720dp / main_activity.xml

Para tabletas de 10 "(720dp de ancho y más grandes)

Observe que los dos conjuntos anteriores de recursos de ejemplo utilizan el calificador de "ancho más pequeño", swdp, que especifica el más pequeño de los dos lados de la pantalla, independientemente de la orientación actual del dispositivo. Por lo tanto, usar swdp es una manera simple de especificar el tamaño de pantalla general disponible para su diseño ignorando la orientación de la pantalla.

Sin embargo, en algunos casos, lo que podría ser importante para su diseño es exactamente cuánto ancho o alto hay actualmente disponible. Por ejemplo, si tiene un diseño de dos paneles con dos fragmentos uno al lado del otro, es posible que desee utilizarlo cada vez que la pantalla proporcione al menos 600 pb de ancho, independientemente de si el dispositivo está en orientación horizontal o vertical. En este caso, sus recursos podrían verse así:

res / layout / main_activity.xml # Para auriculares (menos de 600dp de ancho disponible) res / layout-w600dp / main_activity.xml # Multi-panel (cualquier pantalla con 600dp de ancho disponible o más)

Observe que el segundo conjunto usa el calificador de "ancho disponible", wdp. De esta forma, un dispositivo puede usar ambos diseños, dependiendo de la orientación de la pantalla (si el ancho disponible es de al menos 600dp en una orientación y menos de 600dp en la otra orientación).

Si la altura disponible le preocupa, entonces puede hacer lo mismo con el calificador hdp. O incluso combine los calificadores wdp y hdp si necesita ser realmente específico.

Lo sé, ya se discutió 1000 veces, pero no puedo ajustar el tamaño del texto para diferentes tamaños de pantalla. Intento usar ''sp'' como unidades de tamaño en mi estilo personalizado:

<style name="CustumButtonStyle" parent="@android:style/Widget.Button"> ... <item name="android:textSize">30sp</item> ... </style>

En 2.7 QVGA se ve bien:

2.7QVGA 30sp http://u.pikucha.ru/i8CRP/1.jpeg

Pero en 7in WSVGA se ve así:

7in WSVGA 30sp http://u.pikucha.ru/i8CRQ/2.jpeg

Intenté usar tanto ''sp'' como ''dp'' con el mismo resultado.

¿Podría explicar cómo hacer que estos botones se vean iguales en cualquier pantalla?

El estilo de botón personalizado completo

<style name="CustumButtonStyle" parent="@android:style/Widget.Button"> <item name="android:background">@drawable/custom_button</item> <item name="android:layout_width">fill_parent</item> <item name="android:layout_height">wrap_content</item> <item name="android:layout_margin">3dp</item> <item name="android:textColor">#ffffff</item> <item name="android:gravity">center</item> <item name="android:textSize">30sp</item> <item name="android:textStyle">bold</item> <item name="android:shadowColor">#000000</item> <item name="android:shadowDx">1</item> <item name="android:shadowDy">1</item> <item name="android:shadowRadius">2</item> </style>

Y en mi tema de aplicación tengo

<item name="android:buttonStyle">@style/CustumButtonStyle</item>

Y ahí está mi diseño:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/RelativeLayout1" android:layout_width="fill_parent" android:background="@drawable/grid" android:gravity="center" android:orientation="vertical" android:layout_height="fill_parent"> <Button android:id="@+id/buttonContinue" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:layout_gravity="center" android:gravity="center" android:text="@string/continue_game" android:layout_marginTop="3dp" android:layout_marginBottom="3dp"/> <Button android:id="@+id/buttonNewGame" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/buttonContinue" android:layout_alignRight="@+id/buttonContinue" android:layout_below="@+id/buttonContinue" android:layout_gravity="center" android:gravity="center" android:text="@string/new_game" android:layout_marginTop="3dp" android:layout_marginBottom="3dp"/> <Button android:id="@+id/ButtonAbout" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/buttonNewGame" android:layout_alignRight="@+id/buttonNewGame" android:layout_below="@+id/buttonNewGame" android:layout_gravity="center" android:gravity="center" android:text="@string/about" android:layout_marginTop="3dp" android:layout_marginBottom="3dp"/>


A veces, es mejor tener solo tres opciones

style="@android:style/TextAppearance.Small"

Use pequeñas y grandes para diferenciar del tamaño de pantalla normal.

<TextView android:id="@+id/TextViewTopBarTitle" android:layout_width="wrap_content" android:layout_height="wrap_content" style="@android:style/TextAppearance.Small"/>

Por normal, no tienes que especificar nada.

<TextView android:id="@+id/TextViewTopBarTitle" android:layout_width="wrap_content" android:layout_height="wrap_content"/>

Al usar esto, puede evitar las pruebas y especificar las dimensiones para diferentes tamaños de pantalla.



Creo que es demasiado tarde para responder en este hilo. Pero me gustaría compartir mi idea o forma de resolver el problema del tamaño del texto sobre los dispositivos de resolución de diferencias. Muchos sitios de desarrolladores de Android sugieren que tenemos que usar la unidad sp para tamaño de texto que manejará el tamaño del texto para dispositivos de resolución de diferencias. Pero siempre soy incapaz de obtener el resultado deseado. Así que he encontrado una solución que estoy usando de mis últimos 4-5 proyectos y está funcionando bien. Según mi sugerencia, debe colocar el tamaño de texto para cada dispositivo de resolución, lo cual es un trabajo un poco tedioso, pero cumplirá con sus requisitos. Cada desarrollador debe escuchar la relación como 4: 6: 8: 12 (h: xh: xxh: xxxh respectivamente) . Ahora dentro de la carpeta de res de proyecto debe crear 4 carpetas con archivo dimens por ejemplo

  1. res / values-hdpi / dimens.xml
  2. res / values-xhdpi / dimens.xml
  3. res / values-xxhdpi / dimens.xml
  4. res / values-xxxhdpi / dimens.xml

Ahora dentro del archivo dimens.xml debe colocar tamaños de texto. Le estoy mostrando el código para values-hdpi , de manera similar debe colocar el código para otros valores de resolución / dimens.xml.

<?xml version="1.0" encoding="utf-8"?> <resources> <dimen name="text_size">4px</dimen> </resources>

Para otras resoluciones, es como xhdpi : 6px, xxhdpi : 8px, xxxhdpi : 12px. Esto se calcula con la proporción (3: 4: 6: 8: 12) que he escrito arriba. Permite analizar otro ejemplo de tamaño de texto con la relación anterior. Si desea tomar un tamaño de texto de 12px en hdpi, entonces en otra resolución sería

  1. hdpi: 12px
  2. xhdpi: 18px
  3. xxhdpi: 24px
  4. xxxhdpi: 36px

Esta es la solución simple para implementar el tamaño de texto requerido para todas las resoluciones. No estoy considerando los dispositivos de resolución mdpi de valores aquí. Si alguien quiere incluir el tamaño del texto para esta resolución, la ración es como 3: 4: 6: 8: 12 . En cualquier consulta, házmelo saber. Espero que te ayude a la gente.


Creo que puede archivar eso agregando múltiples recursos de diseño para cada tamaño de pantalla, por ejemplo:

res/layout/my_layout.xml // layout for normal screen size ("default") res/layout-small/my_layout.xml // layout for small screen size with small text res/layout-large/my_layout.xml // layout for large screen size with larger text res/layout-xlarge/my_layout.xml // layout for extra large screen size with even larger text res/layout-xlarge-land/my_layout.xml // layout for extra large in landscape orientation

Referencia: 1. http://developer.android.com/guide/practices/screens_support.html


Hice lo mismo por dimensión y pinte algo así como (con dp pero solo para texto y en drawText ())

XML:

<dimen name="text_size">30sp</dimen>

Código:

Paint p =new Paint(); p.setTextSize(getResources().getDimension(R.dimen.text_Size));


No codifique los tamaños.

Para mayor flexibilidad y nuevas resoluciones de pantalla, la mejor práctica es colocar el TextView dummy en el diseño para obtener el tamaño del texto:

<TextView android:id="@+id/dummyTextView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:visibility="gone" android:text="TextView" />

Y en tu código, por ejemplo:

TextView testTextView = (TextView) rootView.findViewById(R.id.dummyTextView); float textSize = testTextView.getTextSize();

Mantenga textSize como referencia a la que puede agregar el tamaño constante o de porcentaje (calculando).


Para unificar todas las pantallas para mostrar los mismos tamaños de elementos, incluido el tamaño de fuente: - Diseñe la UI en un tamaño de pantalla con los tamaños que considere apropiados durante el diseño, es decir, el tamaño de fuente TextView es 14dp en tamaño de pantalla predeterminado con 4''6 pulgadas.

  • Calcula programáticamente el tamaño de la pantalla física de los otros teléfonos, es decir, 5''2 pulgadas de otros teléfonos / pantallas.

  • Use una fórmula para calcular la diferencia porcentual entre las 2 pantallas. es decir, cuál es la diferencia% entre 4''6 y 5''2.

  • Calcule la diferencia de píxeles entre los 2 TextViews en función de la fórmula anterior.

  • Obtenga el tamaño real (en píxeles) del tamaño de letra de TextView y aplique la diferencia de píxeles (calculada anteriormente) al tamaño de fuente predeterminado.

De esta forma, puede aplicar una relación de aspecto dinámica a todos los tamaños de pantalla y el resultado es excelente. Tendrás diseños y tamaños idénticos en cada pantalla.

Puede ser un poco complicado al principio, pero logra el objetivo una vez que calcula la fórmula. Con este método, no necesita hacer diseños múltiples solo para adaptarse a diferentes tamaños de pantalla.


Todos pueden usar la biblioteca de Android mencionada a continuación, que es la forma más fácil de hacer que los tamaños de texto sean compatibles con casi todas las pantallas de dispositivos. De hecho, se desarrolló sobre la base de los nuevos calificadores de configuración de Android para el tamaño de pantalla (introducido en Android 3.2) SmallestWidth swdp.

https://github.com/intuit/sdp