java android android-layout netbeans-7 android-xml

java - ¿Diseño dinámico vs XML en Android?



android-layout netbeans-7 (6)

Bueno, declaro mu UI en xml (99% de las veces), ya que es más fácil para mí trabajar de esa manera.

Es una buena práctica separar la IU y la lógica del código, XML es más fácil para describir la IU (considere usar este antiguo diseñador o cambie a Eclipse IDE y su diseñador)

Además, una aplicación de Android puede tener múltiples diseños (para teléfonos y tabletas) y será difícil codificarla a mano en Java

Simplemente, usa XML

Soy nuevo en el desarrollo de Android y he comenzado a crear mi propia interfaz de usuario. Veo que puede crearlo dinámicamente algo como esto ( diseños dinámicos ):

@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ScrollView sv = new ScrollView(this); LinearLayout ll = new LinearLayout(this); ll.setOrientation(LinearLayout.VERTICAL); sv.addView(ll); TextView tv = new TextView(this); tv.setText("Name"); ll.addView(tv); EditText et = new EditText(this); ll.addView(et); Button b = new Button(this); b.setText("Ok"); ll.addView(b); }

pero también veo que netbeans tiene un archivo Resources-> layout-> main.xml . Para que pueda crear un diseño XML para la interfaz de usuario ( Declaración de diseño XML ):

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Hello World, AndroidTest" /> </LinearLayout>

Entonces mi pregunta es, ¿qué debería usar? ¿Qué se recomienda y cuáles son los pros / contras de los diseños dinámicos vs XML en el desarrollo de Android?


El diseño basado en XML depende de la conversión, ya que debe usar:

Button myButton = (Button) findViewById(R.id.my_button);

por lo que tiene una búsqueda XML de fundición y consume mucho tiempo. Cuando utiliza la creación dinámica de una interfaz de usuario es mucho más difícil de gestionar. Tienes que organizar todo, pero no necesitas lanzar tanto.

Prefiero la tercera solución: RoboGuice. Utiliza el patrón de inyección de dependencia y no te importa el casting y es más rápido crear una aplicación. También más flexible. Considere que tiene un campo de texto normal. Entonces quieres cambiarlo a área de texto. En RoboGuice es solo cuestión de 2 cambios (excepto los cambios de uso). También es más rápido cuando se usa el contexto (el contexto es un objeto que consume mucha memoria y el almacenamiento de la referencia a él es un signo de mala codificación).

Entonces mi consejo es: usar XML debido a su simplicidad para administrar la IU. Usa RoboGuice para codificar rápido.


Es completamente tu propia elección. Probablemente la mayoría de los desarrolladores de Android usen XML para codificar sus diseños de su aplicación, ya que esto fue específicamente diseñado para esto. Sin embargo, yo personalmente procedo de un entorno de desarrollo de juegos y realmente no necesito los widgets de UI proporcionados por Android, así que cuando uso un widget de UI, simplemente lo codigo en java.

Espero que esto ayude.


Prefiero XML para la mayoría de las cosas, ya que te permite separar el contenido del código y tiende a ser más limpio para editar, especialmente cuando el proyecto se agranda y te olvidas de lo que escribiste hace un tiempo. El uso de XML y estilos te permitirá obtener una apariencia coherente en toda la aplicación también. También permite que el sistema de disposición se encargue del trabajo pesado y no obtendrá vistas que tengan una referencia al contexto de su actividad. (Lo cual es malo, cuando giras y tu actividad es recreada). En general, tiende a ser una opción más rápida y si puede hacerlo en XML de lo que me gusta. La mayoría de los archivos / libros de texto de Android parecen seguir esta configuración también. (Consulte Android Dev Docs, Mark Murphy de CommonsWare)

La dinámica tiene la ventaja de que es capaz de personalizar algunas cosas de formas más avanzadas y puede solucionar algunos problemas de diseño con bastante facilidad. Hay algunos beneficios adicionales además de eso, pero prefiero hacer todo en XML primero y si no se puede hacer o es difícil, entonces hazlo en código. Algunas cosas se pueden hacer en XML mucho más fácil que en el código también.


Utilice los archivos de recursos de diseño XML.

En primer lugar, los conjuntos de recursos (p. Ej., res/layout-land/ además de res/layout/ ) le permiten definir múltiples UI que se usarán en diferentes circunstancias, con el sistema eligiendo automáticamente el correcto según sea necesario. El equivalente en Java sería un desagradable conjunto de sentencias if o switch .

En segundo lugar, hay herramientas que pueden ayudarlo a crear esos recursos de diseño con éxito. Incluso si la construcción de GUI de arrastrar y soltar de Eclipse no es una taza de té (por ejemplo, está usando NetBeans), Lint ayudará a señalar fallas en sus diseños, por lo que solo señalará un subconjunto en el código Java equivalente.

En tercer lugar, tiende a ser más escueto, así que si estás escribiendo esto a mano, el XML tendrá menos tipeo.

En cuarto lugar, aproximadamente el 98% de todo el código de muestra que encontrará utilizará los archivos XML de diseño, y aproximadamente el 98% de todas las respuestas de UI que encuentre aquí en (y otros recursos de soporte) supondrán que utiliza archivos XML de diseño. Si bien puedes evitar XML (tal vez te atacaron con corchetes angulares como un niño pequeño o algo así), estarás nadando río arriba, luchando contra la corriente en comparación con lo que hacen la mayoría de los desarrolladores de Android.


Yo recomendaría usar diseños xml para la mayoría de las partes de sus proyectos. Puede poner los diseños en diferentes carpetas como:

layout-land -> para el paisaje

diseño-puerto -> para retrato

layout-v15 -> para la versión de Android> = 15

layout-sw600dp -> para pantallas con un cierto ancho

Al usar estos clasificadores de recursos puede tener rápidamente una gran variedad en sus diseños para admitir la amplia gama de dispositivos Android, sin tener que codificar mucho más.

En mi opinión, esa es la mayor ventaja de utilizar recursos xml vs crear todos los diseños dinámicamente. Para obtener más información, consulte este enlace sobre recursos