TextView La forma ms sencilla de editar un texto en pantalla, cambiando el tamao del texto, color, estilo Tambin veremos como realizar realizar distintos tipos de enlaces como al navegador, correo electrnico o un mapa.
Lo primero que vamos a realizar es un ejemplo simple de texto: 1 2 3 4 5 6 7 8 9 10 11 12 <?xml version="1.0" encoding="utf-8"> <AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical">
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="El Texto que queremos mostrar" /> </AbsoluteLayout>
El resultado es el siguiente:
Ejemplo simple de TextView Crear un enlace al navegador 1 2 3 4 5 <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:autoLink="web" android:text="http://www.google.es" />
Crear enlace al correo electrnico 1 2 3 4 <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:autoLink="email" Ing. Ubaldo Jorge Lpez X Pgina 2
5 android:text="pepe@correoo.net" />
Crear enlace al mapa La direccin del mapa la obtenemos del googlemaps.
1 2 3 4 5 <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:autoLink="map" android:text="381 Park Avenue South, New York" />
Android:background Color de fondo 1 2 3 4 5 <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" ndroid:background="#ffffffff" android:text="Texto en prueba" />
Android:textSize Tamao de los caracteres 1 2 3 4 5 6 7 8 <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="15sp" android:text="Texto en 15sp" />
<TextView android:layout_width="wrap_content" Ing. Ubaldo Jorge Lpez X Pgina 3
9 10 11 android:layout_height="wrap_content" android:textSize="30sp" android:text="Texto en 30sp" />
Android:textStyle Tipo de texto: italic, bold o normal 1 2 3 4 5 6 7 8 9 10 11 <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textStyle="bold" android:text="Texto en bold" />
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textStyle="italic" android:text="Texto en italic" />
Android:typeface Tipo de letra para el texto : normal, sans, serif o monospace 1 2 3 4 5 6 7 8 9 10 11 <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:typeface="monospace" android:text="Texto en monospace" />
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:typeface="sans" android:text="Texto en sans" />
Ing. Ubaldo Jorge Lpez X Pgina 4
EditText La forma mas sencilla que el usuario interacte con la aplicacin introduciendo texto. Veamos como realizarlo de forma simple:
Android:inputType=textNoSuggestions Desactiva las sugerencias de texto cuando escribimos: 1 2 3 4 5 6 7 8 9 10 11 12 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical">
<EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:inputType="textNoSuggestions"/> </LinearLayout> Ing. Ubaldo Jorge Lpez X Pgina 6
Android:inputType=textEmailAddress
Nos muestra la tecla @ en el teclado para mayor comodidad del usuario. 1 2 3 4 5 6 7 8 9 10 11 12 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical">
Button Estudiaremos una forma sencilla de crear botones y configurar el evento para que nos cambie un texto. En primer lugar crearemos un botn al que identificaremos como btnBoton1 y con el texto Plsame. Ing. Ubaldo Jorge Lpez X Pgina 7
Tambin crearemos un TextView que identificaremos como txtTexto con el texto No has pulsado. Archivo main.xml
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/txtTexto" android:text="No has pulsado"/> </LinearLayout>
Con esto hemos creado la pantalla de inicio que queda como sigue :
Pantalla inicial Ahora modificaremos el archivo Java para que el botn funcione. Para controlar el evento del botn importaremos OnClickListener, el cdigo quedara como sigue: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 public class PracticaActivity extends Activity implements OnClickListener{ /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main);
@Override public void onClick(View v) { final TextView txttexto=(TextView) findViewById(R.id.txtTexto); txttexto.setText("Has pulsado el boton"); } } Ing. Ubaldo Jorge Lpez X Pgina 8
El resultado al pulsar el botn es:
Evento OnclickListener
RadioButton Usaremos el RadioButton para realizar una seleccin entre varias opciones: Para ello usaremos el RadioGroup para agrupar los RadioButton . 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical">
Usaremos el RadioGroup para agrupar los RadioButton: 1 2 3 4 5 <RadioGroup android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/rgrEleccion" android:orientation="vertical"> Crearemos los RadioButton, lo mas importante es la linea onClick, que es la que usaremos para que cuando pulsemos sobre este RadioButton salte al mtodo que le indicamos, en este caso lo hemos llamado onRadioButtonClick 1 2 3 4 5 6 7 8 9 10 <RadioButton android:id="@+id/rbtArriba" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="onRadioButtonClick" android:text="Arriba" /> <RadioButton android:id="@+id/rbtAbajo" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="onRadioButtonClick" android:text="Abajo" /> Ahora cerramos el RadioGroup y el LinearLayout 1 2 </RadioGroup> </LinearLayout> Ing. Ubaldo Jorge Lpez X Pgina 10
public class PracticaActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } Llamamos al mtodo que creamos con el android:onClick , y pasamos a variables el txtTexto y RadioButton 1 2 3 4 5 6 public void onRadioButtonClick(View v) { RadioButton button = (RadioButton) v; TextView txttexto = (TextView) findViewById(R.id.txtTexto); txttexto.setText("has pulsado "+ button.getText()); } } El resultado es el siguiente:
Ing. Ubaldo Jorge Lpez X Pgina 11
CheckBox El CheckBox es un botn con dos estados, pulsado o no pulsado como el que vemos a continuacin :
Vamos a crear un TextBox con un texto que se modificar segn la actividad del Checkbox 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 <?xml version="1.0" encoding="utf-8"> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent"
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/txtView" android:text="Sin pulsar"/> </LinearLayout> El resultado es el siguiente :
Pantalla inicial Ahora modificaremos el archivo Java. Usaremos el OnClickListener para controlar el evento al pulsar sobre el CheckBox y con ello modificar el texto de nuestro TextView 1 2 3 package com.practica.android; import android.app.Activity; import android.os.Bundle; Ing. Ubaldo Jorge Lpez X Pgina 12
public class PracticaActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); verificarCheckbox(); } private void verificarCheckbox() {
chkbox.setOnClickListener(new OnClickListener() { public void onClick(View v) { if (((CheckBox) v).isChecked()) { txtview.setText("Pulsado"); } else { txtview.setText("No Pulsado"); }
} }); } } El resultado es el siguiente:
TableLayout Con esta instruccin, organizamos los componentes que se visualizan en pantalla en forma de tablas, para ello tambin usaremos TableRow para realizar las divisiones.
RelativeLayout Con esta instruccin, organizamos los componentes que se visualizan en pantalla en referencia a uno en concreto. Lo veremos mejor con un ejemplo. En primer lugar crearemos un botn PADRE, para ello le daremos una ID para poder referenciarlo ms adelante y usaremos el Layout_alingParentTop=true para colocarlo en la parte superior de la pantalla.
Ahora crearemos un botn que llamaremos BotonHijo y con la instruccin layout_below lo colocaremos debajo del BotonPadre: 1 2 3 4 5 6 7 <Button android:id="@+id/BotonHijo" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/BotonPadre" android:text="Hijo"/> </RelativeLayout> El resultado es el siguiente:
Algunas disposiciones para los RelativeLayout android: layout_toLeftOf Para posicionarlo a la izquierda del que referenciamos. android: layout_toRightOf Para posicionarlo a la derecha del que referenciamos . android: layout_alignParentBottom como true (verdadero) para posicionarlo en la parte baja del todo
LinearLayout Con esta instruccin, organizamos los componentes que se visualizan en pantalla en una fila o en una columna. Por defecto y si no indicamos lo contrario, el diseo ser en vertical:
1 2 <?xml version="1.0" encoding="utf-8"?> <LinearLayout Ing. Ubaldo Jorge Lpez X Pgina 15
Si modificamos la siguiente linea : 1 android:orientation="horizontal" El resultado es el siguiente:
Ing. Ubaldo Jorge Lpez X Pgina 16
AbsoluteLayout Con esta instruccin, organizamos los componentes mediantes las coordenadas (x,y). Esta opcin no es nada recomendable ya que desconocemos la resolucin del terminal, y podemos dejar espacios libres o incluso superpuestos
ImageView Usaremos el ImageView cuando queremos mostrar una imagen. La ruta del archivo se la indicamos en el android:src. El formato aceptado es JPG, GIF y PNG. Te mostramos como hacerlo:
Para subir las imgenes al Eclipse, simplemente lo arrastras desde tu carpeta a res/drawable-hdpi.
ImageButton Con esta opcin, podremos insertar una imagen en nuestro Button, Para ello usaremos el formato png en nuestra imagen, y la subiremos a res/drawable-hdpi del Eclipse. Ahora solo nos falta incluir la ruta en nuestro button. Aqui tienes un ejemplo sencillo de como hacerlo:
Para incluir los png dentro de la carpeta, simplemente los hemos desde el origen:
MenuItem Crearemos un men que aparecer al pulsar el botn fsico del terminal. El resultado ser el siguiente: Ing. Ubaldo Jorge Lpez X Pgina 19
En primer lugar dejaremos el archivo XML como sigue: 1 2 3 4 5 6 7 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical"> </LinearLayout> Seguiremos los siguientes pasos para crear un nuevo archivo xml que llamaremos menuTeclado. Pulsamo el botn derecho sobre la carpeta res, vamos a New Folder :
Nombraremos a la nueva carpeta como menu y pulsamos Finish Ing. Ubaldo Jorge Lpez X Pgina 20
Pulsamos sobre la nueva carpeta creada y nos vamos a Android XML file :
Nombraremos el archivo como : menuinicio
Vamos a introducir el siguiente codigo en la nueva carpeta. 1 2 3 4 <?xml version="1.0&" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android">
ToggleButton Con este botn obtenemos dos estados: Pulsado o no pulsado. Veremos como crearlo y crearemos un evento al pulsarlo. En primer lugar desarrollaremos un entorno donde tendremos un ToggleButon que modificar un texto segn su estado:
El resultado es el siguiente una vez pulsado el botn: Ing. Ubaldo Jorge Lpez X Pgina 23
Toast El Toast es un pop up flotante que aparece en pantalla un breve espacio de tiempo. Vamos a crear el entorno, un simple botn que al pulsarlo aparezca el Toast.
Obtener el API Key para el Google Maps Para poder usar el Google Maps en nuestra aplicacin, primero debemos de obtener el API Key. Seguiremos los siguientes pasos para su obtencin depus de haber seguido el tutorial sobre como obtener el SHA1 que usaremos ms tarde. En primer lugar accederemos a la Google APIs console : Google APIs console
Una vez logueados nos dar la opcin de crear un nuevo proyecto : Ing. Ubaldo Jorge Lpez X Pgina 25
A la izquierda nos aparecer un men que seleccionaremos Rename para nombrar nuestra API
Yo lo he llamado Mapa, y pulso Save :
Activamos Google Maps Android API V2 :
Pulsamos sobre el enlace :
Pulsamos sobre API Access en el men de la izquierda : Ing. Ubaldo Jorge Lpez X Pgina 26
Aunque aparezca una API Key, esta nos nos sirve, pulsaremos sobre Create new Android Key:
En la ventana que nos aparece pegamos el cdigo SHA1 que vimos en este tutorial , seguido de ; y nombre de nuestro paquete en la aplicacin, que en mi caso es: es.tutorialandroid.mapav2 :
Ya obtenemos nuestro API Key para nuestro proyecto :
Obtener el SHA1 para el Google Maps Para empezar a trabajar con el GoogleMaps en nuestro proyecto, debemos de realizar una serie de pasos previos para poder usarlo. Para poder usar este sevicio, tenemos que registrar nuestra aplicacin. Necesitaremos dos claves en este orden, el SHA1 para luego obtener la API KEY. En este tutorial veremos como obtener nuestra primera clave en un entorno Windows.
Vamos a localizar donde tiene guardado ECLIPSE la clave del Debug Para ello vamos a Window / Preferences Ing. Ubaldo Jorge Lpez X Pgina 27
Una vez abierto vamos a Android / Build. Aqui encontramos la ruta de la Key.
Copiamos la ruta excepto el debug.keystore
Como se puede observar, en mi caso el certificado de pruebas est en la ruta C:\Users\yomero\.android\debug.keystore. Pues bien, para obtener nuestra huella digital SHA1 deberemos acceder a dicha ruta desde la consola de comando de Windows y ejecutar los siguientes comandos: abrimos la ventana de comandos: Ing. Ubaldo Jorge Lpez X Pgina 28
1 Tecleamos cd .android (Esto es en mi caso) 2 "C:\Program Files\Java\jdk1.7.0_07\bin\keytool.exe" -list -v -keystore debug.keystore - alias androiddebugkey -storepass android -keypass android
Esto nos deber devolver varios datos del certificado, entre ellos la huella SHA1. Pues bien, nos copiamos este dato y lo aadimos a la ventana de obtencin de la API Key donde nos habamos quedado antes, y a continuacin separado por un punto y coma aadimos el paquete java que vayamos a utilizar en nuestra aplicacin, que en mi caso ser package="com.example.mapita"
Pulsamos el botn Create y ya deberamos tener nuestra API Key generada, podremos verla en la pantalla siguiente dentro del apartado Key for Android Apps (with certificates). Apuntaremos tambin este dato para utilizarlo ms tarde. Ing. Ubaldo Jorge Lpez X Pgina 29
Con esto ya habramos concluido los preparativos iniciales necesarios para utilizar el servicio de mapas de Android en nuestras propias aplicaciones, por lo que empecemos a crear un proyecto de ejemplo en Eclipse. No cierres el Api Key lo utilizaras despus. Google maps Android API V2 Para seguir este tutorial, previamente tenemos que haber seguido los siguientes tutoriales : Obtener SHA1 Obtener API Key Veamos en un ejemplo prctico como usar las librerias de Google Maps en la nueva versin API V2. En primer lugar veremos si las tenemos instaladas para poder usarlas. Dentro del eclipse abrimos el SDK Manager :
Verifico que tengo instalado el Google Play Services. En mi caso la ltima versin a 5 de marzo de 2013 es la 5:
Una vez comprobado que tenemos las libreras, crearemos un proyecto al que yo he denominado MapaV2 : Ing. Ubaldo Jorge Lpez X Pgina 30
Importamos la librera a nuestro proyecto :
Seleccionamos la ubicacin dentro de la carpeta Android y pulsamos Next:
Browse Ing. Ubaldo Jorge Lpez X Pgina 31
Accedemos a la carpeta libproject y pulsamos aceptar:
Pulsamos sobre finish : Ing. Ubaldo Jorge Lpez X Pgina 32
En este punto, todava no han sido importadas a nuestro proyecto :
Para incluirla en nuestro proyecto tenemos que ir a propiedades del proyecto / carpeta Android:
Y en la parte baja pulsamos sobre Add: Ing. Ubaldo Jorge Lpez X Pgina 33
Seleccionamos la librera y pulsamos Ok :
Volvemos a pulsar Ok
Ya hemos aadido las libreras necesarias : Ing. Ubaldo Jorge Lpez X Pgina 34
Vamos a modificar el Manifest como sigue: Crearemos un meda-data como sigue pero con el valor de nuestra API Key : 1 2 <meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="api_key"/> Agregamos los siguientes permisos : 1 2 3 4 5 6 7 8 <permission android:name="es.tutorialandroid.mapav2.permission.MAPS_RECEIVE" android:protectionLevel="signature"/> <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-feature android:glEsVersion="0x00020000" android:required="true"/> As quedara nuestro Manifest : Recuerda modificar los valores del API Key y el nombre de tu Package en mi caso era package="com.example.mapita4" 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="es.tutorialandroid.mapav2" android:versionCode="1" android:versionName="1.0" >
@Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.activity_main, menu); return true; } } Y por ltimo nuestro XML : 1 2 3 4 5 6 <?xml version="1.0" encoding="utf-8"?> <fragment xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/map" android:layout_width="match_parent" android:layout_height="match_parent" class="com.google.android.gms.maps.SupportMapFragment"/> El resultado es el siguiente :
Ing. Ubaldo Jorge Lpez X Pgina 36
Nuestro primer mapa en android Despus de haber obtenido nuestro API KEY, ya podemos empezar a crear nuestro primer mapa. En esta ocasin realizaremos un proyecto que simplemente nos ensear un mapa, ms adelante veremos la forma de interactuar con l. Comencemos: Abrimos el manifest para aadir la libreria de Google Maps a nuestra aplicacin. 1.- Abrir Manifest. 2.- Abrir pestaa Application. 3.- Pulsar sobre Add
Seleccionamos Uses Library
Marcamos la librera que vamos a usar
En el Manifest crearemos 3 permisos: Permiso para localizacion aproximada mediante triangulacin de antenas:
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> Permiso para localizacin exacta mediante GPS:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> Permiso para usar Internet (Imprescindible)
} @Override protected boolean isRouteDisplayed() { // TODO Auto-generated method stub return false; } } Ejecutamos y el resultado es el siguiente
Mi localizacio n en Google Maps API v2 Siguiendo con los tutoriales sobre los GoogleMaps en Android, vamos a crear un mapa que nos localice y dibuje un punto sobre en nuestra hubicacin. Partiremos que ya has ledo los anteriores tutoriales y sabes como realizar un mapa Tutorial de Mapas. Lo primero que tenemos que modificar es el Manifest para poder usar el GPS y la triangulacin de antena, por lo que nos quedar como sigue: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="es.tutorialandroid.mapav2" android:versionCode="1" android:versionName="1.0" >
<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="16" /> <permission android:name="es.tutorialandroid.mapav2.permission.MAPS_RECEIVE" android:protectionLevel="signature"/> <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/> <uses-permission android:name="android.permission.INTERNET"/> Ing. Ubaldo Jorge Lpez X Pgina 39
@Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present.
return true; }
@Override public void onLocationChanged(Location arg0) { // TODO Auto-generated method stub
}
@Override public void onProviderDisabled(String provider) { // TODO Auto-generated method stub
}
@Override public void onProviderEnabled(String provider) { // TODO Auto-generated method stub
}
@Override public void onStatusChanged(String provider, int status, Bundle extras) { // TODO Auto-generated method stub
} } El resultado es el siguiente: Aparece un punto sobre Las Islas Canarias, que es donde estoy.
Y si nos acercamos con el zoom, vemos mi posicin an mas exacta. Estoy en Santa Cruz de Tenerife: Ing. Ubaldo Jorge Lpez X Pgina 41
Insertar icono GoogleMap API v2 Vamos a marcar un punto en nuestro mapa, le incluiremos un ttulo, un comentario y como marcador usaremos un BitmapDescriptorFactory.HUE_GREEN . Usaremos como base nuestro tutorial mi primer mapa. Buscamos en el navegador el punto que quiero que aparezca en mi mapa, en este caso el monumento de La Cibeles en Madrid. Pulso en el botn para enlazar y me aparece una nueva ventana con los datos que necesito : latitud y longitud.
Ahora en el eclipse empiezo a realizar las modificaciones en el MainActivity.java. Creo un nuevo mtodo que en este caso lo he llamado addMarcador : 1 addMarcador(); Y mi addMarcador recin creado le incluyo los siguientes datos: 1 2 3 4 5 6 7 8 private void addMarcador() { LatLng latlng = new LatLng(40.419193,-3.692892); googlemap.addMarker(new MarkerOptions() .title("La Cibeles") .position(latlng) .snippet("Monumento") .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN)) ); Ing. Ubaldo Jorge Lpez X Pgina 42