18
ESTRUCTURA DE UN PROYECTO ANDROID Antes de seguir trasteando con Android vamos a explicar la estructura de un proyecto en Android, es importa saber las carpetas que contiene y donde hay que guardar cada recurso. Al crear un proyecto nos encontramos con el siguiente árbol de directorios. /scr/ – Aquí encontraremos el código fuente de nuestra aplicación, Eclipse nos creará el código básico con un Activity relacionado con una pantalla. /gen/ Contiene los elementos que se generan al compilar el proyecto. Carpeta que contiene el código generado de forma automática por el

android (1)

Embed Size (px)

DESCRIPTION

android (1)

Citation preview

ESTRUCTURA DE UN PROYECTO ANDROIDAntes de seguir trasteando con Android vamos a explicar laestructura de un proyecto en Android, es importa saber las carpetas que contiene y donde hay que guardar cada recurso.Al crear un proyecto nos encontramos con el siguiente rbol de directorios.

/scr/ Aqu encontraremos el cdigo fuente de nuestra aplicacin, Eclipse nos crear el cdigo bsico con un Activity relacionado con una pantalla./gen/ Contiene los elementos que se generan al compilar el proyecto. Carpeta que contiene el cdigo generado de forma automtica por el SDK. No tenemos que modificar manualmente estos ficheros (BuildConfig.java, R.java)./assets/Se guardaran aquellos ficheros auxiliares que son necesarios en la aplicacin y por los que queremos acceder directamente por su ruta. En este caso no se genera un ID para los recursos guardados en esta carpeta. Es la carpeta donde ponemos otras carpetas y ficheros para ser utilizados por la aplicacin. Estos ficheros pueden ser de datos,HTML, fuentes/res/En esta carpeta se guardarn todos los recursos como imgenes, vdeos, ttulos, etc. Irn divididos de la siguiente manera:/res/drawable/ Contiene las imgenes de la aplicacin. Hdpi, ldpi,mdpi,xhdpi y xxhdphi hacen referencia a la definicin de las imgenes, segn la resolucin del dispositivo donde se ejecute la aplicacin se utilizar la imagen adecuada./res/layout/ En esta carpeta se guardan los xml que forman las pantallas. Esta es la parte grfica con la que el usuario interacta con la aplicacin, se puede dividir tambin en layout y layout-land para diferenciar entre la orientacin vertical u horizontal en la que se encuentre el dispositivo cuando el usuario lo est utilizando. Para poder ejecutarlas las tendremos que llamar desde otro fichero./res/men/ - En esta carpeta definiremos los mens de navegacin./res/values/ Aqu se guardarn cadenas de texto (string.xml), colores (colores.xml), estilos (styles.xml) y otros valores, sera como un sitio donde podemos definir valores y a los que podemos acceder desde cualquier otra parte del cdigo.anim: Contiene los ficheros .xml que nos van a permitir realizar animaciones Tween.animador: Contiene ficheros .xml con animaciones de propiedades.xml: Otros ficheros .xml requeridos por la aplicacin.raw: Donde pondremos ficheros adicionales que no se encuentran en formato .xml.AndroidManifest.xml: Es el fichero donde se describe la aplicacin Android. En l es donde se indican las actividades, las intenciones, los servicios y proveedores de contenido de nuestra aplicacin. As mismo, es donde indicamos tanto la versin mnima de Android para poder ejecutarla, los permisos que vamos a necesitar, el icono, la versin de la aplicacin,ic_launcher-web.png: Es el icono de la aplicacin que se utiliza en pginas Web. Es de mayor tamao (resolucin 512x512).proguard-project.txt: Fichero de configuracin de la herramientaProGuard, que te permite optimizar y ofuscar el cdigo generado. Es decir, se obtiene un .apk ms pequeo y donde resulta ms difcil hacer ingeniera inversa.default.properties: Fichero generado automticamente por el SDK. Nunca hay que modificarlo. Se utiliza para comprobar la versin del API y otras caractersticas cuando se instala la aplicacin en el terminal.

COMPONENTES DE UN PROYECTO ANDROIDCreado el proyecto de una aplicacin, ya hemos visto los elementos de que se compone el proyecto (carpetas y archivos). Ahora vamos a ver los componentes ms importantes que podemos utilizar en la aplicacin.Estos componentes son implementados por las clases java que se encuentran en la carpetasrc.Activity (Actividad)Nada ms arrancar la aplicacin nos aparece una pantalla con la que vamos a interactuar. Dicha pantalla es la que llamamos Actividad. El conjunto de actividades conforman la interfaz de usuario. Cada actividad es independiente entre s, y cada una pertenece a una clase descendiente deActivity.View (Vistas)Las actividades se componen de una serie de elementos que llamamos vistas. El conjunto de vistas forman las actividades, siendo los elementos bsicos de la interfaz de usuario. Las vistas pueden ser etiquetas, botones, entradas de texto,. A la hora de definir las vistas, se puede hacer de forma programtica utilizando cdigo Java, pues todas son objetos descendientes de la claseView; o bien, utilizando un fichero .xml donde indicamos los objetos que queremos que la aplicacin cree.LayoutCuando agrupamos de una determinada forma las vistas, formamos un conjunto de elementos al que llamamosLayout. Hay distintos tipos de Layouts, segn queramos distribuir los elementos en la pantalla. Son objetos que descienden de View y tambin los podemos definir en la clase correspondiente mediante cdigo, o bien utilizando archivos .xml (es lo ms utilizado).Service (Servicio)No necesita de la interaccin del usuario. Es como una sub-aplicacin que se ejecuta en segundo plano, que realiza una serie de tareas dependiendo de la activacin de determinados eventos externos, tales como la recepcin de un correo electrnico, una alarma,Intent (Intencin)Cuando queremos que en nuestra aplicacin se realice alguna accin, utilizamos lo que se llamaIntent. Los intent o intenciones, son lanzados para pasar a otra actividad, o para realizar una llamada telefnica,. Un intent es la forma en la que tiene Android de comunicarse entre los diferentes elementos de una aplicacin. Son los mensajes que son enviados entre las aplicaciones o entre los componentes de una misma aplicacin.

Broadcast receiver (Receptor de anuncios)Cuando se recibe un anuncio del tipobroadcast, como por ejemplo una llamada entrante o que tenemos que poner a cargar la batera, existe un receptor de estos anuncios que reacciona al escucharlos. No tiene una interfaz de usuario, pero puede dar inicio a una actividad cuando recibe el anuncio. Este componente se encarga de detectar y reaccionar a los eventos generales como pueden ser batera baja, entrada de llamada, Sms recibido Es decir es el encargado de recibir aquellos intent que son enviados a cualquier aplicacin que est escuchando

Content Provider (Proveedores de contenido)La lista de contactos de nuestra agenda de telfonos, es un proveedor de contenido. Es decir, el Content Provider es una de las formas de acceder a una base de datos de otras aplicaciones de nuestro telfono, y viceversa.Es la forma que tiene Android de compartir datos entre aplicaciones. Es una forma sencilla de compartir datos sin la necesidad de dar de detalles sobre su almacenamiento.WidgetElementos visuales que por regla general son interactivos con el usuario.

Interfaz de usuario en Android: Controles de seleccin (I)bySgoliveron07/09/2010inAndroid,ProgramacinUna vez repasados los controles bsicos (I,II,III) que podemos utilizar en nuestras aplicaciones Android, vamos a dedicar los prximos artculos a describir los diferentes controles de seleccin disponibles en la plataforma. Al igual que en otrosframeworksAndroid dispone de diversos controles que nos permiten seleccionar una opcin dentro de una lista de posibilidades. As, podremos utilizar por ejemplo listas desplegables (Spinner), listas fijas (ListView), o tablas (GridView).En este primer artculo dedicado a los controles de seleccin vamos a describir un elemento importante y comn a todos ellos, losadaptadores, y lo vamos a aplicar al primer control de los indicados, las listas desplegables.Adaptadores en Android (adapters)Para los desarrolladores de java que hayan utilizado frameworks de interfaz grfica comoSwing, el concepto deadaptadorles resultar familiar. Un adaptador representa algo as como una interfaz comn al modelo de datos que existe por detrs de todos los controles de seleccin que hemos comentado. Dicho de otra forma, todos los controles de seleccin accedern a los datos que contienen a travs de un adaptador.Adems de proveer de datos a los controles visuales, el adaptador tambin ser responsable de generar a partir de estos datos las vistas especficas que se mostrarn dentro del control de seleccin. Por ejemplo, si cada elemento de una lista estuviera formado a su vez por una imagen y varias etiquetas, el responsable de generar y establecer el contenido de todos estos sub-elementos a partir de los datos ser el propio adaptador.Android proporciona de serie varios tipos de adaptadores sencillos, aunque podemos extender su funcionalidad facilmente para adaptarlos a nuestras necesidades. Los ms comunes son los siguientes: ArrayAdapter. Es el ms sencillo de todos los adaptadores, y provee de datos a un control de seleccin a partir de un array de objetos de cualquier tipo. SimpleAdapter. Se utiliza para mapear datos sobre los diferentes controles definidos en un fichero XML de layout. SimpleCursorAdapter. Se utiliza para mapear las columnas de un cursor abierto sobre una base de datos sobre los diferentes elementos visuales contenidos en el control de seleccin.Para no complicar excesivamente los tutoriales, por ahora nos vamos a conformar con describir la forma de utilizar unArrayAdaptercon los diferentes controles de seleccin disponibles.Veamos cmo crear un adaptador de tipoArrayAdapterpara trabajar con un array genrico de java:123456final String[] datos =new String[]{"Elem1","Elem2","Elem3","Elem4","Elem5"};ArrayAdapter adaptador =new ArrayAdapter(this,android.R.layout.simple_spinner_item, datos);

Comentemos un poco el cdigo. Sobre la primera lnea no hay nada que decir, es tan slo la definicin del array java que contendr los datos a mostrar en el control, en este caso un array sencillo con cinco cadenas de caracteres. En la segunda lnea creamos el adaptador en s, al que pasamos 3 parmetros:1. Elcontexto, que normalmente ser simplemente una referencia a la actividad donde se crea el adaptador.2. El ID dellayoutsobre el que se mostrarn los datos del control. En este caso le pasamos el ID de un layout predefinido en Android (android.R.layout.simple_spinner_item), formado nicamente por un controlTextView, pero podramos pasarle el ID de cualquier layout personalizado de nuestro proyecto con cualquier estructura y conjunto de controles, ms adelante veremos cmo (en el apartado dedicado a las listas fijas).3. Elarrayque contiene los datos a mostrar.Con esto ya tendramos creado nuestro adaptador para los datos a mostrar y ya tan slo nos quedara asignar este adaptador a nuestro control de seleccin para que ste mostrase los datos en la aplicacin.Una alternativa a tener en cuenta si los datos a mostrar en el control son estticos sera definir la lista de posibles valores como un recurso de tipostring-array. Para ello, primero crearamos un nuevo fichero XML en la carpeta/res/valuesllamado por ejemplovalores_array.xmle incluiramos en l los valores seleccionables de la siguiente forma:12345678910

Elem1Elem2Elem3Elem4Elem5

Tras esto, a la hora de crear el adaptador, utilizaramos el mtodocreateFromResource()para hacer referencia a este array XML que acabamos de crear:1234ArrayAdapter adapter =ArrayAdapter.createFromResource(this,R.array.valores_array,android.R.layout.simple_spinner_item);

Control Spinner [API]Las listas desplegables en Android se llaman Spinner. Funcionan de forma similar a cualquier control de este tipo, el usuario selecciona la lista, se muestra una especie de lista emergente al usuario con todas las opciones disponibles y al seleccionarse una de ellas sta queda fijada en el control. Para aadir una lista de este tipo a nuestra aplicacin podemos utilizar el cdigo siguiente:123

Poco vamos a comentar de aqu ya que lo que nos interesan realmente son los datos a mostrar. En cualquier caso, las opciones para personalizar el aspecto visual del control (fondo, color y tamao de fuente, ) son las mismas ya comentadas para los controles bsicos.Para enlazar nuestro adaptador (y por tanto nuestros datos) a este control utilizaremos el siguiente cdigo java:12345678910private Spinner cmbOpciones;//...cmbOpciones = (Spinner)findViewById(R.id.CmbOpciones);adaptador.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);cmbOpciones.setAdapter(adaptador);

Comenzamos como siempre por obtener una referencia al control a travs de su ID. Y en la ltima lnea asignamos el adaptador al control mediante el mtodosetAdapter(). Y la segunda lnea para qu es? Cuando indicamos en el apartado anterior cmo construir un adaptador vimos cmo uno de los parmetros que le pasbamos era el ID del layout que utilizaramos para visualizar los elementos del control. Sin embargo, en el caso del controlSpinner, este layout tan slo se aplicar al elemento seleccionado en la lista, es decir, al que se muestra directamente sobre el propio control cuando no est desplegado. Sin embargo, antes indicamos que el funcionamiento normal del controlSpinnerincluye entre otras cosas mostrar una lista emergente con todas las opciones disponibles. Pues bien, para personalizar tambin el aspecto de cada elemento en dicha lista emergente tenemos el mtodosetDropDownViewResource(ID_layout), al que podemos pasar otro ID de layout distinto al primero sobre el que se mostrarn los elementos de la lista emergente. En este caso hemos utilizado otro layout predefinido an Android para las listas desplegables (android.R.layout.simple_spinner_dropdown_item), formado por una etiqueta de texto con la descripcin de la opcin (en Android 2.x tambin se muestra un marcador circular a la derecha que indica si la opcin est o no seleccionada).Con estas simples lineas de cdigo conseguiremos mostrar un control como el que vemos en la siguiente imagen:

En cuanto a los eventos lanzados por el controlSpinner, el ms comunmente utilizado ser el generado al seleccionarse una opcin de la lista desplegable,onItemSelected. Para capturar este evento se proceder de forma similar a lo ya visto para otros controles anteriormente, asignadole su controlador mediante el mtodosetOnItemSelectedListener():123456789101112cmbOpciones.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {public void onItemSelected(AdapterView parent,android.view.View v, int position, long id) {lblMensaje.setText("Seleccionado: " +parent.getItemAtPosition(position));}public void onNothingSelected(AdapterView parent) {lblMensaje.setText("");}});

A diferencia de ocasiones anteriores, para este evento definimos dos mtodos, el primero de ellos (onItemSelected) que ser llamado cada vez que se selecciones una opcin en la lista desplegable, y el segundo (onNothingSelected) que se llamar cuando no haya ninguna opcin seleccionada (esto puede ocurrir por ejemplo si el adaptador no tiene datos).Adems, vemos cmo para recuperar el dato seleccionado utilizamos el mtodogetItemAtPosition()del parmetroAdapterViewque recibimos en el evento.

Interfaz de usuario en Android: Controles bsicos (II)bySgoliveron26/08/2010inAndroid,ProgramacinDespus de haber hablado en elartculo anteriorde los controles de tipo botn, en esta nueva entrega nos vamos a centrar en otros tres componentes bsicos imprescindibles en nuestras aplicaciones: las imgenes (ImageView), las etiquetas (TextView) y por ltimo los cuadros de texto (EditText).Control ImageView[API]El controlImageViewpermite mostrar imgenes en la aplicacin. La propiedad ms interesante esandroid:src, que permite indicar la imagen a mostrar. Nuevamente, lo normal ser indicar como origen de la imagen el identificador de un recurso de nuestra carpeta/res/drawable, por ejemploandroid:src=@drawable/unaimagen. Adems de esta propiedad, existen algunas otras tiles en algunas ocasiones como las destinadas a establecer el tamao mximo que puede ocupar la imagen,android:maxWidthyandroid:maxHeight,o para indicar cmo debe adaptarse la imagen al tamao del control,android:scaleType(5=CENTER, 6=CENTER_CROP, 7=CENTER_INSIDE, ). Adems, como ya comentamos para el caso de los controlesImageButton, al tratarse de un control de tipo imagen deberamos establecer siempre la propiedadandroid:contentDescriptionpara ofrecer una breve descripcin textual de la imagen, algo que har nuestra aplicacin mucho ms accesible.12345

Si en vez de establecer la imagen a mostrar en el propio layout XML de la actividad quisiramos establecerla mediante cdigo utilizaramos el mtodosetImageResorce(), pasndole el ID del recurso a utilizar como contenido de la imagen.12ImageView img= (ImageView)findViewById(R.id.ImgFoto);img.setImageResource(R.drawable.ic_launcher);

En cuanto a posibles eventos,al igual que comentamos para los controles de tipo botn en el apartado anterior, para los componentesImageViewtambin podramos implementar su eventoonClick, de forma idntica a la que ya vimos, aunque en estos casos suele ser menos frecuente la necesidad de capturar este evento.Control TextView[API]El controlTextViewes otro de los clsicos en la programacin de GUIs, las etiquetas de texto, y se utiliza para mostrar un determinado texto al usuario. Al igual que en el caso de los botones, el texto del control se establece mediante la propiedadandroid:text. A parte de esta propiedad, la naturaleza del control hace que las ms interesantes sean las que establecen el formato del texto mostrado, que al igual que en el caso de los botones son las siguientes:android:background(color de fondo),android:textColor(color del texto),android:textSize(tamao de la fuente) yandroid:typeface(estilo del texto: negrita, cursiva, ).123456

La etiqueta tal cual se ha definido en el cdigo anterior tendra el siguiente aspecto:

De igual forma, tambin podemos manipular estas propiedades desde nuestro cdigo. Como ejemplo, en el siguiente fragmento recuperamos el texto de una etiqueta congetText(), y posteriormente le concatenamos unos nmeros, actualizamos su contenido mediantesetText()y le cambiamos su color de fondo consetBackgroundColor().12345final TextView lblEtiqueta = (TextView)findViewById(R.id.LblEtiqueta);String texto = lblEtiqueta.getText().toString();texto += "123";lblEtiqueta.setText(texto);lblEtiqueta.setBackgroundColor(Color.BLUE);

Control EditText[API]El controlEditTextes el componente de edicin de texto que proporciona la plataforma Android. Permite la introduccin y edicin de texto por parte del usuario, por lo que en tiempo de diseo la propiedad ms interesante a establecer, adems de su posicin/tamao y formato, es el texto a mostrar, atributoandroid:text.Por supuesto si no queremos que el cuadro de texto aparezca inicializado con ningn texto, no es necesario incluir esta propiedad en el layout XML. Lo que s deberemos establecer ser la propiedadandroid:inputType. Esta propiedad indica el tipo de contenido que se va a introducir en el cuadro de texto, como por ejemplo una direccin de correo electrnico (textEmailAddress), un nmero genrico (number), un nmero de telfono (phone), una direccin web (textUri), o un texto genrico (text). El valor que establezcamos para esta propiedad tendr adems efecto en el tipo de teclado que mostrar Android para editar dicho campo. As, por ejemplo, si hemos indicado text mostrar el teclado completo alfanumrico, si hemos indicado phone mostrar el teclado numrico del telfono, etc.1234

Al igual que ocurra con los botones, donde podamos indicar una imagen que acompaara al texto del mismo, con los controles de texto podemos hacer lo mismo. Las propiedadesdrawableLeftodrawableRightnos permite especificar una imagen, a izquierda o derecha, que permanecer fija en el cuadro de texto.Otra opcin adicional ser indicar un texto de ayuda o descripcin (hint), que aparecer en el cuadro de texto mientras el usuario no haya escrito nada (en cuanto se escribe algo este texto desaparece). Para esto utilizaremos las propiedadesandroid:hintpara indicar el texto yandroid:textColorHintpara indicar su color.Veamos un ejemplo utilizando las propiedades anteriores:1234567

Y su aspecto sera el siguiente:

Pararecuperar y establecer el desde nuestro cdigo podemos utilizar losmtodosgetText()ysetText(nuevoTexto)respectivamente:123EditText txtTexto = (EditText)findViewById(R.id.TxtBasico);String texto = txtTexto.getText().toString();txtTexto.setText("Hola mundo!");

Un detalle que puede haber pasado desapercibido. Os habis fijado en que hemos tenido que hacer untoString()sobre el resultado degetText()? La explicacin para esto es que el mtodogetText()no devuelve directamente una cadena de caracteres (String) sino un objeto de tipoEditable, que a su vez implementa la interfazSpannable. Y esto nos lleva a la caracterstica ms interesante del controlEditText, y es que no slo nos permite editartexto planosino tambintexto enriquecidoo con formato. Veamos cmo y qu opciones tenemos disponibles, y para empezar comentemos algunas cosas sobre los objetosSpannable.Interfaz SpannedUn objeto de tipoSpannedes algo as como una cadena de caracteres (de hecho deriva de la interfazCharSequence) en la que podemos insertar otros objetos a modo de marcas o etiquetas(spans) asociados a rangos de caracteres. De esta interfaz deriva la interfazSpannable, que permite la modificacin de estas marcas, y a su vez de sta ltima deriva la interfazEditable, que permite adems la modificacin del texto.Aunque en el apartado en el que nos encontramos nos interesaremos principalmente por las marcas de formato de texto, en principio podramos insertar cualquier tipo de objeto.Existen muchos tipos despanspredefinidos en la plataforma que podemos utilizar para dar formato al texto, entre ellos: TypefaceSpan. Modifica el tipo de fuente. StyleSpan. Modifica el estilo del texto (negrita, cursiva, ). ForegroudColorSpan. Modifica el color del texto. AbsoluteSizeSpan. Modifica el tamao de fuente.De esta forma, para crear un nuevo objetoEditablee insertar una marca de formato podramos hacer lo siguiente:12345//Creamos un nuevo objeto de tipo EditableEditable str = Editable.Factory.getInstance().newEditable("Esto es un simulacro.");//Marcamos cono fuente negrita la palabra "simulacro" (caracteres del 11-19)str.setSpan(new StyleSpan(android.graphics.Typeface.BOLD), 11, 19, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

En este ejemplo estamos insertando un span de tipoStyleSpanpara marcar un fragmento de texto con estilonegrita. Para insertarlo utilizamos el mtodosetSpan(), que recibe como parmetro el objetoSpana insertar, la posicin inicial y final del texto a marcar, y unflagque indica la forma en la que el span se podr extender al insertarse nuevo texto.Texto con formato en controles TextView y EditTextHemos visto cmo crear un objeto Editable y aadir marcas de formato al texto que contiene, pero todo esto no tendra ningn sentido si no pudiramos visualizarlo. Como ya podis imaginar, los controlesTextViewyEditTextnos van a permitir hacer esto. Veamos qu ocurre si asignamos a nuestro controlEditTextel objetoEditableque hemos creado antes:1txtTexto.setText(str);

Tras ejecutar este cdigo, para lo que hemos insertado un botn SetText en la aplicacin de ejemplo,veremos como efectivamente en el cuadro de texto aparece el mensaje con el formato esperado:

En la aplicacin de ejemplo tambin he incluido un botn adicional Negrita que se encargar de convertir a estilo negrita un fragmento de texto previamente seleccionado en el cuadro de texto. Mi intencin con esto es presentar los mtodos disponibles para determinar el comienzo y el fin de una seleccin en un control de este tipo. Para ello utilizaremos los mtodosgetSelectionStart()ygetSelectionEnd(), que nos devolvern el ndice del primer y ltimo carcter seleccionado en el texto. Sabiendo esto, ya slo nos queda utilizar el mtodosetSpan()que ya conocemos para convertir la seleccin a negrita.123456789Spannable texto = txtTexto.getText();int ini = txtTexto.getSelectionStart();int fin = txtTexto.getSelectionEnd();texto.setSpan(new StyleSpan(android.graphics.Typeface.BOLD),ini, fin,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

Bien, ya hemos visto cmo asignar texto con y sin formato a un cuadro de texto, pero qu ocurre a la hora de recuperar texto con formato desde el control? Ya vimos que la funcingetText()devuelve un objeto de tipoEditabley que sobre ste podamos hacer untoString(). Pero con esta solucin estamos perdiendo todo el formato del texto, por lo que no podramos por ejemplo salvarlo a una base de datos.La solucin a esto ltimo pasa obviamente por recuperar directamente el objetoEditabley serializarlo de algn modo, mejor an si es en un formato estandar. Pues bien, en Android este trabajo ya nos viene hecho de fbrica a travs de la claseHtml[API], que dispone de mtodos para convertir cualquier objetoSpanneden su representacin HTML equivalente. Veamos cmo. Recuperemos el texto de la ventana anterior y utilicemos el mtodoHtml.toHtml(Spannable)para convertirlo a formato HTML:12//Obtiene el texto del control con etiquetas de formato HTMLString aux2 = Html.toHtml(txtTexto.getText());

Haciendo esto, obtendramos una cadena de texto como la siguiente, que ya podramos por ejemplo almacenar en una base de datos o publicar en cualquier web sin perder el formato de texto establecido:1Esto es un simulacro.

La operacin contraria tambin es posible, es decir, cargar un cuadro de texto de Android (EditText) o una etiqueta (TextView) a partir de un fragmento de texto en formato HTML. Para ello podemos utilizar el mtodoHtml.fromHtml(String)de la siguiente forma:1234//Asigna texto con formato HTMLtxtTexto.setText(Html.fromHtml("Esto es un simulacro."),BufferType.SPANNABLE);

Desgraciadamente, aunque es de agradecer que este trabajo venga hecho de casa, hay que decir que tan slo funciona de forma completa con las opciones de formato ms bsicas, como negritas, cursivas, subrayado o colores de texto, quedando no soportadas otras sorprendentemente bsicas como el tamao del texto, que aunque s es correctamente traducido por el mtodotoHtml(), es descartado por el mtodo contrariofromHtml().