Você está na página 1de 42

Ing.

Ubaldo Jorge Lpez X Pgina 1




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:

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"/>

</LinearLayout>
Con estas simples lneas el resultado es el siguiente:

Y si pulsamos sobre el EditText, nos aparece el teclado :

Ing. Ubaldo Jorge Lpez X Pgina 5

Veamos algunos atributos
Android:inputType=number

Cuando pulsemos sobre el EditText, nos aparecer directamente el teclado numrico:
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="number"/>
</LinearLayout>

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">

<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textEmailAddress"/>
</LinearLayout>



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

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">
<LinarLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">

<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btnBoton1"
android:text="PULSAME"/>

<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);

View btnboton1 = findViewById(R.id.btnBoton1);
btnboton1.setOnClickListener(this);

@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">

<RadioGroup android:id="@+id/grupo1"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">

<RadioButton android:id="@+id/radio1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Opcin RadioButton 1"/>
<RadioButton android:id="@+id/radio2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Opcin RadioButton 2"/>
</RadioGroup>

</LinearLayout>
El resultado es el siguiente:
Ing. Ubaldo Jorge Lpez X Pgina 9


Android:onClick
Vamos a darle utilidad al RadioButton, cambiaremos el texto segn su posicin.
Diseamos el entorno
1
2
3
4
5
6
7
8
9
10
11
<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">

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/txtTexto"
android:text="Sin seleccin"/>

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

Nos queda como sigue :

Ahora creamos el cdigo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
package com.practica.android;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.RadioButton;
import android.widget.TextView;

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"

android:orientation="vertical">

<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/chkBox"
android:text="Botn CheckBox"/>

<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

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
33
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.CheckBox;
import android.widget.TextView;

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() {

CheckBox chkbox = (CheckBox) findViewById(R.id.chkBox);
final TextView txtview = (TextView) findViewById(R.id.txtView);

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.

1
2
3
4
5
6
7
8
<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">

<TableRow>

Ing. Ubaldo Jorge Lpez X Pgina 13

9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="boton 1" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="boton 2" />
</TableRow>
<TableRow>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="boton 3" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="boton 4" />
</TableLayout>
El resultado es el siguiente


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.

1
2
3
4
5
6
7
8
9
10
<RelativeLayout 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">
<Button
android:id="@+id/BotonPadre"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:text=&quot;Padre" />
Ing. Ubaldo Jorge Lpez X Pgina 14

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

3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width=&quot;fill_parent"
android:layout_height=&quot;fill_parent"
android:orientation=&quot;vertical">

<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="boton1"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="boton2"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="boton3"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="boton4"/>

</LinearLayout>
El resultado es el siguiente:

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

Archivo main.xml
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
<?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">

<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_x="50px"
android:layout_y="50px"
android:text="boton 1"/>

<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_x="150px"
android:layout_y="50px"
android:text="boton 2"/>

<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_x="50px"
android:layout_y="150px"
android:text="boton 3"/>

</AbsoluteLayout>
El resultado es el siguiente

Ejemplo de absoluteLayout



Ing. Ubaldo Jorge Lpez X Pgina 17

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:

1
2
3
4
5
6
7
8
9
10
11
12
13
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width=&quot;fill_parent"
android:layout_height=&quot;fill_parent"
android:orientation=&quot;vertical">

<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/android"/>

</LinearLayout>
Resultado:

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:

Ing. Ubaldo Jorge Lpez X Pgina 18

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width=&quot;fill_parent"
android:layout_height=&quot;fill_parent"
android:orientation=&quot;vertical">

<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ok"/>

<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/no"/>

</LinearLayout>
El resultado es el siguiente:

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=&quot;fill_parent"
android:layout_height=&quot;fill_parent"
android:orientation=&quot;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">

Ing. Ubaldo Jorge Lpez X Pgina 21

5
6
7
8
9
10
11
12
<item android:id="@+id/Opcion1" android:title="Opcion1">
</item>
<item android:id="@+id/Opcion2" android:title="Opcion2">
</item>
<item android:id="@+id/Opcion3" android:title="Opcion3">
</item>

</menu>
Con las siguientes instrucciones en el archivo java activaremos el botn fsico del mvil:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package com.practica.android;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
public class PracticaActivity extends Activity {

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menuinicio, menu);
return true;
}}




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:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?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">

<ToggleButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btnBoton1"
android:textOn="ON"
android:textOff="OFF"/>

<TextView
Ing. Ubaldo Jorge Lpez X Pgina 22

16
17
18
19
20
21
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/txtTexto"
android:text="No lo has pulsado"/>

</LinearLayout>

Con esto tenemos preparado la pantalla de inicio :

Ahora modificaremos el archivo Java :

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
package com.practica.android;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.TextView;
import android.widget.ToggleButton;


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


ToggleButton btnboton1 = (ToggleButton) findViewById(R.id.btnBoton1);
final TextView txttexto = (TextView) findViewById(R.id.txtTexto);

btnboton1.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
txttexto.setText("Pulsado");
}});
}
}


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.

1
2
3
4
5
6
7
8
9
10
11
12
13
<?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">

<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btnToast"
android:text="Activar Toast" />
</AbsoluteLayout>

Nos queda como sigue :







Archivo Java :
1
2
3
4
5
6
package com.practica.android;<br>

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
Ing. Ubaldo Jorge Lpez X Pgina 24

7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import android.widget.Toast;

public class PracticaActivity extends Activity {

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
View btnboton1 = findViewById(R.id.btnToast);
btnboton1.setOnClickListener(new OnClickListener() {
public void onClick(View v) {;
Toast.makeText(getApplicationContext(),&quot;Botn pulsado&quot;,
Toast.LENGTH_LONG).show();

}
});
}}

El resultado al pulsar el botn es el siguiente:





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" >

<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"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-feature android:glEsVersion="0x00020000"
android:required="true"/>

<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="es.tutorialandroid.mapav2.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
Ing. Ubaldo Jorge Lpez X Pgina 35

33
34
35
36
37
</activity>
<meta-data android:name="com.google.android.maps.v2.API_KEY"
android:value="AIzaSyAPeOQ07w7_Gaqo-uJddOeQpT8UgLcwwqM"/>
</application>

</manifest>
El cdigo Java como sigue :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package es.tutorialandroid.mapav2;

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



public class MainActivity extends android.support.v4.app.FragmentActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}

@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=&quot;android.permission.ACCESS_FINE_LOCATION"/>
Permiso para usar Internet (Imprescindible)

<uses-permission android:name="android.permission.INTERNET"/>


Ing. Ubaldo Jorge Lpez X Pgina 37






<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.mapita4"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<permission
android:name="com.example.mapita4.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.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-feature android:glEsVersion="0x00020000"
android:required="true"/>

<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.mapita4.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<meta-data android:name="com.google.android.maps.v2.API_KEY"
android:value="AIzaSyCA4330YIOvwE2bKroXqOIOzLqtG0NbvIA" />
</application>

</manifest>
Modificamos el activity_main de la siguiente forma:
1
2
3
4
5
6
7
8
9
10
11
12
13
<?xml version="1.0" encoding="utf-8">
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">

<com.google.android.maps.MapView
android:id="@+id/mapa"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:apiKey="Aqui tu Api Key"/>
</RelativeLayout>
Y por iltimo el cdigo Java:
1
2
3
4
5
6
7
8
package com.example.mapita4;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapView;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
public class MainActivity extends MapActivity {
private MapView mapView;
Api Key
Ing. Ubaldo Jorge Lpez X Pgina 38

9
10
11
12
13
14
15
16
17
18
19
20
public void onCreate(Bundle bundle) {
super.onCreate(bundle);
setContentView(R.layout.activity_main);
mapView = (MapView) findViewById(R.id.mapa);

}
@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

15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-feature android:glEsVersion="0x00020000"
android:required="true"/>

<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="es.tutorialandroid.mapav2.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<meta-data android:name="com.google.android.maps.v2.API_KEY"
android:value="AIzaSyAPeOQ07w7_Gaqo-uJddOeQpT8UgLcwwqM"/>
</application>

</manifest>
El activity_main no lo modificamos :
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"/>
Y el MainActivity.java :
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
package es.tutorialandroid.mapav2;

import com.google.android.gms.maps.GoogleMap;

import com.google.android.gms.maps.SupportMapFragment;


import android.location.Location;
import android.location.LocationListener;
import android.os.Bundle;

import android.support.v4.app.FragmentActivity;
import android.view.Menu;



public class MainActivity extends FragmentActivity implements LocationListener {
GoogleMap googlemap;


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
SupportMapFragment mf = (SupportMapFragment)
getSupportFragmentManager().findFragmentById(R.id.map);
googlemap = mf.getMap();

googlemap.setMyLocationEnabled(true);

}
Ing. Ubaldo Jorge Lpez X Pgina 40

32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67


@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

Veamos el resultado :

Si realizamos un zoom y pulsamos sobre el icono :

Você também pode gostar