Android: AbsoluteLayout?
Soy nuevo en android. Me gusta tener el rango libre de objetos de dibujo donde quiera. Así que he estado usando el diseño absoluto. Recibo un mensaje diciendo que usar un diseño diferente. Y he leído que esto es debido a la diferente res de diferentes teléfonos. Mi pregunta es, ¿es esta la única razón para no usar Absolute Layout? He hecho un método que utiliza métricas para ajustar los píxeles.
public int widthRatio(double ratioIn){ DisplayMetrics dm = new DisplayMetrics(); //gets screen properties getWindowManager().getDefaultDisplay().getMetrics(dm); double screenWidth = dm.widthPixels; //gets screen height double ratio = screenWidth/100; //gets the ratio in terms of % int displayWidth = (int)(ratio*ratioIn); //multiplies ratio desired % of screen return displayWidth; } //method to get height or Ypos that is a one size fits all public int heightRatio(double ratioIn){ DisplayMetrics dm = new DisplayMetrics(); //gets screen properties getWindowManager().getDefaultDisplay().getMetrics(dm); double screenHeight = dm.heightPixels; //gets screen height double ratio = screenHeight/100; //gets the ratio in terms of % int newHeight = (int)(ratio*ratioIn); //multiplies ratio by desired % of screen return newHeight; } //sets size of any view (button, text, ...) to a one size fits all screens public void setSizeByRatio(View object, int width, int height){ LayoutParams params = object.getLayoutParams(); params.width = widthRatio(width); params.height = heightRatio(height); }
Así que si digo setSizeByRatio (Button, 10, 25); Establecerá el ancho de los botones al 10% del ancho de la pantalla y la altura al 25% por ciento de la pantalla.
- ¿Cómo puedo centralizar y dejar el texto justificación en EditText?
- ¿Cómo desplazar un diseño desplazable en el Android Studio?
- Los atributos de estilo no funcionan en las etiquetas de combinación
- Distribución relativa No está por debajo de lo definido
- Tamaño del mapa de bits de Android Widget
¿Hay teléfonos en los que Absolute Layouts no funcionan? ¿Este diseño causa otros problemas?
- Cómo encontrar la lista de View (s) que tiene una etiqueta específica (atributo)
- ¿Cómo hacer que el estilo personalizado de tema de ventanaBackground funcione en todos los dispositivos Android?
- ¿Es Android requestLayout () derecho para la animación de diseño?
- Cómo construir y mostrar la información en simple_list_item_2?
- Tamaño del botón relativo al tamaño del padre en el diseño XML?
- Cualquier manera fácil y genérica en Android para obtener la raíz Vista de un diseño?
- Trabajar con modo retrato y paisaje de forma programática en android
- Uso de estilos de fuente predeterminados en Android
La razón por la que AbsoluteLayout es obsoleta es porque tienes alternativas en LinearLayout o el GridLayout que hace lo mismo y más. Parece que usted está tratando de calcular posiciones basadas en posiciones absolutas y el número de píxeles, un enfoque que en general debe evitarse debido a problemas con tamaños y densidades de pantalla varoius.
Lea el enlace que @amiekuser proporcionó y enfóquese en la comprensión de cómo es la mejor práctica. Algunas sugerencias son la creación de imágenes para carpetas ldpi, mdpi y hdpi, utilizando la unidad para dpi (píxeles independientes de densidad) en lugar de píxeles crudos y cómo probar la aplicación en varios tamaños de pantalla y densidades utilizando el emulador.
Editar:
Para establecer las posiciones x e y de una vista debe utilizar LayoutParams. Vea esta pregunta sobre cómo configurar el TopMargin y LeftMargin para una vista usando LayoutParams.
Los teléfonos Android viene en muchos factores de forma, es decir, no sólo varía mucho en términos de tamaño de pantalla (2,7 ", 3,2", 3,7 "….), sino también en términos de resolución (480X800, 480X848 etc). Utilizar AbsoluteLayout. De hecho su desaprobado en las nuevas versiones de api.
El siguiente enlace explica todos estos detalles:
http://developer.android.com/guide/practices/screens_support.html
Consulte la sección de prácticas recomendadas.