Android usando márgenes a través de varios tamaños de pantalla

Hola He creado una aplicación que quiero ejecutar a través de múltiples pantallas i construido todo el asunto en HDPi. y cuando lo ejecuto en un teléfono androide más nuevo con una pantalla más grande la alineación de la materia está hacia fuera. Sé que esto es porque he fijado los márgenes para colocar cosas usando DP.

Mi pregunta es cuáles son las mejores prácticas para el uso de márgenes a través de múltiples tamaños de pantalla y / o hay algún código que puedo establecer que puede dividir / multiplicar el DP basado en el tamaño de la pantalla?

Estoy deseando obtener la aplicación a través de tantos dispositivos como sea posible. pero esta es mi primera aplicación, así que no estoy completamente seguro de cómo hacer esto. Así que cualquier ayuda sería muy apreciada.

heres un ejemplo de mi diseño

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="20dip" android:background="@drawable/bg_tablecell" android:orientation="horizontal" android:weightSum="1" > <TextView android:id="@+id/position" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_centerVertical="true" android:paddingLeft="4dip" android:text="@string/POS" android:textSize="15dip" android:textColor="@color/blue" /> <TextView android:id="@+id/TeamName" android:layout_width="90dip" android:layout_height="wrap_content" android:layout_marginLeft="23dip" android:ellipsize="end" android:gravity="left" android:lines="1" android:text="@string/Team" android:textColor="@color/blue" android:textSize="15dip" android:textStyle="bold" android:layout_centerVertical="true"/> <TextView android:id="@+id/played" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBaseline="@+id/TeamName" android:layout_alignBottom="@+id/TeamName" android:layout_marginLeft="35dip" android:layout_toRightOf="@+id/TeamName" android:gravity="center" android:text="@string/Zero" android:textColor="@color/blue" android:textSize="10dip" android:layout_centerVertical="true"/> <TextView android:id="@+id/won" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBaseline="@+id/played" android:layout_alignBottom="@+id/played" android:layout_marginLeft="17dip" android:layout_toRightOf="@+id/played" android:gravity="center" android:text="@string/Zero" android:textColor="@color/blue" android:textSize="10dip" android:layout_centerVertical="true"/> <TextView android:id="@+id/drawn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBaseline="@+id/won" android:layout_alignBottom="@+id/won" android:layout_marginLeft="16dip" android:layout_toRightOf="@+id/won" android:gravity="center" android:text="@string/Zero" android:textColor="@color/blue" android:textSize="10dip" android:layout_centerVertical="true"/> <TextView android:id="@+id/lost" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBaseline="@+id/drawn" android:layout_alignBottom="@+id/drawn" android:layout_marginLeft="16dip" android:layout_toRightOf="@+id/drawn" android:gravity="center" android:text="@string/Zero" android:textColor="@color/blue" android:textSize="10dip" android:layout_centerVertical="true"/> <TextView android:id="@+id/goalsFor" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBaseline="@+id/lost" android:layout_alignBottom="@+id/lost" android:layout_marginLeft="16dip" android:layout_toRightOf="@+id/lost" android:gravity="center" android:text="@string/Zero" android:textColor="@color/blue" android:textSize="10dip" android:layout_centerVertical="true"/> <TextView android:id="@+id/goalsAgainst" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBaseline="@+id/goalsFor" android:layout_alignBottom="@+id/goalsFor" android:layout_marginLeft="17dip" android:layout_toRightOf="@+id/goalsFor" android:gravity="center" android:text="@string/Zero" android:textColor="@color/blue" android:textSize="10dip" android:layout_centerVertical="true"/> <TextView android:id="@+id/Difference" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBaseline="@+id/goalsAgainst" android:layout_alignBottom="@+id/goalsAgainst" android:layout_marginLeft="15dip" android:layout_toRightOf="@+id/goalsAgainst" android:gravity="center" android:text="@string/Zero" android:textColor="@color/blue" android:textSize="10dip" android:layout_centerVertical="true"/> <TextView android:id="@+id/points" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBaseline="@+id/Difference" android:layout_alignBottom="@+id/Difference" android:layout_marginLeft="18dip" android:layout_toRightOf="@+id/Difference" android:gravity="center" android:text="@string/Zero" android:textColor="@color/blue" android:textSize="10dip" android:layout_centerVertical="true"/> 

pantallas hdpi

Hdpi

pantallas xhdpi

Xhdpi

Bueno, todo el punto de usar DP es para que usted no tiene que preocuparse por esto. Los márgenes serán más o menos los mismos en todos los dispositivos, pero si dependes de alinear las cosas en una combinación de resolución / densidad de dispositivo en particular, seguramente te sorprenderá cuando pruebes otros dispositivos.

Dicho esto, si necesita especificar márgenes diferentes para diferentes tamaños de pantalla, simplemente agregue un archivo XML en res/values – algo como dimens.xml :

 <resources xmlns:android="http://schemas.android.com/apk/res/android" > <dimen name="my_view_margin">10dip</dimen> </resources> 

A continuación, agregue uno de estos XML para cada calificador de dispositivo específico que necesite (por ejemplo, values-large , values-sw600dp , values-xlarge , etc.) y modifique el valor como mejor le parezca. Cuando desee utilizar estas dimensiones en un diseño, utilice:

 android:layout_margin="@dimen/my_view_margin" 

Y Android escogerá el valor correcto para cualquier dispositivo en el que se esté ejecutando.

  • Pantalla de grabación a video libgdx android
  • ¿Cómo obtengo la altura de la pantalla en Android?
  • Android WallpaperManager cosecha la imagen
  • Servicio de accesibilidad de Android en pantalla
  • Pantalla blanca después de Splash en android - ionic 2
  • Tamaños de imagen de Android
  • Cómo hacer widget de tamaño 4x1 en la pantalla de inicio de Android?
  • WallpaperManager amplía la imagen aunque la dimensión coincida con la pantalla
  • Establecer el fondo de la aplicación para que sea igual que el fondo de pantalla de inicio
  • ¿Cómo se puede averiguar qué relación de aspecto pertenece la pantalla del teléfono: WQVGA, WVGA, VGA, HVGA, etc?
  • Tamaños extraíbles de los androides cambia en la pantalla al leer la imagen del archivo
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.