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.

¿Hay teléfonos en los que Absolute Layouts no funcionan? ¿Este diseño causa otros problemas?

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.

  • ¿Cómo quitar el borde detrás del botón?
  • Escala Android de imágenes a densidad de pantalla
  • ¿Cómo configurar layout_gravity mediante programación?
  • Cómo alinear un elemento a la derecha de su centro de padres? (Diseños de Android)
  • IllegalStateException: No se pudo encontrar el método insert (View) en un padre o antepasado Context class android.support.v7.widget.AppCompatButton
  • Establecer error en Android
  • Cambiar posición absoluta con FrameLayout
  • Vista del centro debajo de otra vista
  • Android: screenOrientation? ¿Puedes ir al paisaje sólo en dispositivos de alta resolución?
  • Android: cómo usar el color del estilo en XML de otro diseño
  • Cómo establecer el ancho de la ListView en un PopupWindow en Android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.