<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>mobile development &#187; Tutoriales</title>
	<atom:link href="http://mobile.davidocs.com/category/tutoriales/feed/" rel="self" type="application/rss+xml" />
	<link>http://mobile.davidocs.com</link>
	<description>Building Android and iPhone applications from scratch</description>
	<lastBuildDate>Wed, 30 Sep 2009 08:54:01 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<image>
<link>http://mobile.davidocs.com</link>
<url>http://mobile.davidocs.com/wp-content/mbp-favicon/android-wallpaper4_1024x768.png</url>
<title>mobile development</title>
</image>
		<item>
		<title>Cómo instalar el teclado del HTC Hero en el HTC Magic</title>
		<link>http://mobile.davidocs.com/android/como-instalar-el-teclado-del-htc-hero-en-el-htc-magic/</link>
		<comments>http://mobile.davidocs.com/android/como-instalar-el-teclado-del-htc-hero-en-el-htc-magic/#comments</comments>
		<pubDate>Wed, 30 Sep 2009 08:54:01 +0000</pubDate>
		<dc:creator>David González</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[AppsInstaller]]></category>
		<category><![CDATA[HTC Hero]]></category>
		<category><![CDATA[Keyboard]]></category>

		<guid isPermaLink="false">http://mobile.davidocs.com/?p=234</guid>
		<description><![CDATA[Uno de los puntos más débiles que nos encontramos al utilizar el HTC Magic o el HTC Dream es el teclado. Podemos configurar mil cosas de nuestro teléfono pero el teclado queda algo por detrás del resto del sistema operativo.
Pues bien, ahora ya es posible sustituir el viejo teclado de Android por el nuevo utilizado [...]


Entradas relacionadas:<ol><li><a href='http://mobile.davidocs.com/android/como-anadir-iconos-a-un-listview-en-android/' rel='bookmark' title='Permanent Link: Cómo añadir iconos a un ListView en Android'>Cómo añadir iconos a un ListView en Android</a></li>
<li><a href='http://mobile.davidocs.com/android/primeros-pasos-con-android/' rel='bookmark' title='Permanent Link: Primeros pasos con Android'>Primeros pasos con Android</a></li>
<li><a href='http://mobile.davidocs.com/android/tratamiento-de-ficheros-xml-con-android/' rel='bookmark' title='Permanent Link: Tratamiento de ficheros XML con Android'>Tratamiento de ficheros XML con Android</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p class="dropcap-first">Uno de los puntos más débiles que nos encontramos al utilizar el HTC Magic o el HTC Dream es el teclado. Podemos configurar mil cosas de nuestro teléfono pero el teclado queda algo por detrás del resto del sistema operativo.</p>
<p>Pues bien, ahora ya es posible sustituir el viejo teclado de Android por el nuevo utilizado en el HTC Hero, en sencillos pasos podréis cambiarlo sin problemas.</p>
<p><img class="alignnone size-full wp-image-235" title="081209-0916-howtogetthe1" src="http://mobile.davidocs.com/wp-content/uploads/2009/09/081209-0916-howtogetthe1.png" alt="081209-0916-howtogetthe1" width="250" height="346" /><img class="alignnone size-full wp-image-236" title="081209-0916-howtogetthe2" src="http://mobile.davidocs.com/wp-content/uploads/2009/09/081209-0916-howtogetthe2.png" alt="081209-0916-howtogetthe2" width="250" height="348" /></p>
<p><span id="more-234"></span></p>
<p>Pasos a seguir:</p>
<p><img class="size-full wp-image-238  alignleft" title="chart" src="http://mobile.davidocs.com/wp-content/uploads/2009/09/chart.png" alt="chart" width="135" height="135" /></p>
<p><strong>1-</strong> Instala la aplicación <a href="http://www.androlib.com/android.application.com-mmg-appin-jpAw.aspx" target="_blank">AppsInstaller</a>.</p>
<p><strong>2-</strong> Descarga el fichero htc_ime.rar (link más abajo)</p>
<p><strong>3-</strong> Extrae el fichero del .zip y cópialo en la tarjeta microSD del teléfono.</p>
<p><strong>4-</strong> Ves a <em>Ajustes </em>&gt; <em>Aplicaciones </em>y marca la casilla <em>Origenes Desconocidos</em>.</p>
<p><strong>5-</strong> Ejecuta <em>AppsInstaller </em>y selecciona HTC_IME para instalarla.</p>
<p><strong>6-</strong> Desde <em>Ajustes </em>&gt; <em>Idioma y país</em> selecciona la casilla <em>Touch Input</em>.</p>
<p><strong>7-</strong> Abre el navegador y deja pulsado el campo de texto.</p>
<p><strong>8-</strong> Selecciona Touch Input en el menú emergente.</p>
<p>Ahora ya tienes el nuevo teclado del <strong>HTC Hero</strong>, para cambiar entre las 3 disposiciones de teclado aprieta el botón que parece un engranaje y te llevara a la pantalla de configuración.</p>
<p>Cualquier pregunta que tengas no dudes en comentarla.</p>
<p><table style="border: 1px solid #CCC;" cellpadding="3" width="100%">
  <tr>
    <td width="35">
      <img src="http://mobile.davidocs.com/wp-content/plugins/downloads-manager/img/icons/winrar.gif" alt="http://mobile.davidocs.com/wp-content/plugins/downloads-manager/img/icons/winrar.gif">
    </td>
    <td>
      <b>download:</b> <a href="http://mobile.davidocs.com/?file_id=6">htc_ime</a> <small>(3.93MB)</small><br />
      <b>added:</b> 30/09/2009 <br />
      <b>clicks:</b> 337 <br />
      <b>description:</b> Teclado del HTC Hero para instalar. <br />
    </td>
  </tr>
</table></p>
<p>Fuente: <a href="http://www.allshadow.com/2009/08/12/how-to-get-the-htc-hero-keyboard-android/" target="_blank">Allshadow</a></p>



Comparte:


	<a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fmobile.davidocs.com%2Fandroid%2Fcomo-instalar-el-teclado-del-htc-hero-en-el-htc-magic%2F&amp;t=C%C3%B3mo%20instalar%20el%20teclado%20del%20HTC%20Hero%20en%20el%20HTC%20Magic" title="Facebook"><img src="http://mobile.davidocs.com/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://bitacoras.com/anotaciones/http%3A%2F%2Fmobile.davidocs.com%2Fandroid%2Fcomo-instalar-el-teclado-del-htc-hero-en-el-htc-magic%2F" title="Bitacoras.com"><img src="http://mobile.davidocs.com/wp-content/plugins/sociable/images/bitacoras.png" title="Bitacoras.com" alt="Bitacoras.com" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://meneame.net/submit.php?url=http%3A%2F%2Fmobile.davidocs.com%2Fandroid%2Fcomo-instalar-el-teclado-del-htc-hero-en-el-htc-magic%2F" title="Meneame"><img src="http://mobile.davidocs.com/wp-content/plugins/sociable/images/meneame.png" title="Meneame" alt="Meneame" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.wikio.it/vote?url=http%3A%2F%2Fmobile.davidocs.com%2Fandroid%2Fcomo-instalar-el-teclado-del-htc-hero-en-el-htc-magic%2F" title="Wikio IT"><img src="http://mobile.davidocs.com/wp-content/plugins/sociable/images/wikio.png" title="Wikio IT" alt="Wikio IT" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fmobile.davidocs.com%2Fandroid%2Fcomo-instalar-el-teclado-del-htc-hero-en-el-htc-magic%2F&amp;title=C%C3%B3mo%20instalar%20el%20teclado%20del%20HTC%20Hero%20en%20el%20HTC%20Magic&amp;bodytext=Uno%20de%20los%20puntos%20m%C3%A1s%20d%C3%A9biles%20que%20nos%20encontramos%20al%20utilizar%20el%20HTC%20Magic%20o%20el%20HTC%20Dream%20es%20el%20teclado.%20Podemos%20configurar%20mil%20cosas%20de%20nuestro%20tel%C3%A9fono%20pero%20el%20teclado%20queda%20algo%20por%20detr%C3%A1s%20del%20resto%20del%20sistema%20operativo.%0D%0A%0D%0APues%20bien%2C%20ahora%20y" title="Digg"><img src="http://mobile.davidocs.com/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fmobile.davidocs.com%2Fandroid%2Fcomo-instalar-el-teclado-del-htc-hero-en-el-htc-magic%2F&amp;title=C%C3%B3mo%20instalar%20el%20teclado%20del%20HTC%20Hero%20en%20el%20HTC%20Magic&amp;notes=Uno%20de%20los%20puntos%20m%C3%A1s%20d%C3%A9biles%20que%20nos%20encontramos%20al%20utilizar%20el%20HTC%20Magic%20o%20el%20HTC%20Dream%20es%20el%20teclado.%20Podemos%20configurar%20mil%20cosas%20de%20nuestro%20tel%C3%A9fono%20pero%20el%20teclado%20queda%20algo%20por%20detr%C3%A1s%20del%20resto%20del%20sistema%20operativo.%0D%0A%0D%0APues%20bien%2C%20ahora%20y" title="del.icio.us"><img src="http://mobile.davidocs.com/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.friendfeed.com/share?title=C%C3%B3mo%20instalar%20el%20teclado%20del%20HTC%20Hero%20en%20el%20HTC%20Magic&amp;link=http%3A%2F%2Fmobile.davidocs.com%2Fandroid%2Fcomo-instalar-el-teclado-del-htc-hero-en-el-htc-magic%2F" title="FriendFeed"><img src="http://mobile.davidocs.com/wp-content/plugins/sociable/images/friendfeed.png" title="FriendFeed" alt="FriendFeed" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://news.ycombinator.com/submitlink?u=http%3A%2F%2Fmobile.davidocs.com%2Fandroid%2Fcomo-instalar-el-teclado-del-htc-hero-en-el-htc-magic%2F&amp;t=C%C3%B3mo%20instalar%20el%20teclado%20del%20HTC%20Hero%20en%20el%20HTC%20Magic" title="HackerNews"><img src="http://mobile.davidocs.com/wp-content/plugins/sociable/images/hackernews.png" title="HackerNews" alt="HackerNews" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://technorati.com/faves?add=http%3A%2F%2Fmobile.davidocs.com%2Fandroid%2Fcomo-instalar-el-teclado-del-htc-hero-en-el-htc-magic%2F" title="Technorati"><img src="http://mobile.davidocs.com/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a>


<br/><br/>

<p>Entradas relacionadas:<ol><li><a href='http://mobile.davidocs.com/android/como-anadir-iconos-a-un-listview-en-android/' rel='bookmark' title='Permanent Link: Cómo añadir iconos a un ListView en Android'>Cómo añadir iconos a un ListView en Android</a></li>
<li><a href='http://mobile.davidocs.com/android/primeros-pasos-con-android/' rel='bookmark' title='Permanent Link: Primeros pasos con Android'>Primeros pasos con Android</a></li>
<li><a href='http://mobile.davidocs.com/android/tratamiento-de-ficheros-xml-con-android/' rel='bookmark' title='Permanent Link: Tratamiento de ficheros XML con Android'>Tratamiento de ficheros XML con Android</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://mobile.davidocs.com/android/como-instalar-el-teclado-del-htc-hero-en-el-htc-magic/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Google Maps con Threads</title>
		<link>http://mobile.davidocs.com/android/google-maps-con-threads/</link>
		<comments>http://mobile.davidocs.com/android/google-maps-con-threads/#comments</comments>
		<pubDate>Mon, 28 Sep 2009 06:52:51 +0000</pubDate>
		<dc:creator>David González</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[threads]]></category>

		<guid isPermaLink="false">http://www.tech-xperience.com/mobiledev/?p=199</guid>
		<description><![CDATA[No cabe duda de que una de las grandas posibilidades que podemos aprovechar en un dispositivo Android es la geo-localización. Uno de los primeros pasos que podemos dar en este campo es la utilización de Google Maps.
Desde hace mucho tiempo Google Maps es sinónimo de geo-localización en Internet, gracias a la estupenda API de la [...]


Entradas relacionadas:<ol><li><a href='http://mobile.davidocs.com/android/como-anadir-iconos-a-un-listview-en-android/' rel='bookmark' title='Permanent Link: Cómo añadir iconos a un ListView en Android'>Cómo añadir iconos a un ListView en Android</a></li>
<li><a href='http://mobile.davidocs.com/android/disenando-la-aplicacion-uso-de-tabhost-en-android/' rel='bookmark' title='Permanent Link: Diseñando la aplicación, uso de TabHost en Android'>Diseñando la aplicación, uso de TabHost en Android</a></li>
<li><a href='http://mobile.davidocs.com/android/tratamiento-de-ficheros-xml-con-android/' rel='bookmark' title='Permanent Link: Tratamiento de ficheros XML con Android'>Tratamiento de ficheros XML con Android</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p class="dropcap-first">No cabe duda de que una de las grandas posibilidades que podemos aprovechar en un dispositivo Android es la geo-localización. Uno de los primeros pasos que podemos dar en este campo es la utilización de <strong>Google Maps</strong>.</p>
<p>Desde hace mucho tiempo Google Maps es sinónimo de geo-localización en Internet, gracias a la estupenda <strong>API</strong> de la que disponemos podemos hacer uso de sus funciones en nuestras aplicaciones Android.</p>
<p>A continuación desarrollaremos un primer ejemplo, en el que aprovecharemos para introducir el concepto de thread y cómo influyen en el funcionamiento de nuestra aplicación.</p>
<p><span style="color: #008000;"><strong><span style="font-size: medium;">¿Qué es esto?</span></strong></span></p>
<p>En éste tutorial vamos a crear una aplicación que utiliza Google Maps y threads para que mientras realizamos una búsqueda mostraremos un diálogo de espera.</p>
<p><span style="font-size: medium;"><span style="color: #008000;"><strong>¿Qué voy a aprender?</strong></span></span></p>
<ul>
<li>Acceso a Google Maps</li>
<li>Utilización de threads</li>
<li>Introducción al uso del geocoder.</li>
</ul>
<p><strong><span style="font-size: medium;"><span style="color: #008000;">¿Cómo quedará?</span></span></strong></p>
<p style="text-align: center;"><strong><span style="font-size: medium;"><span style="color: #008000;"><img class="size-full wp-image-225 aligncenter" title="threadgooglemaps1" src="http://mobile.davidocs.com/wp-content/uploads/2009/09/threadgooglemaps1.JPG" alt="threadgooglemaps1" width="328" height="470" /><br />
</span></span></strong></p>
<p><strong><span style="font-size: medium;"><span style="color: #008000;"><span id="more-199"></span></span></span></strong></p>
<p><strong><span style="font-size: medium;"><span style="color: #008000;">Pasos a seguir:</span></span></strong></p>
<p>Se trata de una aplicación bastante sencilla, en ella vamos a necesitar una sola Activity y un solo layout. Antes de poder utilizar un objeto de Google Maps es necesario que os registreis para utilizar la API de Google Maps, en éste <a href="http://code.google.com/intl/es-ES/android/add-ons/google-apis/mapkey.html" target="_blank">enlace</a> se explican los sencillos pasos que debéis seguir.</p>
<p>Lo primero que vamos a necesitar es el XML donde reside el layout de la aplicación.</p>
<p><strong><span style="font-size: medium;"><span style="color: #008000;">main.xml:</span></span></strong></p>
<pre class="brush: xml;">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;AbsoluteLayout
android:id=&quot;@+id/layout&quot;
android:layout_width=&quot;fill_parent&quot;
android:layout_height=&quot;fill_parent&quot;
xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
&gt;
&lt;TextView
android:id=&quot;@+id/tv&quot;
android:layout_width=&quot;wrap_content&quot;
android:layout_height=&quot;wrap_content&quot;
android:text=&quot;@string/address&quot;
android:layout_x=&quot;11px&quot;
android:layout_y=&quot;5px&quot;
&gt;
&lt;/TextView&gt;
&lt;EditText
android:id=&quot;@+id/et_direccion&quot;
android:layout_width=&quot;240px&quot;
android:layout_height=&quot;wrap_content&quot;
android:hint=&quot;@string/input&quot;
android:textSize=&quot;18sp&quot;
android:layout_x=&quot;12px&quot;
android:layout_y=&quot;30px&quot;
&gt;
&lt;/EditText&gt;
&lt;Button
android:id=&quot;@+id/btn_busqueda&quot;
android:layout_width=&quot;59px&quot;
android:layout_height=&quot;wrap_content&quot;
android:text=&quot;@string/go&quot;
android:layout_x=&quot;256px&quot;
android:layout_y=&quot;30px&quot;
&gt;
&lt;/Button&gt;
&lt;com.google.android.maps.MapView android:id=&quot;@+id/mapa&quot;
android:layout_width=&quot;fill_parent&quot;
android:layout_height=&quot;310px&quot;
android:apiKey=&quot;Copia aqui la clave API asignada&quot;
android:layout_x=&quot;2px&quot;
android:layout_y=&quot;100px&quot;
android:clickable=&quot;true&quot; /&gt;
&lt;/AbsoluteLayout&gt;
</pre>
<p>Como veis es un layout muy simple. Tenemos un área de texto donde escribiremos la dirección que queremos buscar y y un botón al que asignaremos la tarea de comenzar la búsqueda de resultados. En el campo &#8220;apiKey&#8221; del MapView debéis copiar la clave que se os haya asignado al acabar el proceso citado anteriormente.</p>
<p>Pasamos ahora a la chicha de la aplicación, el evento de buscar y el manejo del thread.</p>
<p>La idea de todo esto es separar dos procesos, en uno de ellos haremos la búsqueda de las coordenadas y en la otra actualizaremos el layout de la aplicación. Para hacerlo necesitamos un Handler.</p>
<p><strong><span style="font-size: medium;"><span style="color: #008000;">ThreadGoogleMaps.java:</span></span></strong></p>
<pre class="brush: java;">
private Handler showAdressResults = new Handler() {
 @Override
 public void handleMessage(Message msg) {
 pd.dismiss();

 if (foundAdresses.size() == 0) {
 //Sino encuentra la dirección mostramos un diálogo de error
 Dialog locationError = new AlertDialog.Builder(
 ThreadGoogleMaps.this).setIcon(0).setTitle(
 &quot;Error&quot;).setPositiveButton(R.string.ok, null)
 .setMessage(
 &quot;Error, no se ha encontrado la dirección.&quot;)
 .create();
 locationError.show();

 } else { // else display address on map
 for (int i = 0; i &lt; foundAdresses.size(); ++i) {
 //Guardamos el resultado en formato latitud y longitud
 Address x = foundAdresses.get(i);
 lat = x.getLatitude();
 lon = x.getLongitude();
 }
 //Mostramos la dirección en el mapa
 navigateToLocation((lat * 1000000), (lon * 1000000),myMap);
 }
 }
 };
</pre>
<p>El <a href="http://developer.android.com/intl/zh-TW/reference/android/os/Handler.html" target="_blank">Handler</a> se ocupa de actualizar el mapa, en función de si la búsqueda de coordenadas ha devuelto algún resultado.  Para rellenar buscar ésas coordenadas utilizamos una función del <a href="http://developer.android.com/intl/zh-TW/reference/android/location/Geocoder.html" target="_blank">geocoder</a>, se trata de la función <em>getFromLocationName. </em></p>
<p>Como veis es un ejemplo bastante sencillo, obviamente se le podría añadir soporte de GPS o cualquier otra idea pero para el propósito de éste tutorial.</p>
<p><strong><span style="font-size: medium;"><span style="color: #008000;">Código fuente: </span></span></strong></p>
<p><table style="border: 1px solid #CCC;" cellpadding="3" width="100%">
  <tr>
    <td width="35">
      <img src="http://mobile.davidocs.com/wp-content/plugins/downloads-manager/img/icons/winrar.gif" alt="http://mobile.davidocs.com/wp-content/plugins/downloads-manager/img/icons/winrar.gif">
    </td>
    <td>
      <b>download:</b> <a href="http://mobile.davidocs.com/?file_id=5">ThreadGoogleMaps</a> <small>(34.98KB)</small><br />
      <b>added:</b> 28/09/2009 <br />
      <b>clicks:</b> 189 <br />
      <b>description:</b> Ejemplo que añade el tratamiento de threads y Google Maps <br />
    </td>
  </tr>
</table></p>



Comparte:


	<a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fmobile.davidocs.com%2Fandroid%2Fgoogle-maps-con-threads%2F&amp;t=Google%20Maps%20con%20Threads" title="Facebook"><img src="http://mobile.davidocs.com/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://bitacoras.com/anotaciones/http%3A%2F%2Fmobile.davidocs.com%2Fandroid%2Fgoogle-maps-con-threads%2F" title="Bitacoras.com"><img src="http://mobile.davidocs.com/wp-content/plugins/sociable/images/bitacoras.png" title="Bitacoras.com" alt="Bitacoras.com" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://meneame.net/submit.php?url=http%3A%2F%2Fmobile.davidocs.com%2Fandroid%2Fgoogle-maps-con-threads%2F" title="Meneame"><img src="http://mobile.davidocs.com/wp-content/plugins/sociable/images/meneame.png" title="Meneame" alt="Meneame" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.wikio.it/vote?url=http%3A%2F%2Fmobile.davidocs.com%2Fandroid%2Fgoogle-maps-con-threads%2F" title="Wikio IT"><img src="http://mobile.davidocs.com/wp-content/plugins/sociable/images/wikio.png" title="Wikio IT" alt="Wikio IT" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fmobile.davidocs.com%2Fandroid%2Fgoogle-maps-con-threads%2F&amp;title=Google%20Maps%20con%20Threads&amp;bodytext=No%20cabe%20duda%20de%20que%20una%20de%20las%20grandas%20posibilidades%20que%20podemos%20aprovechar%20en%20un%20dispositivo%20Android%20es%20la%20geo-localizaci%C3%B3n.%20Uno%20de%20los%20primeros%20pasos%20que%20podemos%20dar%20en%20este%20campo%20es%20la%20utilizaci%C3%B3n%20de%20Google%20Maps.%0D%0A%0D%0ADesde%20hace%20mucho%20tiempo%20Googl" title="Digg"><img src="http://mobile.davidocs.com/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fmobile.davidocs.com%2Fandroid%2Fgoogle-maps-con-threads%2F&amp;title=Google%20Maps%20con%20Threads&amp;notes=No%20cabe%20duda%20de%20que%20una%20de%20las%20grandas%20posibilidades%20que%20podemos%20aprovechar%20en%20un%20dispositivo%20Android%20es%20la%20geo-localizaci%C3%B3n.%20Uno%20de%20los%20primeros%20pasos%20que%20podemos%20dar%20en%20este%20campo%20es%20la%20utilizaci%C3%B3n%20de%20Google%20Maps.%0D%0A%0D%0ADesde%20hace%20mucho%20tiempo%20Googl" title="del.icio.us"><img src="http://mobile.davidocs.com/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.friendfeed.com/share?title=Google%20Maps%20con%20Threads&amp;link=http%3A%2F%2Fmobile.davidocs.com%2Fandroid%2Fgoogle-maps-con-threads%2F" title="FriendFeed"><img src="http://mobile.davidocs.com/wp-content/plugins/sociable/images/friendfeed.png" title="FriendFeed" alt="FriendFeed" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://news.ycombinator.com/submitlink?u=http%3A%2F%2Fmobile.davidocs.com%2Fandroid%2Fgoogle-maps-con-threads%2F&amp;t=Google%20Maps%20con%20Threads" title="HackerNews"><img src="http://mobile.davidocs.com/wp-content/plugins/sociable/images/hackernews.png" title="HackerNews" alt="HackerNews" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://technorati.com/faves?add=http%3A%2F%2Fmobile.davidocs.com%2Fandroid%2Fgoogle-maps-con-threads%2F" title="Technorati"><img src="http://mobile.davidocs.com/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a>


<br/><br/>

<p>Entradas relacionadas:<ol><li><a href='http://mobile.davidocs.com/android/como-anadir-iconos-a-un-listview-en-android/' rel='bookmark' title='Permanent Link: Cómo añadir iconos a un ListView en Android'>Cómo añadir iconos a un ListView en Android</a></li>
<li><a href='http://mobile.davidocs.com/android/disenando-la-aplicacion-uso-de-tabhost-en-android/' rel='bookmark' title='Permanent Link: Diseñando la aplicación, uso de TabHost en Android'>Diseñando la aplicación, uso de TabHost en Android</a></li>
<li><a href='http://mobile.davidocs.com/android/tratamiento-de-ficheros-xml-con-android/' rel='bookmark' title='Permanent Link: Tratamiento de ficheros XML con Android'>Tratamiento de ficheros XML con Android</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://mobile.davidocs.com/android/google-maps-con-threads/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Tratamiento de ficheros XML con Android</title>
		<link>http://mobile.davidocs.com/android/tratamiento-de-ficheros-xml-con-android/</link>
		<comments>http://mobile.davidocs.com/android/tratamiento-de-ficheros-xml-con-android/#comments</comments>
		<pubDate>Fri, 07 Aug 2009 13:32:51 +0000</pubDate>
		<dc:creator>David González</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[SAXParser]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://www.tech-xperience.com/mobiledev/?p=159</guid>
		<description><![CDATA[Una de las muchas funciones interesantes que nos ofrece Android es poder leer datos de un fichero XML. A simple vista puede parecer algo bastante trivial, pero sin éstos métodos hay una gran cantidad de informacion en Internet que no podremos obtener. [tweetmeme]
Gracias a métidos como SAXParser (SAX es la abreviatura de Simple API para [...]


Entradas relacionadas:<ol><li><a href='http://mobile.davidocs.com/android/como-anadir-iconos-a-un-listview-en-android/' rel='bookmark' title='Permanent Link: Cómo añadir iconos a un ListView en Android'>Cómo añadir iconos a un ListView en Android</a></li>
<li><a href='http://mobile.davidocs.com/android/disenando-la-aplicacion-uso-de-tabhost-en-android/' rel='bookmark' title='Permanent Link: Diseñando la aplicación, uso de TabHost en Android'>Diseñando la aplicación, uso de TabHost en Android</a></li>
<li><a href='http://mobile.davidocs.com/android/google-maps-con-threads/' rel='bookmark' title='Permanent Link: Google Maps con Threads'>Google Maps con Threads</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p class="dropcap-first">Una de las muchas funciones interesantes que nos ofrece Android es poder leer datos de un fichero <strong>XML</strong>. A simple vista puede parecer algo bastante trivial, pero sin éstos métodos hay una gran cantidad de informacion en Internet que no podremos obtener. [tweetmeme]</p>
<p>Gracias a métidos como <a href="http://developer.android.com/reference/javax/xml/parsers/SAXParser.html" target="_blank">SAXParser</a> (<em>SAX</em> es la abreviatura de <strong>Simple API para XML</strong>) podremos leer contenido de un fichero <em>XML </em>para después tratarlo a nuestro antojo.</p>
<p><span style="color: #008000;"><strong><span style="font-size: medium;">¿Qué es esto?</span></strong></span></p>
<p>En éste tutorial vamos a leer contenido de un fichero <em>XML </em>y lo mostraremos por pantalla.</p>
<p><span style="font-size: medium;"><span style="color: #008000;"><strong>¿Qué voy a aprender?</strong></span></span></p>
<ul>
<li>Obtener datos de ficheros <em>XML </em>en la red.</li>
<li>Recorrer ficheros <em>XML</em>.</li>
</ul>
<p><strong><span style="font-size: medium;"><span style="color: #008000;">¿Cómo quedará?</span></span></strong></p>
<p style="text-align: center;"><strong><span style="font-size: medium;"><span style="color: #008000;"><img class="size-full wp-image-170 aligncenter" title="tuto3-1" src="http://www.tech-xperience.com/mobiledev/wp-content/uploads/2009/08/tuto3-1.jpg" alt="tuto3-1" width="325" height="601" /><br />
</span></span></strong></p>
<p><span id="more-159"></span><strong><span style="font-size: medium;"><span style="color: #008000;">Pasos a seguir:</span></span></strong></p>
<p>Como veis a nivel visual se trata de una aplicación muy sencilla, la información que leamos del <em>XML </em>la mostraremos por pantalla mediante un <em>TextView</em>. No es necesario modificar el fichero <em>main.xml, </em>mostraremos el texto al vuelo.</p>
<p>Para poder tratar un fichero XML primero debemos conocer su estructura, en nuestro caso se trata de un simple fichero que incluye los datos de una ubicación:</p>
<p><strong><span style="font-size: medium;"><span style="color: #008000;">ejemplo.xml:</span></span></strong></p>
<pre class="brush: xml;">

&lt;ejemplo&gt;
&lt;titulo&gt;Mobile Development&lt;/titulo&gt;
&lt;valoracion&gt;4&lt;/valoracion&gt;
&lt;distancia&gt;6.7762437412613&lt;/distancia&gt;
&lt;coordenadas&gt;40.4784,-3.71233&lt;/coordenadas&gt;
&lt;telefono&gt;91 386 2393&lt;/telefono&gt;
−&lt;cireccion&gt;
&lt;calle&gt;Paseo Maritimo Rafael de Casanovas&lt;/calle&gt;
&lt;numero numerodecalle=&quot;7&quot;/&gt;
&lt;ciudad&gt;Tarragona&lt;/ciudad&gt;

&lt;categoria lang=&quot;Programacion&quot;&lt;/title&gt;

&lt;/categoria&gt;&lt;/cireccion&gt;&lt;/ejemplo&gt;
</pre>
<p>Para poder leer los datos del fichero <em>XML </em>necesitamos un <a href="http://developer.android.com/reference/org/xml/sax/XMLReader.html" target="_blank">XMLReader</a> y un <a href="http://developer.android.com/reference/java/net/ContentHandler.html" target="_blank">ContentHandler</a>. El <em>XMLReader</em> es quien se encarga de leer los datos (un punto para el ingeniero) y el <em>ContentHandler </em>es quien le dice al <em>XMLReader </em>como tratar esos datos.</p>
<p>Lo que vamos a hacer ahora es abrir la dirección URL donde está alojado el fichero, crearemos el <em>SAXParser</em>, le añadiremos un <em>ContentHandler</em>, pasaremos los datos desde la URL y los mostraremos por pantalla.</p>
<p><strong><span style="font-size: medium;"><span style="color: #008000;">ParsingXML.java:</span></span></strong></p>
<pre class="brush: java;">

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

/* Create a new TextView to display the parsingresult later. */
TextView tv = new TextView(this);
try {

/* URL desde donde leeremos los datos. */

String URL_Test = &quot;http://www.tech-xperience.com/mobiledev/places.xml&quot;;
URL url = new URL(URL_Test);

/* Creamos un SAXParser. */
SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser sp = spf.newSAXParser();

/* Cogemos el XMLReader del SAXParser que hemos creado. */
XMLReader xr = sp.getXMLReader();
/* Creamos un nuevo ContentHandler y lo aplicamos al XML-Reader*/
XMLHandler myXMLHandler = new XMLHandler();
xr.setContentHandler(myXMLHandler);

/* Tratamos los datos del URL. */
xr.parse(new InputSource(url.openStream()));
/* Acaba el tratamiento. */

/* Ponemos los datos por pantalla con el XMLHandler. */
ParsedXMLDataSet parsedExampleDataSet = myXMLHandler.getParsedData();

/* Set the result to be displayed in our GUI. */
tv.setText(parsedExampleDataSet.toString());

} catch (Exception e) {
/* Mostramos el Error. */
tv.setText(&quot;Error: &quot; + e.getMessage());
Log.e(MY_DEBUG_TAG, &quot;XMLQueryError&quot;, e);
}
/* Display the TextView. */
this.setContentView(tv);
}
</pre>
<p>La siguiente clase que definiremos es el <em>ContentHandler</em>, en nuestro caso un <strong>SAX-Handler</strong> que se ocupará de recorrer el archivo <em>XML</em>.</p>
<p>Cuando se encuentre con <strong>tag de apertura</strong> como,
<pre class="brush: xml;">&lt;ejemplo&gt;</pre>
<p> se  ejecutará la funcion del Handler:</p>
<pre class="brush: java;">

public void startElement(String namespaceURI, String localName,
String qName, Attributes atts) throws SAXException {}
</pre>
<p>Lo mismo ocurre al encontrarse con un <strong>tag de cierre</strong> como,
<pre class="brush: xml;">&lt;/ejemplo&gt;</pre>
<p> se  <strong>ejecutará</strong> la funcion del Handler:</p>
<pre class="brush: java;">

@Override
public void endElement(String namespaceURI, String localName, String qName)
throws SAXException {}
</pre>
<p>Para <strong>leer los datos</strong> dentro de un tag como el anterior debemos usar la función:</p>
<pre class="brush: java;">

@Override
public void characters(char ch[], int start, int length)}
</pre>
<p>En caso de que el <strong>contenido </strong>que queremos leer se encuentre de ésta manera</p>
<pre class="brush: xml;">

&lt;numero numerodecalle=&quot;7&quot;/&gt;
</pre>
<p>Deberemos acceder a él dentro de la función <strong>startElement</strong></p>
<pre class="brush: java;">

public void startElement(String namespaceURI, String localName,
String qName, Attributes atts) throws SAXException {}
</pre>
<p>Visto así no parece muy claro, veamos el código completo para entenderlo mejor.</p>
<p><strong><span style="font-size: medium;"><span style="color: #008000;">XMLHandler.java:</span></span></strong></p>
<pre class="brush: java;">

package com.mobiledev;

import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

public class XMLHandler extends DefaultHandler{

// ===========================================================
// Campos
// ===========================================================

@SuppressWarnings(&quot;unused&quot;)
private boolean in_ejemplo = false;
private boolean in_titulo = false;
private boolean in_valoracion = false;
private boolean in_distancia = false;
private boolean in_coordenadas = false;
private boolean in_telefono = false;
@SuppressWarnings(&quot;unused&quot;)
private boolean in_direccion = false;
@SuppressWarnings(&quot;unused&quot;)
private boolean in_categoria = false;
private boolean in_calle = false;
@SuppressWarnings(&quot;unused&quot;)
private boolean in_numero = false;
private boolean in_ciudad = false;

private ParsedXMLDataSet myParsedXMLDataSet = new ParsedXMLDataSet();

// ===========================================================
// Getter &amp; Setter
// ===========================================================

public ParsedXMLDataSet getParsedData() {
return this.myParsedXMLDataSet;
}

// ===========================================================
// Metodos
// ===========================================================
@Override
public void startDocument() throws SAXException {
this.myParsedXMLDataSet = new ParsedXMLDataSet();
}

@Override
public void endDocument() throws SAXException {
// No hacemos nada
}

/** Se ejecuta cuando encuentra tags como:
* &lt;tag&gt;
* Puede leer atributos cuando se encuentra con:
* &lt;/tag&gt;&lt;tag attribute=&quot;attributeValue&quot;&gt;*/
@Override
public void startElement(String namespaceURI, String localName,
String qName, Attributes atts) throws SAXException {
if (localName.equals(&quot;ejemplo&quot;)) {
this.in_ejemplo = true;
}else if (localName.equals(&quot;titulo&quot;)) {
this.in_titulo = true;
}else if (localName.equals(&quot;valoracion&quot;)) {
this.in_valoracion = true;
}else if (localName.equals(&quot;distancia&quot;)) {
this.in_distancia = true;
}else if (localName.equals(&quot;coordenadas&quot;)) {
this.in_coordenadas = true;
}else if (localName.equals(&quot;telefono&quot;)) {
this.in_telefono = true;
}else if (localName.equals(&quot;direccion&quot;)) {
this.in_direccion = true;
}else if (localName.equals(&quot;calle&quot;)) {
this.in_calle = true;
}else if (localName.equals(&quot;numero&quot;)) {
// Extraemos el atributo
String attrValue = atts.getValue(&quot;numerodecalle&quot;);
int i = Integer.parseInt(attrValue);
myParsedXMLDataSet.setNumCalle(i);
}else if (localName.equals(&quot;ciudad&quot;)) {
this.in_ciudad = true;
}else if (localName.equals(&quot;categoria&quot;)) {
// Extraemos el atributo
String attrValue = atts.getValue(&quot;lang&quot;);
myParsedXMLDataSet.setCategoria(attrValue);
}
}
/** Se ejecuta en tags de cierre:
* &lt;/tag&gt; */
@Override
public void endElement(String namespaceURI, String localName, String qName)
throws SAXException {
if (localName.equals(&quot;ejemplo&quot;)) {
this.in_ejemplo = false;
}else if (localName.equals(&quot;titulo&quot;)) {
this.in_titulo = false;
}else if (localName.equals(&quot;valoracion&quot;)) {
this.in_valoracion = false;
}else if (localName.equals(&quot;distancia&quot;)) {
this.in_distancia = false;
}else if (localName.equals(&quot;coordenadas&quot;)) {
this.in_coordenadas = false;
}else if (localName.equals(&quot;telefono&quot;)) {
this.in_telefono = false;
}else if (localName.equals(&quot;direccion&quot;)) {
this.in_direccion = false;
}else if (localName.equals(&quot;calle&quot;)) {
this.in_calle = false;
}else if (localName.equals(&quot;numero&quot;)) {
this.in_numero = false;
}else if (localName.equals(&quot;ciudad&quot;)) {
this.in_ciudad = false;
}else if (localName.equals(&quot;categoria&quot;)) {
this.in_categoria = false;
}
}
/** Se ejecuta cuando se encuentra con la siguiente estructura:
* &lt;tag&gt;characters&lt;/tag&gt; */
@Override
public void characters(char ch[], int start, int length) {
if(this.in_titulo){
myParsedXMLDataSet.setTitulo(new String(ch, start, length));
}
if(this.in_valoracion){
myParsedXMLDataSet.setValoracion(new String(ch, start, length));
}
if(this.in_distancia){
myParsedXMLDataSet.setDistancia(new String(ch, start, length));
}
if(this.in_coordenadas){
myParsedXMLDataSet.setCoordenada(new String(ch, start, length));
}
if(this.in_telefono){
myParsedXMLDataSet.setTelefono(new String(ch, start, length));
}
if(this.in_calle){
myParsedXMLDataSet.setCalle(new String(ch, start, length));
}
if(this.in_ciudad){
myParsedXMLDataSet.setCiudad(new String(ch, start, length));
}
}
}
</pre>
<p>En la función <strong>characters</strong> se llama a las funciones que pasan los datos del <em>Reader</em> a la clase donde almacenamos los datos leidos, en éste caso, <em>ParsedXMLDataSet</em>.</p>
<p><strong><span style="font-size: medium;"><span style="color: #008000;">ParsedXMLDataSet.java:</span></span></strong></p>
<pre class="brush: java;">

package com.mobiledev;

public class ParsedXMLDataSet {

private String Titulo = null;
private String Valoracion = null;
private String Distancia = null;
private String Coordenada = null;
private String Telefono = null;
private int NumCalle = 0;
private String Calle = null;
private String Ciudad = null;
private String Categoria = null;

// ===========================================================
// Getter &amp;amp;amp;amp;amp;amp;amp; Setter
// ===========================================================

public String getTitulo() {
return Titulo;
}
public void setTitulo(String extractedString) {
this.Titulo = extractedString;
}
public String getValoracion() {
return Valoracion;
}
public void setValoracion(String extractedString) {
this.Valoracion = extractedString;
}
public String getDistancia(){
return Distancia;
}
public void setDistancia(String extractedString){
this.Distancia = extractedString;
}
public String getCoordenada() {
return Coordenada;
}
public void setCoordenada(String extractedString) {
this.Coordenada = extractedString;
}
public String getTelefono() {
return Telefono;
}
public void setTelefono(String extractedString) {
this.Telefono = extractedString;
}
public int getNumCalle() {
return NumCalle;
}
public void setNumCalle(int extractedInt) {
this.NumCalle = extractedInt;
}
public String getCalle() {
return Calle;
}
public void setCalle(String extractedString) {
this.Calle = extractedString;
}
public String getCiudad() {
return Ciudad;
}
public void setCiudad(String extractedString) {
this.Ciudad = extractedString;
}
public String getCategoria() {
return Calle;
}
public void setCategoria(String extractedString) {
this.Categoria = extractedString;
}
public String toString(){
return &quot;Establecimiento = &quot; + this.Titulo
+ &quot;\nValoracion = &quot; + this.Valoracion
+ &quot;\nDistancia = &quot; + this.Distancia
+ &quot;\nCoordenadas = &quot; + this.Coordenada
+ &quot;\nTelefono = &quot; + this.Telefono
+ &quot;\nNumCalle = &quot; + this.NumCalle
+ &quot;\nCalle = &quot; + this.Calle
+ &quot;\nCiudad = &quot; + this.Ciudad
+ &quot;\nCategoria = &quot; + this.Categoria;

}
}
</pre>
<p>Ésta clase proporciona los métodos para recoger los datos del <em>XML </em>y un método que devuelve los valores que contiene. Éste metodo es el que se llama después de leer datos desde la clase principal y muestra los datos en el <em>TextView. </em>[tweetmeme]<em><br />
</em>
</p>
<p style="text-align: center;"><img class="size-full wp-image-170 aligncenter" title="tuto3-1" src="http://www.tech-xperience.com/mobiledev/wp-content/uploads/2009/08/tuto3-1.jpg" alt="tuto3-1" width="325" height="601" /></p>
<p><strong><span style="font-size: medium;"><span style="color: #008000;">Código fuente: </span></span></strong></p>
<p><table style="border: 1px solid #CCC;" cellpadding="3" width="100%">
  <tr>
    <td width="35">
      <img src="http://mobile.davidocs.com/wp-content/plugins/downloads-manager/img/icons/winrar.gif" alt="http://mobile.davidocs.com/wp-content/plugins/downloads-manager/img/icons/winrar.gif">
    </td>
    <td>
      <b>download:</b> <a href="http://mobile.davidocs.com/?file_id=4">ParsingXML</a> <small>(34.39KB)</small><br />
      <b>added:</b> 07/08/2009 <br />
      <b>clicks:</b> 246 <br />
      <b>description:</b> Ejemplo de tratamiento de ficheros XML colgados en la red. <br />
    </td>
  </tr>
</table></p>
<p><span style="font-size: medium;"><span style="color: #008000;"><strong><br />
</strong></span></span></p>
<p><span style="color: #008000;"><strong><span style="font-size: medium;"><br />
</span></strong></span></p>



Comparte:


	<a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fmobile.davidocs.com%2Fandroid%2Ftratamiento-de-ficheros-xml-con-android%2F&amp;t=Tratamiento%20de%20ficheros%20XML%20con%20Android" title="Facebook"><img src="http://mobile.davidocs.com/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://bitacoras.com/anotaciones/http%3A%2F%2Fmobile.davidocs.com%2Fandroid%2Ftratamiento-de-ficheros-xml-con-android%2F" title="Bitacoras.com"><img src="http://mobile.davidocs.com/wp-content/plugins/sociable/images/bitacoras.png" title="Bitacoras.com" alt="Bitacoras.com" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://meneame.net/submit.php?url=http%3A%2F%2Fmobile.davidocs.com%2Fandroid%2Ftratamiento-de-ficheros-xml-con-android%2F" title="Meneame"><img src="http://mobile.davidocs.com/wp-content/plugins/sociable/images/meneame.png" title="Meneame" alt="Meneame" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.wikio.it/vote?url=http%3A%2F%2Fmobile.davidocs.com%2Fandroid%2Ftratamiento-de-ficheros-xml-con-android%2F" title="Wikio IT"><img src="http://mobile.davidocs.com/wp-content/plugins/sociable/images/wikio.png" title="Wikio IT" alt="Wikio IT" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fmobile.davidocs.com%2Fandroid%2Ftratamiento-de-ficheros-xml-con-android%2F&amp;title=Tratamiento%20de%20ficheros%20XML%20con%20Android&amp;bodytext=Una%20de%20las%20muchas%20funciones%20interesantes%20que%20nos%20ofrece%20Android%20es%20poder%20leer%20datos%20de%20un%20fichero%20XML.%20A%20simple%20vista%20puede%20parecer%20algo%20bastante%20trivial%2C%20pero%20sin%20%C3%A9stos%20m%C3%A9todos%20hay%20una%20gran%20cantidad%20de%20informacion%20en%20Internet%20que%20no%20podremos%20obten" title="Digg"><img src="http://mobile.davidocs.com/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fmobile.davidocs.com%2Fandroid%2Ftratamiento-de-ficheros-xml-con-android%2F&amp;title=Tratamiento%20de%20ficheros%20XML%20con%20Android&amp;notes=Una%20de%20las%20muchas%20funciones%20interesantes%20que%20nos%20ofrece%20Android%20es%20poder%20leer%20datos%20de%20un%20fichero%20XML.%20A%20simple%20vista%20puede%20parecer%20algo%20bastante%20trivial%2C%20pero%20sin%20%C3%A9stos%20m%C3%A9todos%20hay%20una%20gran%20cantidad%20de%20informacion%20en%20Internet%20que%20no%20podremos%20obten" title="del.icio.us"><img src="http://mobile.davidocs.com/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.friendfeed.com/share?title=Tratamiento%20de%20ficheros%20XML%20con%20Android&amp;link=http%3A%2F%2Fmobile.davidocs.com%2Fandroid%2Ftratamiento-de-ficheros-xml-con-android%2F" title="FriendFeed"><img src="http://mobile.davidocs.com/wp-content/plugins/sociable/images/friendfeed.png" title="FriendFeed" alt="FriendFeed" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://news.ycombinator.com/submitlink?u=http%3A%2F%2Fmobile.davidocs.com%2Fandroid%2Ftratamiento-de-ficheros-xml-con-android%2F&amp;t=Tratamiento%20de%20ficheros%20XML%20con%20Android" title="HackerNews"><img src="http://mobile.davidocs.com/wp-content/plugins/sociable/images/hackernews.png" title="HackerNews" alt="HackerNews" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://technorati.com/faves?add=http%3A%2F%2Fmobile.davidocs.com%2Fandroid%2Ftratamiento-de-ficheros-xml-con-android%2F" title="Technorati"><img src="http://mobile.davidocs.com/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a>


<br/><br/>

<p>Entradas relacionadas:<ol><li><a href='http://mobile.davidocs.com/android/como-anadir-iconos-a-un-listview-en-android/' rel='bookmark' title='Permanent Link: Cómo añadir iconos a un ListView en Android'>Cómo añadir iconos a un ListView en Android</a></li>
<li><a href='http://mobile.davidocs.com/android/disenando-la-aplicacion-uso-de-tabhost-en-android/' rel='bookmark' title='Permanent Link: Diseñando la aplicación, uso de TabHost en Android'>Diseñando la aplicación, uso de TabHost en Android</a></li>
<li><a href='http://mobile.davidocs.com/android/google-maps-con-threads/' rel='bookmark' title='Permanent Link: Google Maps con Threads'>Google Maps con Threads</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://mobile.davidocs.com/android/tratamiento-de-ficheros-xml-con-android/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Cómo añadir iconos a un ListView en Android</title>
		<link>http://mobile.davidocs.com/android/como-anadir-iconos-a-un-listview-en-android/</link>
		<comments>http://mobile.davidocs.com/android/como-anadir-iconos-a-un-listview-en-android/#comments</comments>
		<pubDate>Mon, 03 Aug 2009 21:40:43 +0000</pubDate>
		<dc:creator>David González</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[Icon]]></category>
		<category><![CDATA[Image]]></category>
		<category><![CDATA[ListView]]></category>

		<guid isPermaLink="false">http://www.tech-xperience.com/mobiledev/?p=139</guid>
		<description><![CDATA[Hace poco añadimos un enlace a una gran cantidad de imágenes e iconos para incluir en los Proyectos de Android. Pues bien, ya va siendo hora de darles utilidad. Vamos a añadir un icono a un ListView, de ésta manera tendremos un diseño mucho más agradable e añadiremos alguna funcionalidad extra. [tweetmeme]
¿Qué es esto?
En éste [...]


Entradas relacionadas:<ol><li><a href='http://mobile.davidocs.com/android/como-instalar-el-teclado-del-htc-hero-en-el-htc-magic/' rel='bookmark' title='Permanent Link: Cómo instalar el teclado del HTC Hero en el HTC Magic'>Cómo instalar el teclado del HTC Hero en el HTC Magic</a></li>
<li><a href='http://mobile.davidocs.com/android/tratamiento-de-ficheros-xml-con-android/' rel='bookmark' title='Permanent Link: Tratamiento de ficheros XML con Android'>Tratamiento de ficheros XML con Android</a></li>
<li><a href='http://mobile.davidocs.com/android/coleccion-de-iconos-e-imagenes-para-android/' rel='bookmark' title='Permanent Link: Colección de iconos e imágenes para Android'>Colección de iconos e imágenes para Android</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p class="dropcap-first">Hace poco añadimos un <a href="http://mobile.davidocs.com/android/coleccion-de-iconos-e-imagenes-para-android/" target="_blank">enlace</a> a una gran cantidad de imágenes e iconos para incluir en los Proyectos de <em>Android</em>. Pues bien, ya va siendo hora de darles utilidad. Vamos a añadir un icono a un <em><a href="http://developer.android.com/reference/android/widget/ListView.html" target="_blank">ListView</a></em>, de ésta manera tendremos un diseño mucho más agradable e añadiremos alguna funcionalidad extra. <span style="color: #008000;"><span style="color: #000000;">[tweetmeme]</span></span></p>
<p><span style="color: #008000;"><strong><span style="font-size: medium;">¿Qué es esto?</span></strong></span></p>
<p>En éste tutorial vamos a añadir un icono a cada línea de un <em>ListView.</em></p>
<p><span style="font-size: medium;"><span style="color: #008000;"><strong>¿Qué voy a aprender?</strong></span></span></p>
<ul>
<li>Acceder a las propiedades de un control desde código.</li>
<li>Caputarar los eventos de un <em>ListView</em>.</li>
<li>Crear nuevas clases y utilizarlas en la aplicación.</li>
</ul>
<p><strong><span style="font-size: medium;"><span style="color: #008000;">¿Cómo quedará?</span></span></strong></p>
<p style="text-align: center;"><strong><span style="font-size: medium;"><span style="color: #008000;"><img class="size-full wp-image-147 aligncenter" title="screenshot1" src="http://www.tech-xperience.com/mobiledev/wp-content/uploads/2009/08/screenshot1.png" alt="screenshot1" width="325" height="585" /></span></span></strong></p>
<p style="text-align: left;"><strong><span style="font-size: medium;"><span style="color: #008000;"><span id="more-139"></span><br />
</span></span></strong></p>
<p><strong><span style="font-size: medium;"><span style="color: #008000;">Pasos a seguir:</span></span></strong></p>
<p>Para simplificar el tutorial crearemos un nuevo Proyecto de <em>Android </em>que creará el <em>ListView </em>y lo poblará con iconos y textos. De ésta manera será mucho más fácil <strong>añadirlo a otros proyectos</strong> sin invertir mucho tiempo en la tarea.</p>
<p>Lo primero que vamos a hacer es crear el diseño de nuestra aplicación. Se trata de un XML muy simple donde añadiremos un <em>ListView</em>.<strong><span style="font-size: medium;"><span style="color: #008000;"><br />
</span></span></strong></p>
<p><strong><span style="font-size: medium;"><span style="color: #008000;">main.xml:</span></span></strong></p>
<pre class="brush: xml;">

&lt; ?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;

&lt;linearlayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
android:id=&quot;@+id/settings&quot;
android:orientation=&quot;vertical&quot;
android:layout_width=&quot;fill_parent&quot;
android:layout_height=&quot;fill_parent&quot;&gt;

&lt;listview android:id=&quot;@+id/android:list&quot;
android:layout_width=&quot;wrap_content&quot;
android:layout_height=&quot;wrap_content&quot;
/&gt;

&lt;/linearlayout&gt;
</pre>
<p>Un <em>ListView</em>, por defecto, sólo permite añadir líneas de texto. Cabe destacar que si el número de elementos es mayor del que podemos ver en pantalla él solito se encarga de hacer un Scroll cuando movamos naveguemos por la pantalla, así que no hace falta crear un <a href="http://developer.android.com/reference/android/widget/Scroller.html" target="_blank">Scroller</a>,ya que el control es automático. Para poder añadir un icono vamos a tener que crear un nuevo Layout que corresponderá a la nueva línea que veremos en el ListView.</p>
<p><strong><span style="font-size: medium;"><span style="color: #008000;">IconRow.xml:</span></span></strong></p>
<pre class="brush: xml;">

&lt;relativelayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
android:layout_width=&quot;fill_parent&quot;
android:layout_height=&quot;?android:attr/listPreferredItemHeight&quot;
android:padding=&quot;6dip&quot;&gt;

&lt;imageview android:id=&quot;@+id/icon&quot;

android:layout_width=&quot;wrap_content&quot;
android:layout_height=&quot;fill_parent&quot;

android:layout_alignParentTop=&quot;true&quot;
android:layout_alignParentBottom=&quot;true&quot;
android:layout_marginRight=&quot;6dip&quot;/&gt;

&lt;textview android:id=&quot;@+id/row_toptext&quot;

android:layout_width=&quot;fill_parent&quot;
android:layout_height=&quot;fill_parent&quot;

android:layout_toRightOf=&quot;@id/icon&quot;
android:layout_alignParentBottom=&quot;true&quot;
android:layout_alignParentRight=&quot;true&quot;

android:singleLine=&quot;true&quot;
android:ellipsize=&quot;marquee&quot;/&gt;

&lt;/relativelayout&gt;
</pre>
<p>Ahora que ya hemos creado todos los <em>Layouts </em>necesarios ya podemos empezar a escribir código. Lo primero que vamos a hacer es crear una nueva clase llamada <strong>Local</strong>, cada línea del <em>ListView</em> contendrá un elemento de ésta clase.</p>
<p><strong><span style="font-size: medium;"><span style="color: #008000;">Local.java:</span></span></strong></p>
<pre class="brush: java;">

package com.mobiledev;

public class Local {

private String localName;
private int localImage;

public String getLocalName() {
return localName;
}
public void setLocalName(String localName) {
this.localName = localName;
}
public int getLocalImage() {
return localImage;
}
public void setLocalImage(int i) {
this.localImage = i;
}

}
</pre>
<p>Ya tenemos el contenido, lo siguiente que necesitamos es un <em>Adapter </em>que se encargue de pasar la información de cada elemento de la clase al ListView.</p>
<p><strong><span style="font-size: medium;"><span style="color: #008000;">IconListViewAdapter: (dentro de IconListView.java)</span></span></strong></p>
<pre class="brush: java;">

public class IconListViewAdapter extends ArrayAdapter&lt;local&gt; {

private ArrayList&lt;/local&gt;&lt;local&gt; items;

public IconListViewAdapter(Context context, int textViewResourceId, ArrayList&lt;/local&gt;&lt;local&gt; items) {
super(context, textViewResourceId, items);
this.items = items;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if (v == null) {
LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.iconrow, null);
}
Local o = items.get(position);
if (o != null) {

//poblamos la lista de elementos

TextView tt = (TextView) v.findViewById(R.id.row_toptext);
ImageView im = (ImageView) v.findViewById(R.id.icon);

if (im!= null) {
im.setImageResource(o.getLocalImage());
}
if (tt != null) {
tt.setText(o.getLocalName());
}
}
return v;
}
}
</pre>
<p>Como veis el <em>Adapter </em>se encarga de coger los datos que le vamos pasando y colocarlos en el <em>ListView</em>. Utilizando los métodos <em>findviewbyId </em>lo que conseguimos es acceder a los compoenentes de la fila y pasarle los datos que queramos. Por último sólo falta el código fuente de la aplicación, donde en un métido a parte nos encargaremos de indicar el texto y las imágenes que queremos añadir.</p>
<p>Éste proceso se debe hacer dentro del método onCreate de la aplicación principal, de ésta manera sólo lo haremos una vez y estará disponible durante todo el <a href="http://www.tech-xperience.com/mobiledev/android/ciclo-de-vida-de-una-activity-lifecycle/" target="_blank">LifeCycle</a>.</p>
<p><strong><span style="font-size: medium;"><span style="color: #008000;">IconListView.java:</span></span></strong></p>
<pre class="brush: java;">

package com.mobiledev;

import java.util.ArrayList;

import android.app.ListActivity;
import android.content.Context;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

public class IconListView extends ListActivity {
private ArrayList&lt;/local&gt;&lt;local&gt; m_locals = null;
private IconListViewAdapter m_adapter;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

/*
* Al crear la clase se inicializa el ListView que muestra los men�s
*/

m_locals = new ArrayList&lt;/local&gt;&lt;local&gt;();
this.m_adapter = new IconListViewAdapter(this, R.layout.iconrow, m_locals);
setListAdapter(this.m_adapter);

inicializarLocales();

}

@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
Local local = (Local) l.getItemAtPosition(position);

Toast.makeText(this, local.getLocalName(),
Toast.LENGTH_LONG).show();
}

/*
* Inicializacion del mapa
*/

private void inicializarLocales(){

try {
m_locals = new ArrayList&lt;/local&gt;&lt;local&gt;();
Local o1 = new Local();
o1.setLocalName(&quot;Bancos&quot;);
o1.setLocalImage(R.drawable.visa);
Local o2 = new Local();
o2.setLocalName(&quot;Gasolineras&quot;);
o2.setLocalImage(R.drawable.gas);
Local o3 = new Local();
o3.setLocalName(&quot;Hospitales&quot;);
o3.setLocalImage(R.drawable.hospital);
Local o4 = new Local();
o4.setLocalName(&quot;Restaurantes&quot;);
o4.setLocalImage(R.drawable.restaurant);
Local o5 = new Local();
o5.setLocalName(&quot;Tiendas&quot;);
o5.setLocalImage(R.drawable.shop);
m_locals.add(o1);
m_locals.add(o2);
m_locals.add(o3);
m_locals.add(o4);
m_locals.add(o5);
Log.i(&quot;Locales añadidos &quot;, &quot;&quot;+ m_locals.size());
} catch (Exception e) {
Log.e(&quot;BACKGROUND_PROC&quot;, e.getMessage());
}

if(m_locals != null &amp;amp;amp;amp;amp;amp;&amp;amp;amp;amp;amp;amp; m_locals.size() &gt; 0){
for(int i=0;i&lt;m_locals .size();i++)
m_adapter.add(m_locals.get(i));
}

m_adapter.notifyDataSetChanged();

}
</pre>
<p><strong><span style="color: #008000;"><span style="color: #000000;"><em> </em>[tweetmeme] </span></span>No es necesario que el <em>ListView </em>sea lo único que se vea dentro del <em>Layout</em>. Podéis añadir botones, otros layouts o lo que os apetezca. Éste código sólo se encarga de rellenar el <em>ListView </em>y no afectará a otros componentens. Como nota interesante hemos añadido el envio de mensajes al Log del sistema. Tal y como lo hemos echo veremos en Log el número de locales añadido al <em>ListView</em> aunque, como os imaginais, la utilidad del Log es muchísimo más amplia.</p>
<p style="text-align: center;"><img class="size-full wp-image-147 aligncenter" title="screenshot1" src="http://www.tech-xperience.com/mobiledev/wp-content/uploads/2009/08/screenshot1.png" alt="screenshot1" width="325" height="584" /></p>
<p><strong><span style="font-size: medium;"><span style="color: #008000;">Código fuente: </span></span></strong></p>
<p><table style="border: 1px solid #CCC;" cellpadding="3" width="100%">
  <tr>
    <td width="35">
      <img src="http://mobile.davidocs.com/wp-content/plugins/downloads-manager/img/icons/winrar.gif" alt="http://mobile.davidocs.com/wp-content/plugins/downloads-manager/img/icons/winrar.gif">
    </td>
    <td>
      <b>download:</b> <a href="http://mobile.davidocs.com/?file_id=3">IconListView</a> <small>(44.94KB)</small><br />
      <b>added:</b> 03/08/2009 <br />
      <b>clicks:</b> 501 <br />
      <b>description:</b> ListView que se compone de un icono y un texto. <br />
    </td>
  </tr>
</table></m_locals></local></p>



Comparte:


	<a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fmobile.davidocs.com%2Fandroid%2Fcomo-anadir-iconos-a-un-listview-en-android%2F&amp;t=C%C3%B3mo%20a%C3%B1adir%20iconos%20a%20un%20ListView%20en%20Android" title="Facebook"><img src="http://mobile.davidocs.com/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://bitacoras.com/anotaciones/http%3A%2F%2Fmobile.davidocs.com%2Fandroid%2Fcomo-anadir-iconos-a-un-listview-en-android%2F" title="Bitacoras.com"><img src="http://mobile.davidocs.com/wp-content/plugins/sociable/images/bitacoras.png" title="Bitacoras.com" alt="Bitacoras.com" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://meneame.net/submit.php?url=http%3A%2F%2Fmobile.davidocs.com%2Fandroid%2Fcomo-anadir-iconos-a-un-listview-en-android%2F" title="Meneame"><img src="http://mobile.davidocs.com/wp-content/plugins/sociable/images/meneame.png" title="Meneame" alt="Meneame" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.wikio.it/vote?url=http%3A%2F%2Fmobile.davidocs.com%2Fandroid%2Fcomo-anadir-iconos-a-un-listview-en-android%2F" title="Wikio IT"><img src="http://mobile.davidocs.com/wp-content/plugins/sociable/images/wikio.png" title="Wikio IT" alt="Wikio IT" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fmobile.davidocs.com%2Fandroid%2Fcomo-anadir-iconos-a-un-listview-en-android%2F&amp;title=C%C3%B3mo%20a%C3%B1adir%20iconos%20a%20un%20ListView%20en%20Android&amp;bodytext=Hace%20poco%20a%C3%B1adimos%20un%20enlace%20a%20una%20gran%20cantidad%20de%20im%C3%A1genes%20e%20iconos%20para%20incluir%20en%20los%20Proyectos%20de%20Android.%20Pues%20bien%2C%20ya%20va%20siendo%20hora%20de%20darles%20utilidad.%20Vamos%20a%20a%C3%B1adir%20un%20icono%20a%20un%20ListView%2C%20de%20%C3%A9sta%20manera%20tendremos%20un%20dise%C3%B1o%20mucho%20m%C3%A1s" title="Digg"><img src="http://mobile.davidocs.com/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fmobile.davidocs.com%2Fandroid%2Fcomo-anadir-iconos-a-un-listview-en-android%2F&amp;title=C%C3%B3mo%20a%C3%B1adir%20iconos%20a%20un%20ListView%20en%20Android&amp;notes=Hace%20poco%20a%C3%B1adimos%20un%20enlace%20a%20una%20gran%20cantidad%20de%20im%C3%A1genes%20e%20iconos%20para%20incluir%20en%20los%20Proyectos%20de%20Android.%20Pues%20bien%2C%20ya%20va%20siendo%20hora%20de%20darles%20utilidad.%20Vamos%20a%20a%C3%B1adir%20un%20icono%20a%20un%20ListView%2C%20de%20%C3%A9sta%20manera%20tendremos%20un%20dise%C3%B1o%20mucho%20m%C3%A1s" title="del.icio.us"><img src="http://mobile.davidocs.com/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.friendfeed.com/share?title=C%C3%B3mo%20a%C3%B1adir%20iconos%20a%20un%20ListView%20en%20Android&amp;link=http%3A%2F%2Fmobile.davidocs.com%2Fandroid%2Fcomo-anadir-iconos-a-un-listview-en-android%2F" title="FriendFeed"><img src="http://mobile.davidocs.com/wp-content/plugins/sociable/images/friendfeed.png" title="FriendFeed" alt="FriendFeed" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://news.ycombinator.com/submitlink?u=http%3A%2F%2Fmobile.davidocs.com%2Fandroid%2Fcomo-anadir-iconos-a-un-listview-en-android%2F&amp;t=C%C3%B3mo%20a%C3%B1adir%20iconos%20a%20un%20ListView%20en%20Android" title="HackerNews"><img src="http://mobile.davidocs.com/wp-content/plugins/sociable/images/hackernews.png" title="HackerNews" alt="HackerNews" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://technorati.com/faves?add=http%3A%2F%2Fmobile.davidocs.com%2Fandroid%2Fcomo-anadir-iconos-a-un-listview-en-android%2F" title="Technorati"><img src="http://mobile.davidocs.com/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a>


<br/><br/>

<p>Entradas relacionadas:<ol><li><a href='http://mobile.davidocs.com/android/como-instalar-el-teclado-del-htc-hero-en-el-htc-magic/' rel='bookmark' title='Permanent Link: Cómo instalar el teclado del HTC Hero en el HTC Magic'>Cómo instalar el teclado del HTC Hero en el HTC Magic</a></li>
<li><a href='http://mobile.davidocs.com/android/tratamiento-de-ficheros-xml-con-android/' rel='bookmark' title='Permanent Link: Tratamiento de ficheros XML con Android'>Tratamiento de ficheros XML con Android</a></li>
<li><a href='http://mobile.davidocs.com/android/coleccion-de-iconos-e-imagenes-para-android/' rel='bookmark' title='Permanent Link: Colección de iconos e imágenes para Android'>Colección de iconos e imágenes para Android</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://mobile.davidocs.com/android/como-anadir-iconos-a-un-listview-en-android/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Diseñando la aplicación, uso de TabHost en Android</title>
		<link>http://mobile.davidocs.com/android/disenando-la-aplicacion-uso-de-tabhost-en-android/</link>
		<comments>http://mobile.davidocs.com/android/disenando-la-aplicacion-uso-de-tabhost-en-android/#comments</comments>
		<pubDate>Thu, 30 Jul 2009 10:00:44 +0000</pubDate>
		<dc:creator>David González</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[Activity]]></category>
		<category><![CDATA[TabHost]]></category>

		<guid isPermaLink="false">http://www.tech-xperience.com/mobiledev/?p=101</guid>
		<description><![CDATA[Anteriormente vimos cómo crear nuestra primera aplicación. A partir de ahora seguiremos el proceso de desarrollo de una aplicación, intentando profundizar en los aspectos más importantes desde el punto de vista de un novato en el tema.
Como siempre que se desarrolla una aplicación tenemos que tener en cuenta tanto las funcionalidades como el aspecto gráfico. [...]


Entradas relacionadas:<ol><li><a href='http://mobile.davidocs.com/android/primeros-pasos-con-android/' rel='bookmark' title='Permanent Link: Primeros pasos con Android'>Primeros pasos con Android</a></li>
<li><a href='http://mobile.davidocs.com/android/creando-la-primera-aplicacion-con-android/' rel='bookmark' title='Permanent Link: Creando la primera aplicación con Android'>Creando la primera aplicación con Android</a></li>
<li><a href='http://mobile.davidocs.com/android/ciclo-de-vida-de-una-activity-lifecycle/' rel='bookmark' title='Permanent Link: Ciclo de vida de una Activity (Lifecycle)'>Ciclo de vida de una Activity (Lifecycle)</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p class="dropcap-first">Anteriormente vimos cómo <a href="http://mobile.davidocs.com/android/creando-la-primera-aplicacion-con-android/" target="_blank">crear nuestra primera aplicación</a>. A partir de ahora seguiremos el proceso de desarrollo de una aplicación, intentando profundizar en los aspectos más importantes desde el punto de vista de un novato en el tema.</p>
<p>Como siempre que se desarrolla una aplicación tenemos que tener en cuenta tanto las funcionalidades como el aspecto gráfico. Después de pensar y revisar las <a href="http://developer.android.com/guide/tutorials/views/index.html" target="_blank">opciones gráficas disponibles</a> optaremos por crear una aplicación con pestañas (<a href="http://developer.android.com/reference/android/widget/TabHost.html" target="_blank"><strong>TabHost</strong></a>). <span style="color: #008000;"><span style="color: #000000;"><em> </em>[tweetmeme]<br />
</span></span></p>
<p><span style="color: #008000;"><strong><span style="font-size: medium;">¿Qué es esto?</span></strong></span></p>
<p><span style="color: #008000;"><span style="color: #000000;">Éste tutorial muestra cómo crear una aplicación con 3 pestañas (<a href="http://developer.android.com/reference/android/widget/TabWidget.html" target="_blank"><strong>TabWidget</strong></a>) en un <strong>TabHost</strong>.<br />
</span></span></p>
<p><span style="font-size: medium;"><span style="color: #008000;"><strong>¿Qué voy a aprender?</strong></span></span></p>
<ul>
<li><span style="color: #008000;"><span style="color: #000000;">Utilizar XML para crear el aspecto gráfico de una aplicación.</span></span></li>
<li><span style="color: #008000;"><span style="color: #000000;">Modificar el <em>AndroidManifest</em>.</span></span></li>
<li><span style="color: #008000;"><span style="color: #000000;"> Crear una aplicación con 3 pestañas en las que cada una de ellas tiene su propio XML.</span></span></li>
<li><span style="color: #008000;"><span style="color: #000000;">Guardar la pestaña activa para mostrarla cuando volvamos a abrir la aplicación.<br />
</span></span></li>
<li><span style="color: #008000;"><span style="color: #000000;">Utilizar los recursos <em>Drawable </em>y <em>Strings</em></span></span><span style="color: #008000;"><span style="color: #000000;">.</span></span></li>
</ul>
<p><strong><span style="font-size: medium;"><span style="color: #008000;">¿Cómo quedará?</span></span></strong></p>
<p style="text-align: center;"><strong><span style="font-size: medium;"><span style="color: #008000;"><img class="size-full wp-image-118 aligncenter" title="tuto2-1" src="http://www.tech-xperience.com/mobiledev/wp-content/uploads/2009/07/tuto2-11.jpg" alt="tuto2-1" width="283" height="542" /><br />
</span></span></strong></p>
<p><strong><span style="font-size: medium;"><span style="color: #008000;"><span id="more-101"></span><br />
</span></span></strong></p>
<p><strong><span style="font-size: medium;"><span style="color: #008000;">Pasos a seguir:</span></span></strong></p>
<p><span style="color: #008000;"><span style="color: #000000;">Empezaremos con una visión global de lo que necesitamos. Para empezar necesitamos que nuestra Activity principal extienda la clase <a href="http://developer.android.com/reference/android/app/TabActivity.html" target="_blank">TabActivity</a>. Ésta clase es la que nos permitirá añadir pestañas a nuestra aplicación. La razón por la que utilizamos pestañas es para mostrar los datos y opciones de una manera mucho más limpia, por lo tanto, vamos a intentar hacerlo de la manera más limpia posible.</span></span></p>
<p><span style="color: #008000;"><span style="color: #000000;">Lo primero es crear el XML de la <em>Activity </em>principal que es donde alojaremos nuestras pestañas. Fijaros que el componente principal es un <em>TabHost </em>y dentro de el colocaremos un <em><a href="http://developer.android.com/reference/android/widget/LinearLayout.html" target="_blank">LinearLayout</a> </em>donde colgaremos cada una de las pestañas y un <em><a href="http://developer.android.com/reference/android/widget/FrameLayout.html" target="_blank">FrameLayout</a> </em>donde aparecerá el contenido de cada pestaña. De ésta manera el <em>TabHost </em>es quien se encargará de gestionar el movimiento entre pestañas.</span></span></p>
<p><strong><span style="font-size: medium;"><span style="color: #008000;">main.xml:</span></span></strong></p>
<pre class="brush: xml;">

&lt; ?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;

&lt;tabhost xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
android:id=&quot;@android:id/tabhost&quot;
android:layout_width=&quot;fill_parent&quot;
android:layout_height=&quot;fill_parent&quot;&gt;

&lt;linearlayout android:orientation=&quot;vertical&quot;
android:layout_width=&quot;fill_parent&quot;
android:layout_height=&quot;fill_parent&quot;&gt;

&lt;tabwidget android:id=&quot;@android:id/tabs&quot;
android:layout_width=&quot;fill_parent&quot;
android:background=&quot;#f048&quot;
android:layout_height=&quot;68dip&quot;
android:paddingLeft=&quot;1dip&quot;
android:paddingRight=&quot;1dip&quot;
android:paddingTop=&quot;4dip&quot; /&gt;

&lt;framelayout android:id=&quot;@android:id/tabcontent&quot;
android:layout_width=&quot;fill_parent&quot;
android:layout_height=&quot;0dip&quot;
android:layout_weight=&quot;1&quot; /&gt;

&lt;/linearlayout&gt;

&lt;/tabhost&gt;
</pre>
<p>Para el propósito de éste tutorial no vamos a crear pestañas con muchos contenidos, pero cabe decir que como cada pestaña tiene su propio XML dentre de ellos podríamos poner cualquier componente, como ya veréis en entradas futuras. Por ahora vamos a crear 3 pestañas iguales donde mostraremos un texto diferente en cada una de ellas.</p>
<p><strong><span style="font-size: medium;"><span style="color: #008000;">tab1.xml:</span></span></strong></p>
<pre class="brush: xml;">

&lt; ?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;

&lt;linearlayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
android:id=&quot;@+id/settings&quot;
android:orientation=&quot;vertical&quot;
android:layout_width=&quot;fill_parent&quot;
android:layout_height=&quot;fill_parent&quot;&gt;

&lt;textview android:layout_width=&quot;fill_parent&quot;
android:layout_height=&quot;wrap_content&quot;
android:text=&quot;@string/tab1_content&quot;
/&gt;
&lt;/linearlayout&gt;
</pre>
<p>Como podéis ver en el campo android:text del <em>TextView </em>indicamos que veremos el contenido de la variable <em>tab1_content</em> que se encuentra dentro del recurso <em>string</em>. Dentro de la carpeta <strong>res/values</strong> encontraréis el <em>strings.xml</em>, éste recurso se utiliza para guardar todas las variables de texto constantes de la aplicación. La finalidad del recurso values no se limita simplemente a los string, se pueden crear tantos ficheros como se quiera y guardar los valores que necesiteis: meses de una año, dias de la semana, valores numéricos, etc&#8230;</p>
<p><strong><span style="font-size: medium;"><span style="color: #008000;">strings.xml:</span></span></strong></p>
<pre class="brush: xml;">

&lt; ?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;resources&gt;
&lt;string name=&quot;hello&quot;&gt;Hello World, MainActivity!&lt;/string&gt;
&lt;string name=&quot;app_name&quot;&gt;TabHost - mobiledev&lt;/string&gt;
&lt;string name=&quot;tab1&quot;&gt;Tab 1&lt;/string&gt;
&lt;string name=&quot;tab2&quot;&gt;Tab 2&lt;/string&gt;
&lt;string name=&quot;tab3&quot;&gt;Tab 3&lt;/string&gt;
&lt;string name=&quot;tab1_content&quot;&gt;Esto es el contenido de la pestaña 1&lt;/string&gt;
&lt;string name=&quot;tab2_content&quot;&gt;Esto es el contenido de la pestaña 2&lt;/string&gt;
&lt;string name=&quot;tab3_content&quot;&gt;Esto es el contenido de la pestaña 3&lt;/string&gt;
&lt;/resources&gt;
</pre>
<p>Bien, ya tenemos los XML  creados, ahora sólo falta que la aplicación los muestre. Para ello vamos al código de la Activity principal, desde allí vamos a llamar a 3 funciones que se encargarán de añadir las pestañas al <em>TabHost</em>. También añadiremos el icono a cada pestaña, normalmente se guardan dentro de res/drawables. Ése es el recurso donde se guardan los iconos o imágenes que necesitaremos en la aplicación.</p>
<p><strong><span style="font-size: medium;"><span style="color: #008000;">MainActivity.java:</span></span></strong></p>
<pre class="brush: java;">

/*
* Pestaña 1
*/

private void añadirTab1() {

Intent intent = new Intent(this, Tab1.class);

TabSpec spec = mTabHost.newTabSpec(TAG_TAB_1);
spec.setIndicator(mResources.getString(R.string.tab1), mResources
.getDrawable(R.drawable.tab1));
spec.setContent(intent);

mTabHost.addTab(spec);
}
</pre>
<p>Hemos creado 3 nuevas clases, una para cada pestaña. Hasta el momento tenemos los recursos visuales, hemos añadido las 3 pestañas al TabHost pero falta indicar a cada pestaña que debe mostrar su contenido. Como sólo vamos a mostrar un texto la clase <strong>Tab </strong>sólo extenderá <strong>Activity </strong>(que es la actividad básica de Android), pero no habría problema en extender cualquier otra clase existente.</p>
<p><strong><span style="font-size: medium;"><span style="color: #008000;">Tab1.java:</span></span></strong></p>
<pre class="brush: java;">

package com.mobiledev;

import android.app.Activity;
import android.os.Bundle;

public class Tab1 extends Activity{

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.tab1);
}
}
</pre>
<p>Parece que ya lo tenemos todo, el aspecto visual, las clases que utilizaremos pero falta una última cosa por hacer. Cada vez que añadamos una nueva clase al <strong>Proyecto </strong>debemos indicarselo al <a href="http://developer.android.com/guide/topics/manifest/manifest-intro.html" target="_blank">AndroidManifest</a>. El manifesto provee información esencial sobre la aplicación que el sistema debe tener antes de ejecutar el código de la aplicación, también es el encargado de indicar los permisos que tienen las clases para acceder a las diferentes API. Aquí es donde tenemos que indicar que nuestra aplicación tiene 3 clases más.</p>
<p><strong><span style="font-size: medium;"><span style="color: #008000;">AndroidManifest.xml:</span></span></strong></p>
<pre class="brush: xml;">

&lt; ?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;manifest xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
package=&quot;com.mobiledev&quot;
android:versionCode=&quot;1&quot;
android:versionName=&quot;1.0&quot;&gt;
&lt;application android:icon=&quot;@drawable/icon&quot; android:label=&quot;@string/app_name&quot;&gt;
&lt;activity android:name=&quot;.MainActivity&quot;
android:label=&quot;@string/app_name&quot;&gt;
&lt;intent -filter&gt;
&lt;action android:name=&quot;android.intent.action.MAIN&quot; /&gt;
&lt;category android:name=&quot;android.intent.category.LAUNCHER&quot; /&gt;
&lt;/intent&gt;
&lt;/activity&gt;
&lt;activity android:name=&quot;Tab1&quot; android:label=&quot;@string/tab1&quot;&gt;&lt;/activity&gt;
&lt;activity android:name=&quot;Tab2&quot; android:label=&quot;@string/tab2&quot;&gt;&lt;/activity&gt;
&lt;activity android:name=&quot;Tab3&quot; android:label=&quot;@string/tab3&quot;&gt;&lt;/activity&gt;
&lt;/application&gt;
&lt;uses -sdk android:minSdkVersion=&quot;3&quot; /&gt;
&lt;/manifest&gt;
</pre>
<p>Ahora si, ya estamos listos para ejecutar la aplicación.
</p>
<p style="text-align: center;"><img class="size-full wp-image-119 aligncenter" title="tuto2-1" src="http://www.tech-xperience.com/mobiledev/wp-content/uploads/2009/07/tuto2-12.jpg" alt="tuto2-1" width="282" height="542" /></p>
<p><strong><span style="font-size: medium;"><span style="color: #008000;">Código fuente: </span></span></strong><span style="color: #008000;"><span style="color: #000000;"><em> </em>[tweetmeme]</span></span></p>
<p><table style="border: 1px solid #CCC;" cellpadding="3" width="100%">
  <tr>
    <td width="35">
      <img src="http://mobile.davidocs.com/wp-content/plugins/downloads-manager/img/icons/winrar.gif" alt="http://mobile.davidocs.com/wp-content/plugins/downloads-manager/img/icons/winrar.gif">
    </td>
    <td>
      <b>download:</b> <a href="http://mobile.davidocs.com/?file_id=2">TabHost</a> <small>(53.36KB)</small><br />
      <b>added:</b> 30/10/2009 <br />
      <b>clicks:</b> 367 <br />
      <b>description:</b> Ejemplo de utilización de un TabHost con 3 pestañas, cada pestaña con su propia Activity y XML. <br />
    </td>
  </tr>
</table></p>



Comparte:


	<a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fmobile.davidocs.com%2Fandroid%2Fdisenando-la-aplicacion-uso-de-tabhost-en-android%2F&amp;t=Dise%C3%B1ando%20la%20aplicaci%C3%B3n%2C%20uso%20de%20TabHost%20en%20Android" title="Facebook"><img src="http://mobile.davidocs.com/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://bitacoras.com/anotaciones/http%3A%2F%2Fmobile.davidocs.com%2Fandroid%2Fdisenando-la-aplicacion-uso-de-tabhost-en-android%2F" title="Bitacoras.com"><img src="http://mobile.davidocs.com/wp-content/plugins/sociable/images/bitacoras.png" title="Bitacoras.com" alt="Bitacoras.com" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://meneame.net/submit.php?url=http%3A%2F%2Fmobile.davidocs.com%2Fandroid%2Fdisenando-la-aplicacion-uso-de-tabhost-en-android%2F" title="Meneame"><img src="http://mobile.davidocs.com/wp-content/plugins/sociable/images/meneame.png" title="Meneame" alt="Meneame" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.wikio.it/vote?url=http%3A%2F%2Fmobile.davidocs.com%2Fandroid%2Fdisenando-la-aplicacion-uso-de-tabhost-en-android%2F" title="Wikio IT"><img src="http://mobile.davidocs.com/wp-content/plugins/sociable/images/wikio.png" title="Wikio IT" alt="Wikio IT" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fmobile.davidocs.com%2Fandroid%2Fdisenando-la-aplicacion-uso-de-tabhost-en-android%2F&amp;title=Dise%C3%B1ando%20la%20aplicaci%C3%B3n%2C%20uso%20de%20TabHost%20en%20Android&amp;bodytext=Anteriormente%20vimos%20c%C3%B3mo%20crear%20nuestra%20primera%20aplicaci%C3%B3n.%20A%20partir%20de%20ahora%20seguiremos%20el%20proceso%20de%20desarrollo%20de%20una%20aplicaci%C3%B3n%2C%20intentando%20profundizar%20en%20los%20aspectos%20m%C3%A1s%20importantes%20desde%20el%20punto%20de%20vista%20de%20un%20novato%20en%20el%20tema.%0D%0A%0D%0AComo%20si" title="Digg"><img src="http://mobile.davidocs.com/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fmobile.davidocs.com%2Fandroid%2Fdisenando-la-aplicacion-uso-de-tabhost-en-android%2F&amp;title=Dise%C3%B1ando%20la%20aplicaci%C3%B3n%2C%20uso%20de%20TabHost%20en%20Android&amp;notes=Anteriormente%20vimos%20c%C3%B3mo%20crear%20nuestra%20primera%20aplicaci%C3%B3n.%20A%20partir%20de%20ahora%20seguiremos%20el%20proceso%20de%20desarrollo%20de%20una%20aplicaci%C3%B3n%2C%20intentando%20profundizar%20en%20los%20aspectos%20m%C3%A1s%20importantes%20desde%20el%20punto%20de%20vista%20de%20un%20novato%20en%20el%20tema.%0D%0A%0D%0AComo%20si" title="del.icio.us"><img src="http://mobile.davidocs.com/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.friendfeed.com/share?title=Dise%C3%B1ando%20la%20aplicaci%C3%B3n%2C%20uso%20de%20TabHost%20en%20Android&amp;link=http%3A%2F%2Fmobile.davidocs.com%2Fandroid%2Fdisenando-la-aplicacion-uso-de-tabhost-en-android%2F" title="FriendFeed"><img src="http://mobile.davidocs.com/wp-content/plugins/sociable/images/friendfeed.png" title="FriendFeed" alt="FriendFeed" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://news.ycombinator.com/submitlink?u=http%3A%2F%2Fmobile.davidocs.com%2Fandroid%2Fdisenando-la-aplicacion-uso-de-tabhost-en-android%2F&amp;t=Dise%C3%B1ando%20la%20aplicaci%C3%B3n%2C%20uso%20de%20TabHost%20en%20Android" title="HackerNews"><img src="http://mobile.davidocs.com/wp-content/plugins/sociable/images/hackernews.png" title="HackerNews" alt="HackerNews" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://technorati.com/faves?add=http%3A%2F%2Fmobile.davidocs.com%2Fandroid%2Fdisenando-la-aplicacion-uso-de-tabhost-en-android%2F" title="Technorati"><img src="http://mobile.davidocs.com/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a>


<br/><br/>

<p>Entradas relacionadas:<ol><li><a href='http://mobile.davidocs.com/android/primeros-pasos-con-android/' rel='bookmark' title='Permanent Link: Primeros pasos con Android'>Primeros pasos con Android</a></li>
<li><a href='http://mobile.davidocs.com/android/creando-la-primera-aplicacion-con-android/' rel='bookmark' title='Permanent Link: Creando la primera aplicación con Android'>Creando la primera aplicación con Android</a></li>
<li><a href='http://mobile.davidocs.com/android/ciclo-de-vida-de-una-activity-lifecycle/' rel='bookmark' title='Permanent Link: Ciclo de vida de una Activity (Lifecycle)'>Ciclo de vida de una Activity (Lifecycle)</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://mobile.davidocs.com/android/disenando-la-aplicacion-uso-de-tabhost-en-android/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Ciclo de vida de una Activity (Lifecycle)</title>
		<link>http://mobile.davidocs.com/android/ciclo-de-vida-de-una-activity-lifecycle/</link>
		<comments>http://mobile.davidocs.com/android/ciclo-de-vida-de-una-activity-lifecycle/#comments</comments>
		<pubDate>Wed, 29 Jul 2009 10:20:57 +0000</pubDate>
		<dc:creator>David González</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[Activity]]></category>
		<category><![CDATA[Lifecycle]]></category>

		<guid isPermaLink="false">http://www.tech-xperience.com/mobiledev/?p=57</guid>
		<description><![CDATA[Vamos a hablar del ciclo de vida de las Activity y de cómo influyen en la ejecución de nuestra aplicación. A primera vista no parece algo muy complicado aunque es muy necesario comprender bien éste ciclo para poder aprovecharnos de las posibilidades que nos ofrece. [tweetmeme]
Toda Activity sigue un ciclo, el paso entre ésos estados [...]


Entradas relacionadas:<ol><li><a href='http://mobile.davidocs.com/android/disenando-la-aplicacion-uso-de-tabhost-en-android/' rel='bookmark' title='Permanent Link: Diseñando la aplicación, uso de TabHost en Android'>Diseñando la aplicación, uso de TabHost en Android</a></li>
<li><a href='http://mobile.davidocs.com/android/creando-la-primera-aplicacion-con-android/' rel='bookmark' title='Permanent Link: Creando la primera aplicación con Android'>Creando la primera aplicación con Android</a></li>
<li><a href='http://mobile.davidocs.com/android/primeros-pasos-con-android/' rel='bookmark' title='Permanent Link: Primeros pasos con Android'>Primeros pasos con Android</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p class="dropcap-first">Vamos a hablar del ciclo de vida de las <em>Activity </em>y de cómo influyen en la ejecución de nuestra aplicación. A primera vista no parece algo muy complicado aunque es muy necesario comprender bien éste ciclo para poder aprovecharnos de las posibilidades que nos ofrece. [tweetmeme]</p>
<p>Toda <em>Activity </em>sigue un ciclo, el paso entre ésos estados se pueden deber a la ejecución de código o a la <strong>intervención del usuario</strong>. Como veremos a continuación, hay estados destinados a realizar algunas acciones y algunas que, simplemente, no usaremos nunca. Cabe decir que, pese a que no introduzcamos nada de código en esos estados, la <em>Activity </em>sigue pasando por ellos.</p>
<p><img class="alignnone size-full wp-image-58" title="activity_lifecycle" src="http://www.tech-xperience.com/mobiledev/wp-content/uploads/2009/07/activity_lifecycle.png" alt="activity_lifecycle" width="545" height="711" /></p>
<p><span id="more-57"></span></p>
<p>Una <em>Activity </em>es una única y focalizada cosa que el usuario puede hacer. Casi todas las <em>Activity </em>interactuan con el usuario asi que ellas mismas se encargan de crear una ventana para colocar la UI. Android maneja las <em>Activity </em>creadas<em> </em><strong>como una pila</strong>, cuando una nueva <em>Activity </em>se crea, se coloca en lo más alto de la pila y se convierte en la <em>Activity </em>en curso &#8211; la <em>Activity </em>anterior permanece justo debajo y no volverá al frente hasta que la nueva <em>Activity </em>acabe.</p>
<p>Veamos cada estado más detalladamente:</p>
<table border="2" width="85%" frame="hsides" rules="rows" align="center">
<thead>
<tr>
<th colspan="3">Estado</th>
<th>Descripción</th>
<th>Abortable?</th>
<th>Siguiente</th>
</tr>
</thead>
<tbody>
<tr>
<th colspan="3" align="left"><a href="http://developer.android.com/reference/android/app/Activity.html#onCreate%28android.os.Bundle%29">onCreate()</a></th>
<td>Se ejecuta cuando se crea la Activity por primera vez. Aquí es donde se deberían crear views, linkar datos a listas, en definitiva el proceso de inicialización de nuestra aplicación.</td>
<td align="center">No</td>
<td align="center"><code>onStart()</code></td>
</tr>
<tr>
<td style="border-left: medium none; border-right: medium none;" rowspan="5"></td>
<th colspan="2" align="left"><a href="http://developer.android.com/reference/android/app/Activity.html#onRestart%28%29">onRestart()</a></th>
<td>Se ejecuta cuando la aplicación se ha cerrado y se va a ejecutar nuevamente.</td>
<td align="center">No</td>
<td align="center"><code>onStart()</code></td>
</tr>
<tr>
<th colspan="2" align="left"><a href="http://developer.android.com/reference/android/app/Activity.html#onStart%28%29">onStart()</a></th>
<td>Se ejecuta cuando al aplicación aparece visible para el usuario. Si la aplicación es un proceso en background el siguiente estado es onStop(), si la aplicación se ejecuta en foreground el siguiente método es onResume().</td>
<td align="center">No</td>
<td align="center"><code>onResume()</code> o <code>onStop()</code></td>
</tr>
<tr>
<td style="border-left: medium none;" rowspan="2"></td>
<th align="left"><a href="http://developer.android.com/reference/android/app/Activity.html#onResume%28%29">onResume()</a></th>
<td>Se ejecuta cuando la Activity interactua con el usuario. En éste punto la Activity está en la cima de la pila.</td>
<td align="center">No</td>
<td align="center"><code>onPause()</code></td>
</tr>
<tr>
<th align="left"><a href="http://developer.android.com/reference/android/app/Activity.html#onPause%28%29">onPause()</a></th>
<td>Se ejecuta cuando el sistema está a punto de continuar una Activity anterior. Se utiliza típicamente para guardar datos que no se han grabado anteriormente, parar animaciones y otras acciones que consuman CPU. Seguida por <code>onResume()</code> si la actividad vuelve a primer plano o <code>onStop()</code> si es invisible para el usuario.</td>
<td align="center"><span style="color: #800000;"><strong>Si</strong></span></td>
<td align="center"><code>onResume()</code> o<br />
<code>onStop()</code></td>
</tr>
<tr>
<th colspan="2" align="left"><a href="http://developer.android.com/reference/android/app/Activity.html#onStop%28%29">onStop()</a></th>
<td>Se ejecuta cuando la Activity deja de ser visible al usuario, porque otra Activity ha continuado y pasa a un lugar más prioritario de la pila.  Puede ocurrir porque una nueva Activity ha sido creada, una Activity ya creada pasa a primer plano o ésta está siendo destruida. El siguiente método será <code>onRestart() is la Activity vuelve a interaccionar con el usuario o por</code> <code>onDestroy()</code> si la Activity será destruida.</td>
<td align="center"><span style="color: #800000;"><strong>Si</strong></span></td>
<td align="center"><code>onRestart()</code> o<br />
<code>onDestroy()</code></td>
</tr>
<tr>
<th colspan="3" align="left"><a href="http://developer.android.com/reference/android/app/Activity.html#onDestroy%28%29">onDestroy()</a></th>
<td>Última llamada antes de detruir la Activity. Puede ocurrir porque la actividad está acabando (llamada a <a href="http://developer.android.com/reference/android/app/Activity.html#finish%28%29">finish()</a> ) , o porque el sistema destruirá la instancia para guardar espacio. Se puede distinguir esos escenarios con el métido <a href="http://developer.android.com/reference/android/app/Activity.html#isFinishing%28%29">isFinishing()</a>.</td>
<td align="center"><span style="color: #800000;"><strong>Si</strong></span></td>
<td align="center"><em>nada</em></td>
</tr>
</tbody>
</table>
<p>Para más información: <a href="http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle" target="_blank">Android Developers</a> [tweetmeme]</p>



Comparte:


	<a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fmobile.davidocs.com%2Fandroid%2Fciclo-de-vida-de-una-activity-lifecycle%2F&amp;t=Ciclo%20de%20vida%20de%20una%20Activity%20%28Lifecycle%29" title="Facebook"><img src="http://mobile.davidocs.com/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://bitacoras.com/anotaciones/http%3A%2F%2Fmobile.davidocs.com%2Fandroid%2Fciclo-de-vida-de-una-activity-lifecycle%2F" title="Bitacoras.com"><img src="http://mobile.davidocs.com/wp-content/plugins/sociable/images/bitacoras.png" title="Bitacoras.com" alt="Bitacoras.com" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://meneame.net/submit.php?url=http%3A%2F%2Fmobile.davidocs.com%2Fandroid%2Fciclo-de-vida-de-una-activity-lifecycle%2F" title="Meneame"><img src="http://mobile.davidocs.com/wp-content/plugins/sociable/images/meneame.png" title="Meneame" alt="Meneame" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.wikio.it/vote?url=http%3A%2F%2Fmobile.davidocs.com%2Fandroid%2Fciclo-de-vida-de-una-activity-lifecycle%2F" title="Wikio IT"><img src="http://mobile.davidocs.com/wp-content/plugins/sociable/images/wikio.png" title="Wikio IT" alt="Wikio IT" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fmobile.davidocs.com%2Fandroid%2Fciclo-de-vida-de-una-activity-lifecycle%2F&amp;title=Ciclo%20de%20vida%20de%20una%20Activity%20%28Lifecycle%29&amp;bodytext=Vamos%20a%20hablar%20del%20ciclo%20de%20vida%20de%20las%20Activity%20y%20de%20c%C3%B3mo%20influyen%20en%20la%20ejecuci%C3%B3n%20de%20nuestra%20aplicaci%C3%B3n.%20A%20primera%20vista%20no%20parece%20algo%20muy%20complicado%20aunque%20es%20muy%20necesario%20comprender%20bien%20%C3%A9ste%20ciclo%20para%20poder%20aprovecharnos%20de%20las%20posibilida" title="Digg"><img src="http://mobile.davidocs.com/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fmobile.davidocs.com%2Fandroid%2Fciclo-de-vida-de-una-activity-lifecycle%2F&amp;title=Ciclo%20de%20vida%20de%20una%20Activity%20%28Lifecycle%29&amp;notes=Vamos%20a%20hablar%20del%20ciclo%20de%20vida%20de%20las%20Activity%20y%20de%20c%C3%B3mo%20influyen%20en%20la%20ejecuci%C3%B3n%20de%20nuestra%20aplicaci%C3%B3n.%20A%20primera%20vista%20no%20parece%20algo%20muy%20complicado%20aunque%20es%20muy%20necesario%20comprender%20bien%20%C3%A9ste%20ciclo%20para%20poder%20aprovecharnos%20de%20las%20posibilida" title="del.icio.us"><img src="http://mobile.davidocs.com/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.friendfeed.com/share?title=Ciclo%20de%20vida%20de%20una%20Activity%20%28Lifecycle%29&amp;link=http%3A%2F%2Fmobile.davidocs.com%2Fandroid%2Fciclo-de-vida-de-una-activity-lifecycle%2F" title="FriendFeed"><img src="http://mobile.davidocs.com/wp-content/plugins/sociable/images/friendfeed.png" title="FriendFeed" alt="FriendFeed" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://news.ycombinator.com/submitlink?u=http%3A%2F%2Fmobile.davidocs.com%2Fandroid%2Fciclo-de-vida-de-una-activity-lifecycle%2F&amp;t=Ciclo%20de%20vida%20de%20una%20Activity%20%28Lifecycle%29" title="HackerNews"><img src="http://mobile.davidocs.com/wp-content/plugins/sociable/images/hackernews.png" title="HackerNews" alt="HackerNews" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://technorati.com/faves?add=http%3A%2F%2Fmobile.davidocs.com%2Fandroid%2Fciclo-de-vida-de-una-activity-lifecycle%2F" title="Technorati"><img src="http://mobile.davidocs.com/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a>


<br/><br/>

<p>Entradas relacionadas:<ol><li><a href='http://mobile.davidocs.com/android/disenando-la-aplicacion-uso-de-tabhost-en-android/' rel='bookmark' title='Permanent Link: Diseñando la aplicación, uso de TabHost en Android'>Diseñando la aplicación, uso de TabHost en Android</a></li>
<li><a href='http://mobile.davidocs.com/android/creando-la-primera-aplicacion-con-android/' rel='bookmark' title='Permanent Link: Creando la primera aplicación con Android'>Creando la primera aplicación con Android</a></li>
<li><a href='http://mobile.davidocs.com/android/primeros-pasos-con-android/' rel='bookmark' title='Permanent Link: Primeros pasos con Android'>Primeros pasos con Android</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://mobile.davidocs.com/android/ciclo-de-vida-de-una-activity-lifecycle/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Creando la primera aplicación con Android</title>
		<link>http://mobile.davidocs.com/android/creando-la-primera-aplicacion-con-android/</link>
		<comments>http://mobile.davidocs.com/android/creando-la-primera-aplicacion-con-android/#comments</comments>
		<pubDate>Tue, 28 Jul 2009 10:24:55 +0000</pubDate>
		<dc:creator>David González</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[HelloWorld]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://www.tech-xperience.com/mobiledev/?p=55</guid>
		<description><![CDATA[Antes de empezar a crear nuestra primera aplicación tenemos que asegurarnos de haber seguido los pasos previos para la instalación del SDK y el entorno de desarrollo. Una vez tenemos hemos completado esos pasos ya podemos comenzara a desarrollar.
¿Qué es esto?  
Este tutorial muestra cómo crear la versión Android del archiconocido HelloWorld [tweetmeme]

¿Qué voy [...]


Entradas relacionadas:<ol><li><a href='http://mobile.davidocs.com/android/disenando-la-aplicacion-uso-de-tabhost-en-android/' rel='bookmark' title='Permanent Link: Diseñando la aplicación, uso de TabHost en Android'>Diseñando la aplicación, uso de TabHost en Android</a></li>
<li><a href='http://mobile.davidocs.com/android/a-primera-vista-andando-que-es-gerundio/' rel='bookmark' title='Permanent Link: A primera vista: AndAndo, que es gerundio'>A primera vista: AndAndo, que es gerundio</a></li>
<li><a href='http://mobile.davidocs.com/android/ciclo-de-vida-de-una-activity-lifecycle/' rel='bookmark' title='Permanent Link: Ciclo de vida de una Activity (Lifecycle)'>Ciclo de vida de una Activity (Lifecycle)</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p class="dropcap-first">Antes de empezar a crear nuestra primera aplicación tenemos que asegurarnos de haber seguido los <a href="http://mobile.davidocs.com/android/primeros-pasos-con-android//" target="_blank">pasos previos</a> para la instalación del SDK y el entorno de desarrollo. Una vez tenemos hemos completado esos pasos ya podemos comenzara a desarrollar.</p>
<p><span style="color: #008000;"><strong><span style="font-size: medium;">¿Qué es esto?</span></strong> <span style="color: #000000;"> </span></span></p>
<p><span style="color: #008000;"><span style="color: #000000;">Este tutorial muestra cómo crear la versión Android del archiconocido <em>HelloWorld </em>[tweetmeme]</span><br />
</span></p>
<p><span style="font-size: medium;"><span style="color: #008000;"><strong>¿Qué voy a aprender?</strong> </span></span></p>
<p>Crear una Android-Project en Eclipse, modificar código y crear una Run-Configuration.</p>
<p><strong><span style="font-size: medium;"><span style="color: #008000;">¿Cómo quedará?</span></span></strong></p>
<p style="text-align: left;"><span style="color: #008000;"><img class="size-full wp-image-63 aligncenter" title="tuto1-8" src="http://www.tech-xperience.com/mobiledev/wp-content/uploads/2009/07/tuto1-8.jpg" alt="tuto1-8" width="344" height="549" /></span></p>
<p style="text-align: left;">
<p style="text-align: left;"><span style="color: #008000;"><span id="more-55"></span><br />
</span></p>
<p><strong><span style="font-size: medium;"><span style="color: #008000;">Pasos a seguir:</span></span></strong></p>
<p><span style="color: #008000;"><span style="color: #000000;"><strong>1-</strong> Lo primero que tenemos que hacer es crear un nuevo Proyecto.</span></span></p>
<p><span style="color: #008000;"><span style="color: #000000;"><img class="alignnone size-full wp-image-64" title="tuto1-1" src="http://www.tech-xperience.com/mobiledev/wp-content/uploads/2009/07/tuto1-1.jpg" alt="tuto1-1" width="531" height="146" /><br />
</span></span></p>
<p><strong>2</strong>- Rellenamos el formulario, aqui tenéis una pequeña descripcion de los campos:</p>
<ul>
<li><em>Project Name</em></li>
</ul>
<p><strong>Nombre </strong>del Proyecto de Eclipse &#8211; nombre del directorio que contendrá los archivos del proyecto.</p>
<ul>
<li><em>Application Name</em></li>
</ul>
<p><strong>Título </strong>para tu aplicación &#8211; es el nombre que aparecerá en los menús del dispositivo Android</p>
<ul>
<li><em>Package Name</em></li>
</ul>
<p>Es el <strong>package namespace</strong> (sigue las mismas reglas que los paquetes Java) donde residirá el código fuente. La Activity principal se creará ahí también. El nombre del package debe ser único entre todos los package instalados en el sistema Android; por esa razón, es muy importante utilizar un estándar para el paquete de aplicaciones.</p>
<ul>
<li><em>Create Activity</em></li>
</ul>
<p>Este es el <strong>nombre de la clase</strong> que se creará. Será una subclase de la clase Activity, una Activity es simplemente una clase que puede ejecutarse y realizar acciones. Se puede crear una interfaz de usuario si lo desea, pero no es necesario. Como se indica en la casilla de verificación, esto es opcional, sino una actividad casi siempre se utiliza como base para una solicitud.</p>
<ul>
<li><em>Min SDK Version </em></li>
</ul>
<p>Este valor especifica el <strong>nivel mínimo requerido por la API</strong> de su aplicación. El nivel mínimo de la API tiene que coincidir con el nivel de la API del dispositivo virutal que utilizemos (más adelante veremos como crear uno). Si una aplicación necesita un API de nivel superior al nivel del dispositivo, la aplicación no se instalará.</p>
<p><strong>3</strong>- Una vez creado el Proyecto éste es el código de la aplicación:</p>
<p style="text-align: left;"><img class="size-full wp-image-66 aligncenter" title="tuto1-3" src="http://www.tech-xperience.com/mobiledev/wp-content/uploads/2009/07/tuto1-3.jpg" alt="tuto1-3" width="215" height="225" /></p>
<p style="text-align: left;"><strong>4</strong>- El próximo paso es crear un <strong>dispositivo virtual </strong>donde poder ejecutar las aplicaciones que desarrollemos.</p>
<p style="text-align: left;"><img class="alignnone size-full wp-image-67" title="tuto1-4" src="http://www.tech-xperience.com/mobiledev/wp-content/uploads/2009/07/tuto1-4.jpg" alt="tuto1-4" width="522" height="495" /></p>
<p><strong>5</strong> &#8211; Ahora si, ya estamos preparados para meterle mano al código.</p>
<p>Vamos a modificar el método <em>onCreate</em> para que muestre un texto por pantalla. El método<em> onCreate</em> es lo primero que se ejecuta de una Activity, para éste tutorial no nos extenderemos con el ciclo de vida de una <em>Activity </em>pero si lo haremos en la siguiente entrada.  La clase os debería quedar de la siguiente manera:</p>
<pre class="brush: java;">

package com.mobiledev.Hello_World;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class Hello_World extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//Para mostrar un texto utilizamos un TextView
TextView tv = new TextView(this);
//Añadimos algo de texto al nuevo control
tv.setText(&quot;Hello World - mi primera aplicación&quot; );
//Le decimos a la aplicación que muestre el TextView
setContentView(tv);
}
}
</pre>
<p><strong>6</strong>- Lo único que nos queda ya es ejecutar el código y ver el resultado en el emulador. Buscamos el botón de <strong>Run Configurations</strong> en el menú de Eclipse y al darle aparece lo siguiente.</p>
<p><img class="alignnone size-full wp-image-68" title="tuto1-5" src="http://www.tech-xperience.com/mobiledev/wp-content/uploads/2009/07/tuto1-5.jpg" alt="tuto1-5" width="585" height="467" /></p>
<p>En la pestaña de target seleccionamos el <strong>emulador</strong> que hemos creado anteriormente.</p>
<p><img class="alignnone size-full wp-image-69" title="tuto1-6" src="http://www.tech-xperience.com/mobiledev/wp-content/uploads/2009/07/tuto1-6.jpg" alt="tuto1-6" width="591" height="471" /></p>
<p><strong>7</strong>- Ejecutamos la aplicacion. Mientras vemos como se carga Android podemos aprovechar para mirar a la <strong>consola </strong>de Eclipse y empezar a familiarizarnos con los mensajes de debug que van apareciendo. Una vez cargado se ejecutará la aplicación.</p>
<p style="text-align: center;"><span style="color: #008000;"><img class="alignnone size-full wp-image-63" title="tuto1-8" src="http://www.tech-xperience.com/mobiledev/wp-content/uploads/2009/07/tuto1-8.jpg" alt="tuto1-8" width="346" height="553" /><br />
</span></p>
<p><strong><span style="font-size: medium;"><span style="color: #008000;">Código fuente: </span></span></strong><span style="color: #008000;"><span style="color: #000000;"><em> </em>[tweetmeme]</span></span></p>
<p><table style="border: 1px solid #CCC;" cellpadding="3" width="100%">
  <tr>
    <td width="35">
      <img src="http://mobile.davidocs.com/wp-content/plugins/downloads-manager/img/icons/winrar.gif" alt="http://mobile.davidocs.com/wp-content/plugins/downloads-manager/img/icons/winrar.gif">
    </td>
    <td>
      <b>download:</b> <a href="http://mobile.davidocs.com/?file_id=1">HelloWorld</a> <small>(22.42KB)</small><br />
      <b>added:</b> 28/07/2009 <br />
      <b>clicks:</b> 187 <br />
      <b>description:</b> Primera aplicación con Android <br />
    </td>
  </tr>
</table></p>



Comparte:


	<a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fmobile.davidocs.com%2Fandroid%2Fcreando-la-primera-aplicacion-con-android%2F&amp;t=Creando%20la%20primera%20aplicaci%C3%B3n%20con%20Android" title="Facebook"><img src="http://mobile.davidocs.com/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://bitacoras.com/anotaciones/http%3A%2F%2Fmobile.davidocs.com%2Fandroid%2Fcreando-la-primera-aplicacion-con-android%2F" title="Bitacoras.com"><img src="http://mobile.davidocs.com/wp-content/plugins/sociable/images/bitacoras.png" title="Bitacoras.com" alt="Bitacoras.com" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://meneame.net/submit.php?url=http%3A%2F%2Fmobile.davidocs.com%2Fandroid%2Fcreando-la-primera-aplicacion-con-android%2F" title="Meneame"><img src="http://mobile.davidocs.com/wp-content/plugins/sociable/images/meneame.png" title="Meneame" alt="Meneame" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.wikio.it/vote?url=http%3A%2F%2Fmobile.davidocs.com%2Fandroid%2Fcreando-la-primera-aplicacion-con-android%2F" title="Wikio IT"><img src="http://mobile.davidocs.com/wp-content/plugins/sociable/images/wikio.png" title="Wikio IT" alt="Wikio IT" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fmobile.davidocs.com%2Fandroid%2Fcreando-la-primera-aplicacion-con-android%2F&amp;title=Creando%20la%20primera%20aplicaci%C3%B3n%20con%20Android&amp;bodytext=Antes%20de%20empezar%20a%20crear%20nuestra%20primera%20aplicaci%C3%B3n%20tenemos%20que%20asegurarnos%20de%20haber%20seguido%20los%20pasos%20previos%20para%20la%20instalaci%C3%B3n%20del%20SDK%20y%20el%20entorno%20de%20desarrollo.%20Una%20vez%20tenemos%20hemos%20completado%20esos%20pasos%20ya%20podemos%20comenzara%20a%20desarrollar.%0D%0A" title="Digg"><img src="http://mobile.davidocs.com/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fmobile.davidocs.com%2Fandroid%2Fcreando-la-primera-aplicacion-con-android%2F&amp;title=Creando%20la%20primera%20aplicaci%C3%B3n%20con%20Android&amp;notes=Antes%20de%20empezar%20a%20crear%20nuestra%20primera%20aplicaci%C3%B3n%20tenemos%20que%20asegurarnos%20de%20haber%20seguido%20los%20pasos%20previos%20para%20la%20instalaci%C3%B3n%20del%20SDK%20y%20el%20entorno%20de%20desarrollo.%20Una%20vez%20tenemos%20hemos%20completado%20esos%20pasos%20ya%20podemos%20comenzara%20a%20desarrollar.%0D%0A" title="del.icio.us"><img src="http://mobile.davidocs.com/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.friendfeed.com/share?title=Creando%20la%20primera%20aplicaci%C3%B3n%20con%20Android&amp;link=http%3A%2F%2Fmobile.davidocs.com%2Fandroid%2Fcreando-la-primera-aplicacion-con-android%2F" title="FriendFeed"><img src="http://mobile.davidocs.com/wp-content/plugins/sociable/images/friendfeed.png" title="FriendFeed" alt="FriendFeed" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://news.ycombinator.com/submitlink?u=http%3A%2F%2Fmobile.davidocs.com%2Fandroid%2Fcreando-la-primera-aplicacion-con-android%2F&amp;t=Creando%20la%20primera%20aplicaci%C3%B3n%20con%20Android" title="HackerNews"><img src="http://mobile.davidocs.com/wp-content/plugins/sociable/images/hackernews.png" title="HackerNews" alt="HackerNews" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://technorati.com/faves?add=http%3A%2F%2Fmobile.davidocs.com%2Fandroid%2Fcreando-la-primera-aplicacion-con-android%2F" title="Technorati"><img src="http://mobile.davidocs.com/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a>


<br/><br/>

<p>Entradas relacionadas:<ol><li><a href='http://mobile.davidocs.com/android/disenando-la-aplicacion-uso-de-tabhost-en-android/' rel='bookmark' title='Permanent Link: Diseñando la aplicación, uso de TabHost en Android'>Diseñando la aplicación, uso de TabHost en Android</a></li>
<li><a href='http://mobile.davidocs.com/android/a-primera-vista-andando-que-es-gerundio/' rel='bookmark' title='Permanent Link: A primera vista: AndAndo, que es gerundio'>A primera vista: AndAndo, que es gerundio</a></li>
<li><a href='http://mobile.davidocs.com/android/ciclo-de-vida-de-una-activity-lifecycle/' rel='bookmark' title='Permanent Link: Ciclo de vida de una Activity (Lifecycle)'>Ciclo de vida de una Activity (Lifecycle)</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://mobile.davidocs.com/android/creando-la-primera-aplicacion-con-android/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Primeros pasos con Android</title>
		<link>http://mobile.davidocs.com/android/primeros-pasos-con-android/</link>
		<comments>http://mobile.davidocs.com/android/primeros-pasos-con-android/#comments</comments>
		<pubDate>Mon, 27 Jul 2009 13:51:41 +0000</pubDate>
		<dc:creator>David González</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[Activity]]></category>
		<category><![CDATA[TabHost]]></category>

		<guid isPermaLink="false">http://www.tech-xperience.com/mobiledev/?p=30</guid>
		<description><![CDATA[Preparándose para la Instalación
Vamos a empezar la andadura en el desarrollo con Android, antes de nada lo primero que debemos hacer revisar los Requisitos del Sistema. Parace muy trivial pero nunca está de más.
A la hora de desarrollar podemos utilizar diferentes entornos IDE, hasta el momento la mejor combinación que se puede recomendar es Eclipse [...]


Entradas relacionadas:<ol><li><a href='http://mobile.davidocs.com/android/disenando-la-aplicacion-uso-de-tabhost-en-android/' rel='bookmark' title='Permanent Link: Diseñando la aplicación, uso de TabHost en Android'>Diseñando la aplicación, uso de TabHost en Android</a></li>
<li><a href='http://mobile.davidocs.com/android/como-instalar-el-teclado-del-htc-hero-en-el-htc-magic/' rel='bookmark' title='Permanent Link: Cómo instalar el teclado del HTC Hero en el HTC Magic'>Cómo instalar el teclado del HTC Hero en el HTC Magic</a></li>
<li><a href='http://mobile.davidocs.com/android/creando-la-primera-aplicacion-con-android/' rel='bookmark' title='Permanent Link: Creando la primera aplicación con Android'>Creando la primera aplicación con Android</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p class="dropcap-first"><strong>Preparándose para la Instalación</strong></p>
<p>Vamos a empezar la andadura en el desarrollo con Android, antes de nada lo primero que debemos hacer revisar los <a href="http://developer.android.com/sdk/1.5_r3/requirements.html" target="_blank">Requisitos del Sistema</a>. Parace muy trivial pero nunca está de más.</p>
<p>A la hora de desarrollar podemos utilizar diferentes entornos IDE, hasta el momento la mejor combinación que se puede recomendar es Eclipse + Android D</p>
<p>evelopment Tools (ADT). Éste último componente es el plugin que se encarga de añadir a Eclipse las funcionalidades necesarias para el desarrollo de aplicaciones Android. Si necesitas descargar Eclispe puedes hacerlo desde aqui: (Se recomienda la version Java o RCP) [tweetmeme]</p>
<p style="margin-left: 2em;"><a href="http://www.eclipse.org/downloads/">http://www.eclipse.org/</a></p>
<p style="text-align: center;"><img class="size-full wp-image-37 aligncenter" title="eclipse_logo_30" src="http://www.tech-xperience.com/mobiledev/wp-content/uploads/2009/07/eclipse_logo_30.gif" alt="eclipse_logo_30" width="500" height="330" /></p>
<p><span id="more-30"></span></p>
<p><strong>Instalando el SDK</strong></p>
<p>Antes de instalar el SDK hay que descargarlo, en <a href="http://developer.android.com/sdk/1.5_r3/index.html" target="_blank">éste</a> en enlace encontraréis el archivo comprmido.</p>
<p>Una vez descargado el archivo descomprimirlo a una carpeta, para poder empezar a utilizarlo sólo queda configurar las rutas y añadir el plugin para Eclipse.</p>
<ul>
<li>En Linux, edita el archivo <code>~/.bash_profile</code> o <code>~/.bashrc</code>.  Buca una línea que establece la variable de entorno PATH y añade la ruta completa del directorio tools/ a la misma. Si no aparece una línea de ajuste de la ruta, puedes añadir una:
<ul><code>export PATH=${PATH}:<em>&lt;directorio_sdk&gt;</em>/tools</code></ul>
</li>
<li>En un Mac, busca el arhivo <code>.bash_profile</code> en tu directorio home y haz lo mismo que en Linux. Puedes crear el archivo <code>.bash_profile</code> si todavia no tienes uno configurado en tu máquina.</li>
<li>En Windows, boton derecho en Mi Pc, selecciona Propiedades.     En la pestaña de Avanzado haz click en Variables de Sistema, y en el diálogo que aparece haz doble-click en Path (debajo de Variables del Sistema). Añade el path absoluto al directorio <code>tools/</code>.</li>
</ul>
<p>Cabe destacar que si en un futuro quieres actualizar la versión del SDK hay que volver a configurar el path al directorio tools del nuevo SDK y substituirlo por el anterior.</p>
<p><strong>Instalando el plugin ADT para Eclipse</strong></p>
<table style="font-size: 100%;" border="0">
<tbody>
<tr>
<th>Eclipse 3.3 (Europa)</th>
<th>Eclipse 3.4 (Ganymede)</th>
</tr>
<tr>
<td width="45%"><!-- 3.3 steps --></p>
<ol>
<li>Arranca Eclipse, selecciona <strong>Help</strong> &gt; <strong>Software Updates</strong> &gt; <strong>Find and Install&#8230;</strong>.</li>
<li>En el diálogo que aparece, selecciona <strong>Search for new features to install</strong> y haz en click <strong>Next</strong>.</li>
<li>Click <strong>New Remote Site</strong>.</li>
<li>En el cuadro de diálogo que aparece, introduce un nombre para el sitio remoto (e.g. &#8220;Android Plugin&#8221;) e introduce la URL:
<pre>http://dl-ssl.google.com/android/eclipse/</pre>
<p>Click en <strong>OK</strong>.</li>
<li>Ahora debe ver el nuevo sitio añadido a la lista de búsqueda (y comprobado). Haga clic en <strong>Finish</strong>.</li>
<li>En el subsiguiente cuadro de diálogo Resultados de la búsqueda, seleccione la casilla de verificación para el &#8220;Android Plugin&#8221;. Esto selecciona el anidados herramientas: &#8220;Android DDMS&#8221; y &#8220;Herramientas de Desarrollo Android&#8221;. Haga clic en <strong>Next</strong>.</li>
<li>Lee y acepta la licencia y haga click en <strong>Next</strong>.</li>
<li>En la siguiente ventana de instalación, haga clic en <strong>Finish</strong>.</li>
<li>El plugin ADT no está firmado digitalmente. Aceptar la instalación de todos modos, haga clic en <strong>Install All</strong>.</li>
<li>Reinicia Eclipse.</li>
</ol>
</td>
<td><!-- 3.4 steps --></p>
<ol>
<li>IniciaEclipse, selcciona <strong>Help</strong> &gt; <strong>Software Updates&#8230;</strong>.</li>
<li>En el cuadro de diálogo que aparece, haga clic en la pestaña de <strong>Available Software</strong>.</li>
<li>Click en <strong>Add Site&#8230;</strong></li>
<li>Intriduce la URL:
<pre>http://dl-ssl.google.com/android/eclipse/</pre>
<p>Click en <strong>OK</strong>.</li>
<li>De vuelta en Available Software , debería ver el plugin de la lista de la URL, con &#8220;Developer Tools&#8221; anidado dentro de él. Seleccione la casilla que aparece junto a &#8220;Developer Tools&#8221;y haga clic en <strong>Install&#8230;</strong></li>
<li> En la ventana de instalación posterior, &#8220;Android DDMS&#8221; y &#8220;Android Development Tools&#8221; deberían estar marcados. Haz clic en <strong>Next</strong>.</li>
<li>Lee y acepta la licencia y haga click en <strong>Finish</strong>.</li>
<li>Reinicia Eclipse.</li>
</ol>
</td>
</tr>
</tbody>
</table>
<p>Ahora modifica las preferencias de Eclipse para apuntar al directorio del Android SDK:</p>
<ol>
<li>Selecciona <strong>Window</strong> &gt; <strong>Preferences&#8230;</strong> para abrir el panel de Preferencias (Mac: <strong>Eclipse</strong> &gt; <strong>Preferences</strong>).</li>
<li>Selecciona <strong>Android</strong> en el panel izquierdo.</li>
<li>En la parte de <em>SDK Location</em>, haz click en <strong>Browse&#8230;</strong> y busca el directorio del SDK.</li>
<li>Click en <strong>Apply</strong> y <strong>OK</strong>.</li>
</ol>
<p>Llegados a éste punto ya estamos preparados para empezar a desarrollar, en la siguiente entrada veremos un ejemplo del clásico &#8220;Hello World&#8221; para empezar a familiarizarnos con el lenguaje.</p>



Comparte:


	<a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fmobile.davidocs.com%2Fandroid%2Fprimeros-pasos-con-android%2F&amp;t=Primeros%20pasos%20con%20Android" title="Facebook"><img src="http://mobile.davidocs.com/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://bitacoras.com/anotaciones/http%3A%2F%2Fmobile.davidocs.com%2Fandroid%2Fprimeros-pasos-con-android%2F" title="Bitacoras.com"><img src="http://mobile.davidocs.com/wp-content/plugins/sociable/images/bitacoras.png" title="Bitacoras.com" alt="Bitacoras.com" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://meneame.net/submit.php?url=http%3A%2F%2Fmobile.davidocs.com%2Fandroid%2Fprimeros-pasos-con-android%2F" title="Meneame"><img src="http://mobile.davidocs.com/wp-content/plugins/sociable/images/meneame.png" title="Meneame" alt="Meneame" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.wikio.it/vote?url=http%3A%2F%2Fmobile.davidocs.com%2Fandroid%2Fprimeros-pasos-con-android%2F" title="Wikio IT"><img src="http://mobile.davidocs.com/wp-content/plugins/sociable/images/wikio.png" title="Wikio IT" alt="Wikio IT" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fmobile.davidocs.com%2Fandroid%2Fprimeros-pasos-con-android%2F&amp;title=Primeros%20pasos%20con%20Android&amp;bodytext=Prepar%C3%A1ndose%20para%20la%20Instalaci%C3%B3n%0D%0A%0D%0AVamos%20a%20empezar%20la%20andadura%20en%20el%20desarrollo%20con%20Android%2C%20antes%20de%20nada%20lo%20primero%20que%20debemos%20hacer%20revisar%20los%20Requisitos%20del%20Sistema.%20Parace%20muy%20trivial%20pero%20nunca%20est%C3%A1%20de%20m%C3%A1s.%0D%0A%0D%0AA%20la%20hora%20de%20desarrollar%20po" title="Digg"><img src="http://mobile.davidocs.com/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fmobile.davidocs.com%2Fandroid%2Fprimeros-pasos-con-android%2F&amp;title=Primeros%20pasos%20con%20Android&amp;notes=Prepar%C3%A1ndose%20para%20la%20Instalaci%C3%B3n%0D%0A%0D%0AVamos%20a%20empezar%20la%20andadura%20en%20el%20desarrollo%20con%20Android%2C%20antes%20de%20nada%20lo%20primero%20que%20debemos%20hacer%20revisar%20los%20Requisitos%20del%20Sistema.%20Parace%20muy%20trivial%20pero%20nunca%20est%C3%A1%20de%20m%C3%A1s.%0D%0A%0D%0AA%20la%20hora%20de%20desarrollar%20po" title="del.icio.us"><img src="http://mobile.davidocs.com/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.friendfeed.com/share?title=Primeros%20pasos%20con%20Android&amp;link=http%3A%2F%2Fmobile.davidocs.com%2Fandroid%2Fprimeros-pasos-con-android%2F" title="FriendFeed"><img src="http://mobile.davidocs.com/wp-content/plugins/sociable/images/friendfeed.png" title="FriendFeed" alt="FriendFeed" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://news.ycombinator.com/submitlink?u=http%3A%2F%2Fmobile.davidocs.com%2Fandroid%2Fprimeros-pasos-con-android%2F&amp;t=Primeros%20pasos%20con%20Android" title="HackerNews"><img src="http://mobile.davidocs.com/wp-content/plugins/sociable/images/hackernews.png" title="HackerNews" alt="HackerNews" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://technorati.com/faves?add=http%3A%2F%2Fmobile.davidocs.com%2Fandroid%2Fprimeros-pasos-con-android%2F" title="Technorati"><img src="http://mobile.davidocs.com/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a>


<br/><br/>

<p>Entradas relacionadas:<ol><li><a href='http://mobile.davidocs.com/android/disenando-la-aplicacion-uso-de-tabhost-en-android/' rel='bookmark' title='Permanent Link: Diseñando la aplicación, uso de TabHost en Android'>Diseñando la aplicación, uso de TabHost en Android</a></li>
<li><a href='http://mobile.davidocs.com/android/como-instalar-el-teclado-del-htc-hero-en-el-htc-magic/' rel='bookmark' title='Permanent Link: Cómo instalar el teclado del HTC Hero en el HTC Magic'>Cómo instalar el teclado del HTC Hero en el HTC Magic</a></li>
<li><a href='http://mobile.davidocs.com/android/creando-la-primera-aplicacion-con-android/' rel='bookmark' title='Permanent Link: Creando la primera aplicación con Android'>Creando la primera aplicación con Android</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://mobile.davidocs.com/android/primeros-pasos-con-android/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
