El programa permite diseñar en modo WYSIWYG conectándose directamente al dispositivo o al emulador y en la resolución que deseemos. Sólo le encontré un par de pegas:
- No genera los ficheros xml standard sino ficheros bal que deben ser leidos por una clase Java especialmente diseñada para ello que se incluye al comprarlo. Además dichos ficheros deben colocarse en la carpeta /Assets, no en /Resources/Layout.
- Los layouts con muchos componentes (más de 10) pueden tener un tiempo de carga apreciable.
Aún así es muy recomendable y puede ahorrarnos mucho tiempo en pruebas.
Como usar los layouts generados por Designer4android con C#
Explico aquí los preparativos para usar los layouts .bal en el entorno C# de MonoDroid corriendo en VS2010.
Necesitamos poder acceder al constructor de la clase Designer4android, a la función LoadLayout y a la interface Anywheresoftware.D4a.IOnLayoutLoadedListener. Al estar la clase codificada en Java debemos primero generar una dll para .Net:
- Creamos un nuevo proyecto Android - Java Bindings Library.
- Importamos designer4android_1_01.jar a la carpeta /jars.
- Modificamos Build Action en Propiedades a InputJar y compilamos.
- Aparecerán varios warning que pueden ser ignorados. Ya tenemos nuestra librería Designer4android.dll compilada para funcionar en .Net y nos dirigimos a nuestro proyecto.
- Tomamos el fichero compilado en /bin/Debug (o /Release según se haya compilado) y lo copiamos a la raíz de nuestro proyecto. La propiedad Build Action debe ser AndroidJavaLibrary.
- Seleccionamos la carpeta Referencias y elegimos Proyecto - Agregar Referencia. En la pestaña Examinar buscamos la dll generada y aceptamos. Ya estamos listos para usar los layouts.
Y en nuestro software:
using Anywheresoftware.D4a; // Extendemos la actividad con la interface D4a public class MainClass : Activity, Anywheresoftware.D4a.IOnLayoutLoadedListener; { Designer4android d4a; ViewGroup vg; protected override void OnCreate(Bundle bundle) { base.OnCreate(bundle); // Cargamos nuestro layout con lo que se activa el listener Designer4android d4a = new Designer4android("archivo.bal"); vg = d4a.LoadLayout(this, this); // Nos olvidamos de SetContentView(Resource.Layout.Main) ...} ... // El listener permite comprobar que el layout se cargó correctamente // y a continuación cargamos los componentes diseñados con GetView void Anywheresoftware.D4a.IOnLayoutLoadedListener.OnLayoutLoaded(Anywheresoftware.D4a.Designer4android ds, bool ok, Java.Lang.Exception e) { if (!ok) { // Error de carga del archivo .bal Finish(); return; } // Sino cargamos las vistas del layout ImageView image = (ImageView)ds.GetView("ImageViewLogo"); ListView lista = (ListView)ds.GetView("ListViewActive"); ...} ...}
Enlaces: Designer4android
No hay comentarios:
Publicar un comentario