manual de aplicaciones de android

201
COLEGIO DE ESTUDIOS CIENTÍFICOS Y TECNOLÓGICOS DEL ESTADO DE MÉXICO TÉCNICO EN PROGRAMACIÓN DESARROLLA APLICACIONES MÓVILES ALUMNO: CHRISTIAN ULISES PÉREZ ESPINOSA GRUPO: 403 MANUAL DE APLICACIONES DE ANDROID

Upload: christianulises

Post on 10-Aug-2015

30 views

Category:

Education


1 download

TRANSCRIPT

Page 1: Manual de aplicaciones de android

COLEGIO DE ESTUDIOS CIENTÍFICOS Y TECNOLÓGICOS DEL ESTADO DE MÉXICO

TÉCNICO EN PROGRAMACIÓN

DESARROLLA APLICACIONES MÓVILES

ALUMNO: CHRISTIAN ULISES PÉREZ ESPINOSA

GRUPO: 403

MANUAL DE APLICACIONES DE ANDROID

Page 2: Manual de aplicaciones de android

INDICE

HOLA MUNDO….………………………………………...........................3 OPERACIONES……………………………………………………………8 IMC…...…………………………………………………………………….13FACTORIAL...…………………………………………............................17 ASTERISCOS…………………………………………............................20 ALBUM………………………………………………………………………27 ALL APP……………………………………………………………………34 COLOR HEX….……………………………………………………………40 REBOSO DROID..…………………………………………………………47 CALCULAR EDAD…...…………………………………..........................51 PHONEGAP………………………………………………………………..56BD INSERTAR,ELIMINAR,MODIFICAR Y CONSULTAR…………….60 LISTVIEW…..………………………………………………………………69MENÚ……………………………………………………………………….74TABHOST…………………………………………………………………..76ACELEROMETRO…………………………………………………………79CANVAS…………………………………………………………………….85GATO………………………………………………………………………..87CALCULADORA………………………………………………………….103SONIDOS ANIMALES…………………………………………………...122VIDEOVIEW………………………………………………………………125GIROSCOPIO…………………………………………………………….127NOTIFICACIONES……………………………………………………….133TOGGLEBUTTON………………………………………………………..135CHECKBOX……………………………………………………………….139RADIOBUTTON…………………………………………………………..144SPINNER………………………………………………………………….148WEBVIEW…………………………………………………………………154TIMEPICKER……………………………………………………………..158DATEPICKER…………………………………………………………….161

Page 3: Manual de aplicaciones de android

HOLA MUNDOEsta es la aplicación más sencilla de este manual ya que solo consta de crear la aplicación para obtener un hola mundo, pero esta se puede modificar, así que comencemos.

1.-Nos dirigimos a File->New->Android Application Project y nos aparecerá esta ventana.

2.-Le asignamos nombre a nuestra aplicación, seleccionamos un nombre a nuestro package(este debe ser único para no ocasionar conflictos al publicar una aplicación) y finalmente en esta ventana seleccionamos las versiones de Android en las que funcionara nuestra aplicación. El resultado sería el siguiente.

Page 4: Manual de aplicaciones de android

3.-Dando en Next nos mandara a una segunda ventana, en esta configuraremos el proyecto y damos Next.

4.-En esta parte seleccionaremos la imagen que tendrá nuestra aplicación. Tenemos tres tipos Imagen, un clip predeterminado o que sea texto este será como uno desee. También nos deja seleccionar el fondo de color, la forma de imagen y la distancia que tendrá nuestra imagen del borde.

Page 5: Manual de aplicaciones de android

5.-En esta ventana la dejamos como viene predeterminada y damos Next.

6.-En la última Seleccionamos el nombre del activity el cual puede quedarse como viene predeterminado y damos finish.

Page 6: Manual de aplicaciones de android

7.-Tenemos nuestro Hola Mundo, pero nosotros lo modificaremos a español y le daremos una mejor apariencia.

8.-Seleccionamos el layout (es el archivo con extensión XML)Y lo modificaremos como se muestra el código a continuación.

Page 7: Manual de aplicaciones de android

9.-Para la imagen de fondo se utiliza el background en el RelativeLayout que es el que abarca todo el código y para modificar el Hola Mundo ocupamos tamaño, posición, color y el texto en español.

Listo tenemos nuestro Hola Mundo terminado, fue bastante sencillo y es nuestra introducción a este manual, para terminar te muestro el resultado final corriendo en el dispositivo.

Page 8: Manual de aplicaciones de android

OPERACIONES1.-Como en la aplicación anterior creamos el proyecto de acuerdo a nuestras preferencias.2.-Creado el proyecto seleccionamos el layout(el archivo XML por si todavía no nos queda claro cuál es) y empezamos a modificarlo.3.-Lo que vamos a necesitar en este archivo es cambiar de RelativeLayout a LinearLayout y colocar la posición en este caso será vertical, además requerimos de dos EditText, un linear layout en posición horizontal para nuestros dos Button y finalmente un TextView.4.-Cada uno de estos va a ir con las propiedades que necesitemos, pero eso sí que en el LinearLayout es obligatorio que lleve la posición y tamaño del Layout.

Page 9: Manual de aplicaciones de android

5.-El código quedaría de esta manera.

6.-Ahora pasamos al archivo java, en el pondremos toda la codificación del layout que acabamos de crear.7.-Lo primero que haremos es al public class le agregaremos el implements OnClickListener y agregamos el método y la librería que nos pide.8.-Declaramos las variables dentro del Public Class de esta manera:

EditText edtNumeroUno, edtNumeroDos;TextView txtResultado;Button btnCalcular, btnBorrar;

Nos marcara un error basta con agregar la librería de cada una, esto se hace seleccionando el error y nos dara la opción de agregar librería.9.-En el Protected Void OnCreate enlazamos las variables que acabamos de crear con las del layout anteriormente creado Así mismo

Page 10: Manual de aplicaciones de android

le asignamos el método OnClickListener a los botones, deberá quedar de esta manera.

10.-Después en el método que creamos con el Onclick colocaremos la codificación de los botones, este método hara que cuando seleccionemos un botón haga lo deseado. Ocuparemos dos casos uno para el botón calcular y el otro para el botón borrar.11.-En el case del botón calcular primero obtendremos el valor de los dos EditText y los asignamos en una variable de tipo String para determinar si hacen falta valores o alguno es incorrecto.12.-Para obtener eso crearemos un if donde si los dos valores son diferentes a 0 proceda a realizar las operaciones en caso contrario con un else if arroje un mensaje de valores incorrectos.13.-Para que en caso de que sea diferente a cero dentro del if procederemos a convertir las variables de tipo String a tipo Double.14.-Posteriormente crearemos otro if, en el haremos que el valor que sea mayor ocupe la primer posición. Sí el número uno es mayor al número dos procederemos a realizar las operaciones de esta manera e insertando el resultado en el TextView, en caso contrario utilizaremos un else if donde si el número dos es mayor al número uno se realicen las operaciones de esa manera y se inserte en el TextView. El código quedará de esta manera.

Page 11: Manual de aplicaciones de android

15.-Procederemos a colocar un break y a colocar el case del botón borrar.16.-Dentro de este case insertaremos en los EditText y en el TextView el valor null, o solamente unas comillas. Quedaría de esta manera:

Así es como quedaría nuestra aplicación, que es bastante sencilla, sólo es entender el funcionamiento de cada elemento que tenemos en la aplicación. Por último así se vería la aplicación que acabamos de crear.

Page 12: Manual de aplicaciones de android

Como se puede observar no se ingresó ningún valor, por lo que nos marca valores incorrectos.

Page 13: Manual de aplicaciones de android

IMC1.-Una vez creado el proyecto, crearemos nuestra interfaz, posteriormente añadimos el primer LinearLayout. <?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:background=”#0015B7”android:orientation=”vertical” >2.-Añadimos un TextView con el título. <TextViewandroid:layout_width=”fill_parent”android:layout_height=”wrap_content”nti :padding=”20dp”nti :text=”Calculadora del IMC “nti :textSize=”20sp” />3.-Añadimos un EditText para que el usuario pueda introducir su peso:<EditTextnti :id=”@+id/peso”android:layout_width=”fill_parent”android:layout_height=”wrap_content”android:hint=”Introduce tu peso”android:inputType=”number”android:maxLength=”3” >

<requestFocus /></EditText>Nota: Con “requestFocus” le indicamos al sistema que al iniciar coloque en esta caja un brillo.4.-Añadimos otro EditText para que el usuario pueda introducir la altura:

Page 14: Manual de aplicaciones de android

<EditTextnti :id=”@+id/altura”android:layout_width=”fill_parent”android:layout_height=”wrap_content”android:hint=”Introduce tu altura”android:inputType=”number”android:maxLength=”3” />5.-Añadimos un botón para realizar calcular su nti :<Buttonnti :id=”@+id/calcular”android:layout_width=”wrap_content”android:layout_height=”wrap_content”android:layout_gravity=”center”android:layout_margin=”20dp”nti :text=”Calcular” />

</LinearLayout>6.-Nos vamos ahora a nuestro código java.7.-Lo primero es añadir a nuestra clase los EditText y el Button.EditText peso, altura;Button calcular;8.-En el OnCreate los vinculamos y poner el Listener que reaccionará al tocar el Botón:calcular = (Button) findViewById(R.id.calcular);calcular.setOnClickListener(this);peso = (EditText) findViewById(R.id.peso);altura = (EditText) findViewById(R.id.altura);9.-Ahora, agregamos el método onClickListener en nuestro Activity:public class IMCActivity extends Activity implements OnClickListener {Y añadimos el nti correspondiente al evento onClick:@Overridepublic void onClick(View v) {10.-Añadimos un switch con el case del botón calcular.Switch (v.getId()) {case R.id.calcular:

Page 15: Manual de aplicaciones de android

11.-Dentro de este haremos todos los cálculos y comprobaciones.12.-Después se comprueba que ningún campo esté en blanco, en ese caso se muestra un Toast indicando el campo que falta.13.-Ya que tengamos las comprobaciones pasamos todos los strings a float y realizamos los cálculos para mostrar un Toast con el resultado. El código seria el siguiete.

If (peso.getText().toString().trim().length() == 0) {peso.requestFocus();

Toast.makeText(IMCActivity.this,“Falta colocar el peso”, Toast.LENGTH_SHORT).show();} else if (altura.getText().toString().trim().length() == 0) {altura.requestFocus();

Toast.makeText(IMCActivity.this,“Falta colocar la altura”,Toast.LENGTH_SHORT).show();}else {float kg = Float.parseFloat(peso.getText().toString());float cm = Float.parseFloat(altura.getText().toString());float m = (cm / 100);float bmi = (kg / (m * m));

if (bmi < 18.5) {Toast.makeText(IMCActivity.this,“Tu IMC es “ + bmi + “\n” + “Estás delgado”,Toast.LENGTH_SHORT).show();} else {if (bmi < 24.9) {Toast.makeText(IMCActivity.this,“Tu IMC es “ + bmi + “\n”

Page 16: Manual de aplicaciones de android

+ “Tu peso es normal”,Toast.LENGTH_SHORT).show();} else {if (bmi < 29.9) {Toast.makeText(IMCActivity.this,“Tu IMC es “ + bmi + “\n”+ “Tienes sobrepeso”,Toast.LENGTH_SHORT).show();} else {if (bmi > 30) {Toast.makeText(IMCActivity.this,“Tu IMC es “ + bmi + “\n”+ “Padeces obesidad”,Toast.LENGTH_SHORT).show();}}}}Así quedaría terminada la App y con esto podemos observar que ya incluimos nuevos códigos para el desarrollo, por lo que empieza a ser más complicado. Como último te muestro el resultado funcionando.

Page 17: Manual de aplicaciones de android

FACTORIAL1.-Crea tu proyecto.2.-Selecciona tu layout y cambia el RelativeLayout por LinearLayout y dale orientación vertical.3.-Crea otro LinearLayout y colocale sus propiedades, este tendrá orientación horizontal.4.-Coloca un EditText para que el usuario ingrese el número que desea.5.-Coloca un Button para que se calcule el factorial del número y luego cierra el LinearLayout.6.-Coloca un TextView para colocar los resultados. El código debería quedar así:<LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android” xmlns:tools=”http://schemas.android.com/tools” android:layout_width=”match_parent” android:layout_height=”match_parent” android:orientation=”vertical” > <LinearLayout android:layout_width=”match_parent” android:layout_height=”wrap_content” > <EditText android:id=”@+id/entrada” android:layout_width=”0dip” android:layout_height=”wrap_content” android:layout_weight=”1” android:hint = ”Ingresa numero” android:inputType=”numberDecimal” > <requestFocus /> </EditText> <Button android:id=”@+id/factorial” android:layout_width=”wrap_content” android:layout_height=”wrap_content” android:text = ”Calcular factorial” /> </LinearLayout> <TextView android:id=”@+id/salida” android:layout_width=”match_parent” android:layout_height=”match_parent” android:text = ” “ android:textAppearance=”?android:attr/textAppearanceMedium”/></LinearLayout>

7.-Ahora pasamos al java y hacemos lo mismo que en las aplicaciones anteriores, declaramos variables, enlazamos con el layout y agregamos el método OnClickListener.

Page 18: Manual de aplicaciones de android

8.-En el método OnClick agregamos un switch con el case del botón factorial, en el agregamos el código para ingresar el resultado en el TextView.9.-Creamos un método público para realizar la operación.El archivo java quedaría así:package com.wero.factorial;

import android.os.Bundle;import android.os.SystemClock;import android.app.Activity;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.*;

public class MainActivity extends Activity implements OnClickListener {EditText entrada;TextView salida;Button factorial;int resultado=0;int n=0; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); entrada = (EditText) findViewById(R.id.entrada); salida = (TextView) findViewById(R.id.salida); factorial = (Button) findViewById(R.id.factorial); factorial.setOnClickListener(this); }

@Overridepublic void onClick(View v) {

switch(v.getId()){case R.id.factorial:

int n = Integer.parseInt(entrada.getText().toString());salida.append(n +”! = “);resultado=factorial(n);salida.append(resultado +”\n”);

}}

public int factorial(int n) {int fac=1;for(nti =1;i<=n;i++){

fac*=i;}return fac;

}

Page 19: Manual de aplicaciones de android

}

Una aplicación más terminada, esta fue más sencilla que la anterior en cuanto a código, ya que el único inconveniente es el cómo se obtiene el factorial de un número. Como último te muestro el resultado.

Page 20: Manual de aplicaciones de android

ASTERISCOSA continuación elaboraremos una aplicación pero no en Android, esta será en java, esto con la finalidad de ver el funcionamiento del ciclo for.1.-En un editor de texto agregamos el Scanner de la siguiente manera:import java.util.*;

public class figuras{public static void main(String[] args){

Scanner asterisco=new Scanner(System.in);2.-Ahora procedemos con el programa con un ciclo for para que nos repita el programa hasta que el usuario termine o se terminen las oportunidades-3.-A continuación agregamos un menú para que el usuario decida la figura que quiera.4.- En cada posición elaboramos la figura correspondiente con la ayuda del ciclo for que nos ayudara a imprimir los asteriscos en orden.El código seria el siguiente:import java.util.*;

public class figuras{public static void main(String[] args){

Scanner asterisco=new Scanner(System.in);for(int o=0; o<=10; o++){

System.out.println(“1.- Cuadro”);System.out.println(“2.- Cuadro contorno”);System.out.println(“3.- Flecha”);System.out.println(“4.- Rombo “);System.out.println(“5.- Rombo contorno”);System.out.println(“6.- Salir”);

int ab=asterisco.nextInt();

Page 21: Manual de aplicaciones de android

if(ab==1){int n=asterisco.nextInt();

for(int j=0;j<n;j++){for(nti =0;i<n;i++){

System.out.print(“* “);}System.out.println(“”);

}}

if(ab==2){int n=asterisco.nextInt();

for(int j=0;j<n;j++){System.out.print(“* “);

}System.out.println(“”);for(int j=0;j<(n-2);j++){

System.out.print(“* “);for(nti =0;i<(n-2);i++){

System.out.print(“ “);}System.out.println(“* “);

}

for(int j=0;j<n;j++){System.out.print(“* “);

}}

if(ab==3){int n=asterisco.nextInt();

Page 22: Manual de aplicaciones de android

for(int l=0;l<n;l++){for(nti =(n-l);i>0;i--){

System.out.print(“ “);}for(int j=0;j<=(l*2);j++){

System.out.print(“* “);}System.out.println(“”);

}for(int b=0;b<n;b++){

for(int a=0;a<(n*2);a++){System.out.print(“ “);

}System.out.println(“* “);

}}

if(ab==4){int n=asterisco.nextInt();for (nti =1;i<=n;i++){ for (int e=n-i;e>0;e--) System.out.print(“ “); for (int l=1;l<2*i;l++) System.out.print(“*”); System.out.println(“”); } for (nti =(n-1);i>=1;i--){ for (int e=n-i;e>0;e--) System.out.print(“ “); for (int l=1;l<(2*i);l++)

Page 23: Manual de aplicaciones de android

System.out.print(“*”); System.out.println(“”); }

}

if(ab==5){int n=asterisco.nextInt();

int vi=0;int vf=0;

for(int horiz=0;horiz<numero;horiz++){System.out.print(“ “);

}System.out.print(“* “);System.out.print(“\n”);

for(int vert=2;vert<=numero;vert++){//inicio for verticalSystem.out.print(“ “);

for(int horiz=vi;horiz<numero-2;horiz++){System.out.print(“ “);

}vi=vi+1;

for(int horiz=1;horiz<=1;horiz++){System.out.print(“* “);

}

Page 24: Manual de aplicaciones de android

for(int horiz=0;horiz<=vf;horiz++){System.out.print(“ “);

}

for(int horiz=1;horiz<=vf;horiz++){System.out.print(“ “);

}vf=vf+1;for(int horiz=1;horiz<=1;horiz++){

System.out.print(“* “);}

System.out.print(“\n”);}//fin for vertical//System.out.print(“\n\n”);

vi=0;vf=0;

for(int vert=3;vert<=numero;vert++){//inicio for verticalSystem.out.print(“ “);

for(int horiz=0;horiz<=vf;horiz++){System.out.print(“ “);

}vf=vf+1;

for(int horiz=0;horiz<=0;horiz++){System.out.print(“* “);

}

Page 25: Manual de aplicaciones de android

for(int horiz=vi;horiz<=numero-4;horiz++){System.out.print(“ “);

}

for(int horiz=vi;horiz<=numero-3;horiz++){System.out.print(“ “);

}vi=vi+1;

for(int horiz=0;horiz<=0;horiz++){System.out.print(“* “);

}

System.out.print(“\n”);}//fin for verticalfor(int horiz=0;horiz<numero;horiz++){System.out.print(“ “);}System.out.print(“* “);System.out.print(“\n”);

}if(ab==6){o=10;}}

}

Page 26: Manual de aplicaciones de android

}Como veras lo único complicado es comprender el funcionamiento del ciclo for para ordenar los asteriscos y nos forme una figura. Pero ahora es como sería el funcionamiento en Android, ¿Podrá funcionar?Como último te dejo el ejemplo funcionando en jdk:

Para que funcione, necesitas descargar jdk en tu computadora, ya instalado buscar la carpeta bin(como ejemplo C:\Program Files\Java\jdk1.8.0_25\bin) después copiar la ubicación para dirigirnos a equipo,click derecho propiedades,opciones avanzadas,path y eliminar el contenido hasta el “;” después pegar el link y dar aceptar, para hacer funcionar nuestra app, primero la compilamos con javac asteriscos.java y para ejecutarla lo hacemos con java asteriscos.

Page 27: Manual de aplicaciones de android

ALBUM1.-Cuando tengamos el proyecto creado nos dirigimos al layout.

2.-En el comenzamos con el LinearLayout principal, este con orientación vertical y proseguimos con el Imageview principal, este nos sirve para mostrar una imagen en el programa. Esto se hace con el android background (la imagen se guarda en la carpeta res->drawable-mdpi).

3.-El siguiente paso es declarar el HorizontalScrollView, este nos ayuda alineando de manera horizontal un conjunto de views.

4.-Después colocamos un LinearLayout con orientación horizontal y dentro de este declaramos todas las imágenes (con el ImageView) para que se desplacen y puedan verse.

5.-Posteriormente de haber insertado el determinado número de imágenes que se quieran cerramos el LinearLayout y el HorizontalScrollView.

6.-Para seleccionar la imagen que se quiera como Wallpaper ocuparemos un botón, así que lo colocamos.

7.-Cerramos el LinearLayout principal y el código quedaría así (dependiendo de las imágenes que se quieran).

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" >

<ImageView android:id="@+id/image" android:layout_width="match_parent"

Page 28: Manual de aplicaciones de android

android:layout_height="200sp" android:src="@drawable/uno" />

<HorizontalScrollView android:layout_width="match_parent" android:layout_height="100sp" >

<LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" >

<ImageView android:id="@+id/image1" android:layout_width="100sp" android:layout_height="100sp" android:src="@drawable/uno" />

<ImageView android:id="@+id/image2" android:layout_width="100sp" android:layout_height="100sp" android:src="@drawable/tres" />

<ImageView android:id="@+id/image3" android:layout_width="100sp" android:layout_height="100sp" android:src="@drawable/cuatro" />

<ImageView android:id="@+id/image4" android:layout_width="100sp" android:layout_height="100sp" android:src="@drawable/cinco" />

Page 29: Manual de aplicaciones de android

<ImageView android:id="@+id/image5" android:layout_width="100sp" android:layout_height="100sp" android:src="@drawable/seis" />

<ImageView android:id="@+id/image6" android:layout_width="100sp" android:layout_height="100sp" android:src="@drawable/siete" />

<ImageView android:id="@+id/image7" android:layout_width="100sp" android:layout_height="100sp" android:src="@drawable/ocho" />

<ImageView android:id="@+id/image8" android:layout_width="100sp" android:layout_height="100sp" android:src="@drawable/nueve" />

<ImageView android:id="@+id/image9" android:layout_width="100sp" android:layout_height="100sp" android:src="@drawable/descarga" />

<ImageView android:id="@+id/image10" android:layout_width="100sp" android:layout_height="100sp"

Page 30: Manual de aplicaciones de android

android:src="@drawable/lalo" /> </LinearLayout> </HorizontalScrollView>

<Button android:id="@+id/cambiar" android:layout_width="match_parent" android:layout_height="70sp" android:text="Cambiar Wallpaper" /> </LinearLayout>

8.-Como anteriormente lo hemos visto enlazaremos el layout con el código9.-En el switch colocaremos el case de las imágenes para que se puedan desplazar por el ScrollView y podamos seleccionar una.10.-Colocamos el case del botón para que la imagen que tengamos seleccionada nos la coloque de fondo de pantalla.El Código seria el siguiente:<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" >

<ImageView android:id="@+id/image" android:layout_width="match_parent" android:layout_height="200sp" android:src="@drawable/uno" />

<HorizontalScrollView android:layout_width="match_parent" android:layout_height="100sp" >

Page 31: Manual de aplicaciones de android

<LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" >

<ImageView android:id="@+id/image1" android:layout_width="100sp" android:layout_height="100sp" android:src="@drawable/uno" />

<ImageView android:id="@+id/image2" android:layout_width="100sp" android:layout_height="100sp" android:src="@drawable/tres" />

<ImageView android:id="@+id/image3" android:layout_width="100sp" android:layout_height="100sp" android:src="@drawable/cuatro" />

<ImageView android:id="@+id/image4" android:layout_width="100sp" android:layout_height="100sp" android:src="@drawable/cinco" />

<ImageView android:id="@+id/image5" android:layout_width="100sp" android:layout_height="100sp" android:src="@drawable/seis" />

Page 32: Manual de aplicaciones de android

<ImageView android:id="@+id/image6" android:layout_width="100sp" android:layout_height="100sp" android:src="@drawable/siete" />

<ImageView android:id="@+id/image7" android:layout_width="100sp" android:layout_height="100sp" android:src="@drawable/ocho" />

<ImageView android:id="@+id/image8" android:layout_width="100sp" android:layout_height="100sp" android:src="@drawable/nueve" />

<ImageView android:id="@+id/image9" android:layout_width="100sp" android:layout_height="100sp" android:src="@drawable/descarga" />

<ImageView android:id="@+id/image10" android:layout_width="100sp" android:layout_height="100sp" android:src="@drawable/lalo" /> </LinearLayout> </HorizontalScrollView>

<Button android:id="@+id/cambiar" android:layout_width="match_parent"

Page 33: Manual de aplicaciones de android

android:layout_height="70sp" android:text="Cambiar Wallpaper" /> </LinearLayout>11.-Como último agregamos el permiso, para que nos deje cambiar el fondo de pantalla, en el AndroidMainfest colocamos el siguiente código.<uses-permission android:name="android.permission.SET_WALLPAPER"/>

Así es como tendriamos esta aplicación que es sencilla y nos permite cambiar nuestro fondo de pantalla con las imágenes que más nos gusten.Te muestro como se veria el resultado final.

Page 34: Manual de aplicaciones de android

ALL APP1-Crea tu proyecto.2.-Copia los .JAVA y .XML de tus aplicaciones anteriores y pégalos en la carpeta que corresponden.3.-Copia el contenido que tengan tus aplicaciones (ejemplo imágenes).4.-Ahora sí vamos con el layout principal, crea un botón para cada aplicación.El código debería quedar similar a este:<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/back" tools:context=".AllApp" >

<LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:orientation="vertical" >

<Button android:id="@+id/button1" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="20sp" android:layout_marginRight="20sp" android:layout_marginTop="10sp" android:text="Hola Mundo" android:textColor="#FFFFFF" android:textSize="30sp" android:textStyle="bold" />

<Button android:id="@+id/button2" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="20sp" android:layout_marginRight="20sp" android:layout_marginTop="10sp" android:text="Operaciones" android:textColor="#FFFFFF" android:textSize="30sp" android:textStyle="bold" />

<Button android:id="@+id/button3" android:layout_width="match_parent"

Page 35: Manual de aplicaciones de android

android:layout_height="wrap_content" android:layout_marginLeft="20sp" android:layout_marginRight="20sp" android:layout_marginTop="10sp" android:text="Tablas" android:textColor="#FFFFFF" android:textSize="30sp" android:textStyle="bold" />

<Button android:id="@+id/button4" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="20sp" android:layout_marginRight="20sp" android:layout_marginTop="10sp" android:text="Zodiaco" android:textColor="#FFFFFF" android:textSize="30sp" android:textStyle="bold" />

<Button android:id="@+id/button5" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="20sp" android:layout_marginRight="20sp" android:layout_marginTop="10sp" android:text="Numero Binario" android:textColor="#FFFFFF" android:textSize="30sp" android:textStyle="bold" />

<Button android:id="@+id/button6" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="20sp" android:layout_marginRight="20sp" android:layout_marginTop="10sp" android:text="Calcular Edad" android:textColor="#FFFFFF" android:textSize="30sp" android:textStyle="bold" />

<Button android:id="@+id/button7" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="20sp" android:layout_marginRight="20sp" android:layout_marginTop="10sp"

Page 36: Manual de aplicaciones de android

android:text="Wallpaper" android:textColor="#FFFFFF" android:textSize="30sp" android:textStyle="bold" /> </LinearLayout>

</RelativeLayout>

5.-En el código volveremos a enlazar y hacer lo mismo de las App anteriores.6.-En el case de cada botón pondremos un intent para que nos abra la aplicación que queramos, para esto dejo el código completo:package com.wero.allapp;

import android.os.Bundle;import android.app.Activity;import android.content.Intent;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.*;

public class AllApp extends Activity implements OnClickListener {

@Overrideprotected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);setContentView(R.layout.activity_all_app);Button b1 = (Button) findViewById(R.id.button1);Button b2 = (Button) findViewById(R.id.button2);Button b3 = (Button) findViewById(R.id.button3);Button b4 = (Button) findViewById(R.id.button4);Button b5 = (Button) findViewById(R.id.button5);Button b6 = (Button) findViewById(R.id.button6);Button b7 = (Button) findViewById(R.id.button7);b1.setOnClickListener(this);b2.setOnClickListener(this);b3.setOnClickListener(this);b4.setOnClickListener(this);b5.setOnClickListener(this);b6.setOnClickListener(this);b7.setOnClickListener(this);

}

@Overridepublic void onClick(View v) {

switch (v.getId()) {case R.id.button1:

Intent hm=new Intent(AllApp.this,HolaMundo.class);startActivity(hm);break;

case R.id.button2:

Page 37: Manual de aplicaciones de android

Intent op=new Intent(AllApp.this,Operaciones.class);startActivity(op);break;

case R.id.button3:Intent tb=new Intent(AllApp.this,Multiplicacion.class);startActivity(tb);break;

case R.id.button4:Intent zo=new Intent(AllApp.this,Zodiaco.class);startActivity(zo);break;

case R.id.button5:Intent nb=new Intent(AllApp.this,NumerosBinarios.class);startActivity(nb);break;

case R.id.button6:Intent ce=new Intent(AllApp.this,CalcularEdad.class);startActivity(ce);break;

case R.id.button7:Intent wp=new Intent(AllApp.this,Album.class);startActivity(wp);break;

}}

}

7.- Ahora nos dirigimos al AndroidManifest y colocamos los activitys correspondientes a cada App:<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.wero.allapp" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="18" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.wero.allapp.AllApp" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" />

Page 38: Manual de aplicaciones de android

</intent-filter> </activity> <activity android:name="com.wero.allapp.HolaMundo" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.DEFAULT" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name="com.wero.allapp.Album" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.DEFAULT" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name="com.wero.allapp.CalcularEdad" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.DEFAULT" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name="com.wero.allapp.Multiplicacion" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.DEFAULT" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name="com.wero.allapp.NumerosBinarios" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.DEFAULT" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>

Page 39: Manual de aplicaciones de android

<activity android:name="com.wero.allapp.Zodiaco" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.DEFAULT" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name="com.wero.allapp.Operaciones" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.DEFAULT" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application></manifest>

Nuestra aplicación está terminada, si te das cuenta es bastante sencilla, ya que solamente es abrir los archivos que ya tenemos creados. La aplicación debería quedar similar a esta:

Page 40: Manual de aplicaciones de android

COLORHEX

1.- Lo primero es el LinearLayout principal, esta vez con orientación vertical. Después de este otro LinearLayout con orientación horizontal.

2.-Dentro de este colocaremos dos TextView para el color rojo.3.-Despues agregamos una SeekBar.4.-Repetimos los pasos anteriores para los otros dos colores.5.-Colocamos un TextView para la tonalidad de color.

Page 41: Manual de aplicaciones de android
Page 42: Manual de aplicaciones de android

6.-Creamos otro linear horizontal y dentro de el creamos un seek bar, este nos sirve para avanzar o retroceder mediante una barra

7.-Cerramos el linear y creamos otro con la misma orientacion (horizontal) y repetimos el paso anterior de insertar dos textviews, ahora con los valores de verde.

Page 43: Manual de aplicaciones de android
Page 44: Manual de aplicaciones de android
Page 45: Manual de aplicaciones de android

8.-Como anteriormente hicimos lo primero es implementar metodos y clases, esta vez usaremos no el onclick si no el seekbarchangelistener que nos permite su uso.

9.-Proseguimos con la declaración de los TextViews y las seek bar. También tres variables de tipo entero que son iguales a cero. Posteriormente como si se tratara del método OnClick tenemos que declarar las 3 seek bar con el seekbarchangelistener y cerramos esta parte.

10.-El siguiente paso es el uso del switch y los casos por cada color (rojo, azul y verde).

11.-En esta parte se realiza el proceso donde las seek bar están concatenadas y al nosotros moverla esta cambiara tanto el fondo con el color que se muestre como así el número hexadecimal correspondiente al color. También se pueden usar al mismo tiempo las tres, lo que nos dará la combinación de colores y sus códigos también.

El código quedara de esta manera:

package com.wero.colordroid;

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

public class ColorDroid extends Activity implementsSeekBar.OnSeekBarChangeListener {

SeekBar rojo, verde, azul;TextView vrojo, vverde, vazul, hex, color;int r = 0, v = 0, a = 0;

@Overrideprotected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);setContentView(R.layout.activity_color_droid);rojo = (SeekBar) findViewById(R.id.rojo);verde = (SeekBar) findViewById(R.id.verde);azul = (SeekBar) findViewById(R.id.azul);hex = (TextView) findViewById(R.id.hex);color = (TextView) findViewById(R.id.color);

Page 46: Manual de aplicaciones de android

vrojo = (TextView) findViewById(R.id.vrojo);vverde = (TextView) findViewById(R.id.vverde);vazul = (TextView) findViewById(R.id.vazul);rojo.setOnSeekBarChangeListener(this);verde.setOnSeekBarChangeListener(this);azul.setOnSeekBarChangeListener(this);

}

@Overridepublic void onProgressChanged(SeekBar seekBar, int progress,

boolean fromUser) {switch (seekBar.getId()) {case R.id.rojo:

r = progress;break;

case R.id.verde:v = progress;break;

case R.id.azul:a = progress;break;

}String c = ColorHex(r, v, a);hex.setText("HEX: " + c);color.setBackgroundColor(android.graphics.Color.rgb(r,

v, a));}

public String ColorHex(int r, int v, int a) {String color = "";color = "#";color += Integer.toHexString(r);color += Integer.toHexString(v);color += Integer.toHexString(a);return color;

}

@Overridepublic void onStartTrackingTouch(SeekBar seekBar) {

vrojo.setText("R: " + r);vverde.setText("V: " + v);vazul.setText("A: " + a);

}

@Overridepublic void onStopTrackingTouch(SeekBar seekBar) {

vrojo.setText("R: " + r);vverde.setText("V: " + v);vazul.setText("A: " + a);

}

}

Page 47: Manual de aplicaciones de android

Como vemos con Android no tenemos limitantes podemos agregar bastantes cosas, y no es complicado solo lleva tiempo. Te dejo el resultado final.

Page 48: Manual de aplicaciones de android

REBOSO DROID

1.-Con el proyecto creado nos dirigimos al layout.

2.-Colocamos dos EditText y un botón.

El código quedara así.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:background="#230ff0"

android:orientation="vertical" >

<EditText

android:id="@+id/nombre"

android:layout_width="match_parent"

android:layout_height="60sp"

android:layout_margin="10sp"

android:background="#FFFFFF"

android:hint="Nombre"

android:maxLength="20"

android:textSize="50sp" />

<EditText

android:id="@+id/edad"

android:layout_width="match_parent"

android:layout_height="60sp"

android:layout_margin="10sp"

Page 49: Manual de aplicaciones de android

android:background="#FFFFFF"

android:hint="Edad"

android:maxLength="2"

android:numeric="integer"

android:textSize="50sp" />

<Button

android:id="@+id/enviar"

android:layout_width="match_parent"

android:layout_height="60sp"

android:layout_margin="10sp"

android:background="#FFFFFF"

android:text="Enviar"

android:textSize="50sp" />

</LinearLayout>

3.-Creamos otro activity y este solo tendrá un TextView.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:background="#230ff0"

android:orientation="vertical" >

<TextView

android:id="@+id/resultado"

Page 50: Manual de aplicaciones de android

android:layout_width="match_parent"

android:layout_height="match_parent"

android:layout_margin="10sp"

android:textSize="50sp" />

</LinearLayout>

4.-Creamos el código del Activity envía, este será como lo hemos visto, tendrá un intent , pero ahora nos mandará información.

package com.wero.bolsadroid;import android.os.Bundle;import android.app.Activity;import android.content.Intent;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.*;public class Envia extends Activity implements OnClickListener {EditText nombre,edad;Button enviar;

@Overrideprotected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);setContentView(R.layout.activity_envia);

nombre=(EditText)findViewById(R.id.nombre);edad=(EditText)findViewById(R.id.edad);enviar=(Button)findViewById(R.id.enviar);enviar.setOnClickListener(this);}@Overridepublic void onClick(View v) {

if (v.getId()==R.id.enviar){String n=nombre.getText().toString();String e=edad.getText().toString();

if((!n.equals("")|| !e.equals(""))||(!n.equals("")&& !e.equals(""))){

Intent enviardatos=new Intent (this,Recibe.class);enviardatos.putExtra("nombre", n);enviardatos.putExtra("edad", e);startActivity(enviardatos);

}else{Toast.makeText(this,"Faltan

Valores",Toast.LENGTH_LONG).show();}}

}

Page 51: Manual de aplicaciones de android

}

5.-Ahora creamos el código del activity recibe, este será de esta manera:

package com.wero.bolsadroid;

import android.os.Bundle;

import android.app.Activity;import android.widget.*;public class Recibe extends Activity {TextView resultado;String nombre="";int edad=0;

@Overrideprotected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);setContentView(R.layout.activity_recibe);

resultado=(TextView)findViewById(R.id.resultado);Bundle recibedatos=getIntent().getExtras();nombre=recibedatos.getString("nombre");edad=Integer.parseInt(recibedatos.getString("edad"));resultado.setText("Hola!!! "+nombre+"\n"+"tu edad es:

"+edad);}

}

6.-Ahora sólo queda agregar el segundo activity en AndroidManifest.

Nuestra App estaría terminada, esto nos ayuda demasiado para agregar información en algún sitio. La App se verá así al recibir el mensaje.

Page 52: Manual de aplicaciones de android

CALCULAR EDAD

1.-Creamos el proyecto.

2.-En el layout tenemos como primer elemento el LinearLayout principal con orientación vertical y dentro de este tenemos tres EditText, uno por cada elemento de la fecha de nacimiento (día, mes y año).

3.- Después, agregamos otro LinearLayout con orientación horizontal.

4.- Agregamos los botones, borrar y calcular y cerramos el LinearLayout.

5.- Por ultimo tenemos el TextView donde se mostrara el resultado de calcular la edad.

El código es el siguiente:

Page 53: Manual de aplicaciones de android

.

6.-En el código java nos dirigimos a la clase he implementamos el método OnClickListener.

Page 54: Manual de aplicaciones de android

7.-Despues enlazamos nuestros views con el layout y a nuestros botones agregamos el método OnClickListener.

8.-Colocamos el proceso de nuestros botones con el switch-case.

9.-El primer proceso es el de calcular, tomamos la información de nuestros EditText y nos encargamos de convertirlo a tipo entero.

10.-Déspues declaramos 6 variables de tipo entero, su función será determinar la fecha actual para comparar con la que el usuario introduzca.

11. Luego pasamos a las condiciones para que nos de la fecha correcta y sin números negativos y para que reste bien.

12.-El primer caso es cuando el día de nacimiento es mayor al actual.

13.-El siguiente es cuando el mes de nacimiento es mayor al mes actual.

14.-El otro caso es cuando el día actual es mayor y el mes es igual.

15.-Cuando tengamos declarados los casos mandamos el mensaje a nuestro TextView con el resultado.

16.-En caso contrario nos manda un mensaje de que los valores son incorrectos.

17.-Cerramos el case y abrimos el ultimo para nuestro botón borrar.

Este es el código:

package com.wero.calcularedad;

import android.os.Bundle;import android.app.Activity;import android.view.View;import android.view.View.OnClickListener;import android.widget.*;

public class CalcularEdad extends Activity implements OnClickListener {

int anos, meses, dias;EditText edtano, edtmes, edtdia, edtnombre;

Page 55: Manual de aplicaciones de android

TextView txtResultado;Button btnCalcular, btnBorrar;

@Overrideprotected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);setContentView(R.layout.activity_calcular_edad);edtdia = (EditText) findViewById(R.id.dia);edtmes = (EditText) findViewById(R.id.mes);edtano = (EditText) findViewById(R.id.ano);edtnombre = (EditText) findViewById(R.id.nombre);txtResultado = (TextView) findViewById(R.id.res);btnCalcular = (Button) findViewById(R.id.cal);btnBorrar = (Button) findViewById(R.id.bor);btnCalcular.setOnClickListener(this);btnBorrar.setOnClickListener(this);

}

@Overridepublic void onClick(View v) {

switch (v.getId()) {case R.id.cal:

String u = edtdia.getText().toString();String g = edtmes.getText().toString();String k = edtano.getText().toString();if (!u.equals("") && !g.equals("") && !

k.equals("")) {int dia =

Integer.parseInt(edtdia.getText().toString());int mes =

Integer.parseInt(edtmes.getText().toString());int ano =

Integer.parseInt(edtano.getText().toString());

if (04 == mes) {if (22 >= dia) {

anos = 2015 - ano;} else {

anos = 2015 - ano - 1;}

}if (04 > mes) {

anos = 2015 - ano;} else {

if (04 < mes) {anos = 2015 - ano - 1;

}}if (04 == mes) {

meses = 0;}if (04 == mes && dia > 22) {

Page 56: Manual de aplicaciones de android

meses = 11;}if (04 < mes) {

meses = 04 - mes;meses = 12 + meses;

}if (04 < mes && dia > 22) {

meses = 04 - mes;meses = 12 + meses - 1;

}if (04 > mes) {

meses = 04 - mes;}if (04 > mes && dia > 22) {

meses = 04 - mes - 1;}if (dia == 22) {

dias = 0;} else {

if (22 > dia) {dias = 22 - dia;

} else {switch (04) {case 1:

dias = 22 - dia;dias = 30 + dias;break;

}}

}

}txtResultado.setText("Tienes: " + anos + " anos,

con: " + meses+ " meses y: " + dias + " dias");

if(dias>30 && dias<0 && meses>12&& meses<0 && anos>2015 && anos>1980){

txtResultado.setText("Valores Incorrectos");}

break;

case R.id.bor:edtdia.setText("");edtmes.setText("");edtano.setText("");edtnombre.setText("");txtResultado.setText("");

Page 57: Manual de aplicaciones de android

break;

}

}

}

En esta aplicación es cuestión de hacer bien las condiciones, porque en caso contrario nos dará un resultado no deseado. Te dejó el ejemplo.

Page 58: Manual de aplicaciones de android

PHONEGAP

1.-Una vez preparado el proyecto para usar PhoneGap como hemos indicado anteriormente, ahora abriremos el fichero .java de nuestra aplicación.

2.-Modificaremos el código anterior por el siguiente, para que la aplicación no inicie el activity anterior sino que lance un fichero HTML correspondiente al proyecto PhoneGap. Para ello añadiremos el siguiente código:

package com.wero.phonegap;

import android.os.Bundle;

import org.apache.cordova.*;

public class MainActivity extends DroidGap

{

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

super.loadUrl("file://android_asset/www/index.html");

}

}

3.-Como se puede observar el único código Java que usaremos en nuestro proyecto será el anterior para iniciar el fichero PhoneGap (index.html), el resto de código y lógica de la aplicación se desarrollará con HTML y JavaScript (como indicaremos a continuación).

Page 59: Manual de aplicaciones de android

4.-Crearemos el fichero "index.html" que será el que lanzará la aplicación, con formato HTML, para ello, desde la carpeta "assets/www", pulsaremos con el botón derecho del ratón y seleccionaremos "New" - "File".

5.-En "File name" introduciremos "index.html":

6-Tras crear el fichero "index.html", para abrirlo directamente desde Eclipse, pulsaremos con el botón derecho del ratón sobre él (en Project Explorer) y seleccionaremos "Open with" - "Text Editor":

7.-Introduciremos el código HTML y Javascrit de la aplicación PhoneGap, como ejemplo introduciremos el siguiente código:

<!DOCTYPE HTML><html><head><title>PhoneGap</title>

<script type="text/javascript" charset="utf-8" src="cordova-2.7.0.js">

</script>

</head><body><h1>Hola mundo PhoneGap</h1><p>Ejemplo de aplicación Android con PhoneGap y Eclipse</p></body></html>

8.-Guardaremos los cambios.

Eso sería todo en esta aplicación, podemos ver que es muy sencilla y que depende del framework, sin él no funciona esta App. Ahora te dejo la aplicación funcionando.

Page 61: Manual de aplicaciones de android

BD INSERTAR, MODIFICAR, ELIMINAR Y CONSULTAR

1.-En esta ocasión resumiré el layout, requerimos de tres EditText verticales, cinco botones horizontales, otro EditText, este ira con los botones y un TextView. Quedará así.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#000000" android:orientation="vertical" >

<EditText android:id="@+id/nombre" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="10sp" android:background="#00CCFF" android:gravity="center" android:hint = "Marca" android:maxLength="20" android:textSize="20sp" />

<EditText android:id="@+id/apellido" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="10sp" android:background="#00CCFF" android:gravity="center" android:hint = "RAM" android:maxLength="20" android:textSize="20sp" />

<EditText android:id="@+id/edad" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="10sp" android:background="#00CCFF" android:gravity="center" android:hint = "Procesador" android:maxLength="20" android:textSize="20sp" />

<LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="0" android:orientation="horizontal" >

Page 62: Manual de aplicaciones de android

<Button android:id="@+id/insertar" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="10sp" android:layout_weight = "1" android:background="#FFFFFF" android:gravity="center" android:maxLength="20" android:onClick="Insertar" android:text = "Insertar" android:textSize="20sp" />

<Button android:id="@+id/ver" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="10sp" android:layout_weight="1" android:background="#FFFFFF" android:onClick="Ver" android:text = "Ver" android:textSize="20sp" /> <Button android:id="@+id/borrar" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="10sp" android:layout_weight="1" android:background="#FFFFFF" android:onClick="Borrar" android:text = "Borrar" android:textSize="20sp" />

</LinearLayout>

<LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="0" android:orientation="horizontal" >

<EditText android:id="@+id/id" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight = "1" android:layout_margin="10sp" android:background="#00CCFF" android:gravity="center" android:hint = "ID" android:maxLength="20" android:textSize="20sp" />

<Button android:id="@+id/buscar"

Page 63: Manual de aplicaciones de android

android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" android:layout_margin="10sp" android:background="#FFFFFF" android:onClick="Buscar" android:text = "buscar" android:textSize="20sp" /> <Button android:id="@+id/modificar" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="10sp" android:layout_weight="1" android:background="#FFFFFF" android:onClick="Modificar" android:text = "Modificar" android:textSize="20sp" /> </LinearLayout> <ScrollView android:layout_width="match_parent" android:layout_height="wrap_content" >

<TextView android:id="@+id/tver" android:layout_width="match_parent" android:layout_height="wrap_content" android:text = "TextView" android:textColor="#FFFFFF" /> </ScrollView>

</LinearLayout>

2.-En java primero hay que crear un auxiliar de android para base de datos. El sqlite, aquí crearemos la tabla y los campos de la misma.

import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteDatabase.CursorFactory;import android.database.sqlite.SQLiteOpenHelper;

public class BaseDatos extends SQLiteOpenHelper {

public BaseDatos(Context context) {super(context, "compu.db", null, 1);

}

@Overridepublic void onCreate(SQLiteDatabase db) {

Page 64: Manual de aplicaciones de android

String sql="Create table compus(id integer primary key autoincrement, marca text, ram text, procesador text);";

db.execSQL(sql);

}

@Override public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {

}

}

3.-Para usar el sqlite debemos crear una nueva clase en nuestra carpeta src, una vez hecho esto implementamos unas librerías e implementamos el método después nos pondrá dos predeterminados y en ellos crearemos la tabla y los campos con el lenguaje sql .

import android.content.ContentValues;

import android.content.Context;

import android.database.Cursor;

import android.database.sqlite.SQLiteDatabase;

import android.widget.Toast;

public class Compus {

String marca, ram , procesador;

int idn;

Context contextoEjecucion;

BaseDatos creador;

SQLiteDatabase mDatos;

public Compus (Context c){

contextoEjecucion = c;

}

Page 65: Manual de aplicaciones de android

public Compus abrirSqlite(){

creador = new BaseDatos (contextoEjecucion);

mDatos = creador.getWritableDatabase();

return this;

}

public void elimina(int id){

creador = new BaseDatos (contextoEjecucion);

mDatos = creador.getReadableDatabase();

String sql = ("delete from compus where id="+id);

mDatos.execSQL(sql);

}

public void insertar(String marca, String ram, String procesador){

creador = new BaseDatos (contextoEjecucion);

mDatos = creador.getReadableDatabase();

String sql = ("insert into compus(marca,ram,procesador) values('"+marca+"','"+ram+"','"+procesador+"')");

mDatos.execSQL(sql);

}

public void modificar(int id,String marca, String ram, String procesador){

creador = new BaseDatos (contextoEjecucion);

mDatos = creador.getReadableDatabase();

String sql = ("update compus set marca='"+marca+"', ram='"+ram+"', procesador='"+procesador+"' where id="+id);

mDatos.execSQL(sql);

}

public boolean consultar(int id){

Page 66: Manual de aplicaciones de android

creador = new BaseDatos (contextoEjecucion);

mDatos = creador.getReadableDatabase();

String sql = ("Select * from compus where id="+id);

Cursor cur = mDatos.rawQuery(sql, null);

if(cur.getCount()==0){

return false;

}else{

cur.moveToFirst();

idn=cur.getInt(0);

marca=cur.getString(1);

ram=cur.getString(2);

procesador=cur.getString(3);

return true;

}

}

public String getMarca(){

return marca;

}

public String getRam(){

return ram;

}

public String getProcesador(){

return procesador;

}

public int getId(){

return idn;

Page 67: Manual de aplicaciones de android

}

public String ver(){

String datos="";

creador = new BaseDatos (contextoEjecucion);

mDatos = creador.getReadableDatabase();

String sql = ("Select * from compus");

Cursor cur = mDatos.rawQuery(sql, null);

cur.moveToFirst();

do{

datos+= cur.getString(0) + "\t " + cur.getString(1) + "\t " + cur.getString(2) + " \t" + cur.getString(3) + "\n";

}while (cur.moveToNext());

return datos;

}

public void cerrarSqlite(){

creador.close();

}

}

4.-Una vez creada nuestra bd podemos ir a la programación habitual para el proceso de los botones y el enlace de la bd y los views.

import android.os.Bundle;import android.app.Activity;import android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.TextView;import android.widget.Toast;

public class Pricipal extends Activity {EditText eNombre, eApellido, eEdad,id;

TextView tVer;

Page 68: Manual de aplicaciones de android

Button insertar, ver,buscar,borrar; int idm; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_pricipal); insertar = (Button)findViewById(R.id.insertar); ver = (Button)findViewById(R.id.ver); buscar = (Button)findViewById(R.id.buscar); borrar = (Button)findViewById(R.id.borrar); eNombre = (EditText)findViewById(R.id.nombre); id = (EditText)findViewById(R.id.id); eApellido = (EditText)findViewById(R.id.apellido); eEdad = (EditText)findViewById(R.id.edad); tVer = (TextView)findViewById(R.id.tver); } public void Insertar(View v){

String marca = eNombre.getText().toString(); String ram = eApellido.getText().toString(); String procesador = eEdad.getText().toString(); Compus p = new Compus(Pricipal.this); p.abrirSqlite(); p.insertar(marca, ram, procesador); p.cerrarSqlite();

} public void Ver(View v){ Compus p = new Compus(Pricipal.this); p.abrirSqlite(); String datos=p.ver(); p.cerrarSqlite(); tVer.setText(datos); }

public void Borrar(View v){Compus p = new Compus(Pricipal.this);

p.abrirSqlite(); p.elimina(idm); p.cerrarSqlite(); Toast.makeText(this,"Registro eliminado id="+idm,

Toast.LENGTH_LONG).show(); limpiar(); }

public void limpiar(){ eApellido.setText("");

eEdad.setText(""); eNombre.setText(""); id.setText(""); tVer.setText(""); } public void Modificar(View v){

String marca = eNombre.getText().toString(); String ram = eApellido.getText().toString(); String procesador = eEdad.getText().toString(); Compus p = new Compus(Pricipal.this);

Page 69: Manual de aplicaciones de android

p.abrirSqlite(); p.modificar(idm, marca, ram, procesador); limpiar(); p.cerrarSqlite(); }

public void Buscar(View v){

if(id.length()==0){ Toast.makeText(this,"Introduce ID",

Toast.LENGTH_LONG).show(); }else{ Compus p = new Compus(Pricipal.this); int i=Integer.parseInt(id.getText().toString()); p.abrirSqlite(); if(p.consultar(i)==false){ Toast.makeText(this,"Registro no encontrado",

Toast.LENGTH_LONG).show(); } idm=p.getId(); eNombre.setText(""+p.getMarca()); eApellido.setText(""+p.getRam()); eEdad.setText(""+p.getProcesador()); p.cerrarSqlite(); } }

}

Ahora manejamos el Manual de una manera más complicada, te doy lo básico y tú tienes que seguir con el código, que está muy fácil de entender. Te dejo el funcionamiento.

Page 70: Manual de aplicaciones de android

LISTVIEW

1.-En el layout colocamos un ImageView, después un LinearLayout vertical y dentro de este dos TextView. El código es el siguiente.

<?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="wrap_content"android:orientation="horizontal" >

<ImageViewandroid:id="@+id/imageView_imagen"android:layout_width="80dp"android:layout_height="80dp"android:adjustViewBounds="true"android:scaleType="fitXY"android:contentDescription = "Descripción del contenido de la imagen" android:src="@android:drawable/ic_menu_gallery" />

<LinearLayoutandroid:layout_width="fill_parent"android:layout_height="match_parent"android:gravity="center"android:orientation="vertical" >

<TextViewandroid:id="@+id/textView_superior"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text = "Large Text" android:textAppearance="?android:attr/textAppearanceLarge" />

<TextViewandroid:id="@+id/textView_inferior"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text = "Small Text" android:textAppearance="?android:attr/textAppearanceSmall" />

</LinearLayout>

</LinearLayout>

2.-En el código java declaramos nuestras variables como normalmente lo hacemos y agregamos el ListActivity.

3.-Simulamos que extraemos el contenido de una base de datos.

4.-Lo insertamos en una BD.

Page 71: Manual de aplicaciones de android

El código es el siguiente:

package com.wero.listview;

import android.app.ListActivity;

import android.database.MatrixCursor;

import android.os.Bundle;

import android.support.v4.widget.SimpleCursorAdapter;

import android.view.View;

import android.widget.ListView;

import android.widget.TextView;

import android.widget.Toast;

public class EntradaActivity extends ListActivity{

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

//Simulamos que extraemos los datos de la base de datos a un cursor

String[] columnasBD = new String[] {"_id", "imagen", "textoSuperior", "textoInferior"};

Page 72: Manual de aplicaciones de android

MatrixCursor cursor = new MatrixCursor(columnasBD);

cursor.addRow(new Object[] {"0", R.drawable.im_buho, "BUHO", "Búho es el nombre común de aves de la familia Strigidae, del orden de las estrigiformes o aves rapaces nocturnas."});

cursor.addRow(new Object[] {"1", R.drawable.im_colibri, "COLIBRÍ", "Los troquilinos (Trochilinae) son una subfamilia de aves apodiformes de la familia Trochilidae, conocidas vulgarmente como colibríes, quindes, tucusitos, picaflores, chupamirtos, chuparrosas, huichichiquis (idioma nahuatl), mainumby (idioma guaraní) o guanumby."});

cursor.addRow(new Object[] {"2", R.drawable.im_cuervo, "CUERVO", "El cuervo común (Corvus corax) es una especie de ave paseriforme de la familia de los córvidos (Corvidae)."});

cursor.addRow(new Object[] {"3", R.drawable.im_flamenco, "FLAMENCO", "Los fenicopteriformes (Phoenicopteriformes), los cuales reciben el nombre vulgar de flamencos, son un orden de aves neognatas, con un único género viviente: Phoenicopterus."});

cursor.addRow(new Object[] {"4", R.drawable.im_kiwi, "KIWI", "Los kiwis (Apterix, gr. 'sin alas') son un género de aves paleognatas compuesto por cinco especies endémicas de Nueva Zelanda.1 2 Son aves no voladoras pequeñas, aproximadamente del tamaño de una gallina."});

Page 73: Manual de aplicaciones de android

cursor.addRow(new Object[] {"5", R.drawable.im_loro, "LORO", "Las Psitácidas (Psittacidae) son una familia de aves psitaciformes llamadas comúnmente loros o papagayos, e incluye a los guacamayos, las cotorras, los periquitos, los agapornis y formas afines."});

//Añadimos los datos al Adapter y le indicamos donde dibujar cada dato en la fila del Layout

String[] desdeEstasColumnas = {"imagen", "textoSuperior", "textoInferior"};

int[] aEstasViews = {R.id.imageView_imagen, R.id.textView_superior, R.id.textView_inferior};

SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, R.layout.entrada, cursor, desdeEstasColumnas, aEstasViews, 0);

ListView listado = getListView();

listado.setAdapter(adapter);

}

@Override

public void onListItemClick(ListView lista, View view, int posicion, long id) {

Page 74: Manual de aplicaciones de android

// Hacer algo cuando un elemento de la lista es seleccionado

TextView textoTitulo = (TextView) view.findViewById(R.id.textView_superior);

CharSequence texto = "Seleccionado: " + textoTitulo.getText();

Toast.makeText(getApplicationContext(), texto, Toast.LENGTH_LONG).show();

}

}

Como veras es muy sencilla y nos ayuda a poder visualizar datos, estos a simple vista. Resultado:

MENU

Page 75: Manual de aplicaciones de android

1.-En el layout lo único que necesitaremos es un TextView.

<?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" android:background="#ffffbb">

<TextViewandroid:id="@+id/textView"android:textColor="#000000"android:textSize="24sp"

android:layout_width="fill_parent" android:layout_height="wrap_content" android:text = "Una aplicación con menú. \n Pulse la tecla MENU y seleccione las opciones \n" />

</LinearLayout>

2.- En el java, debajo del Activity se crean nuevas variables de tipoTextView y LinearLayout, después e declaran las variables debajo del onCreate.

3.-Ya debajo del onCreateOptionsMenu se declaran las opciones del menú que se creara al igual que sus nombres e iconos de los mismos.

4.-Despues en el onOptionsItemSelected se crea una variable de tipo int para los id de la opción del menú que se ha seleccionado, seguido de las condiciones que conllevan cada uno de estos id y las acciones que realizarán una vez seleccionados.

El código es el siguiente:

import android.app.Activity;import android.os.Bundle;import android.view.Menu;import android.view.MenuItem;import android.widget.TextView;

public class MenusActivity extends Activity {

TextView tv;/** Called when the activity is first created. */

@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); tv=(TextView) findViewById(R.id.textView); }

Page 76: Manual de aplicaciones de android

@Override public boolean onCreateOptionsMenu(Menu menu){

super.onCreateOptionsMenu(menu); MenuItem item1= menu.add(0,1,1,"Opcion 1"); MenuItem item2= menu.add(0,2,2,"Opcion 2"); MenuItem item3= menu.add(0,3,3,"Opcion 3"); MenuItem item4= menu.add(0,4,4,"Opcion 4"); MenuItem item5= menu.add(0,5,5,"Opcion 5"); MenuItem item6= menu.add(0,6,6,"Opcion 6"); MenuItem item7= menu.add(0,7,7,"Opcion 7"); MenuItem item8= menu.add(0,8,8,"Opcion 8");

item1.setIcon(R.drawable.ic_launcher); item2.setIcon(R.drawable.ic_launcher); item3.setIcon(R.drawable.ic_launcher); return true; } @Override public boolean onOptionsItemSelected(MenuItem item){

int id= item.getItemId(); tv.append("\n Ha pulsado la opcion "+id); return true;

} }

Es muy sencillo hacerla, y esto tiene diferentes usos pero ya dependerá de cada quien como lo implementara.

TABHOST

Page 77: Manual de aplicaciones de android

1.-Insertamos el TABHOST desde la parte gráfica y nos ahorra casi todo el trabajo.

2.-Localizamos todos los tabs, y dentro de ellos colocamos todo lo que queramos que se visualice.

Este sería el código:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" >

<TabHost android:id="@android:id/tabhost" android:layout_width="match_parent" android:layout_height="match_parent" >

<LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" >

<TabWidget android:id="@android:id/tabs" android:layout_width="match_parent" android:layout_height="wrap_content" > </TabWidget>

<FrameLayout android:id="@android:id/tabcontent" android:layout_width="match_parent" android:layout_height="match_parent" >

<LinearLayout android:id="@+id/tab1"

android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" >

<TextView android:id="@+id/texto" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text = "Actualmente no has tenido llamadas" /> </LinearLayout> <LinearLayout android:id="@+id/tab2" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" > <TextView

Page 78: Manual de aplicaciones de android

android:id = "@+id/texto" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text = "No has iniciado ninguna conversacion" /> </LinearLayout> <LinearLayout android:id="@+id/tab3" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:gravity="center" >

<TextView android:id="@+id/contacto" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="#04E100" android:textSize="60sp" android:textStyle="italic" android:text = "Lo sentimos no tienes contactos, agrega a alguien para iniciar una conversacion" />

</LinearLayout> </FrameLayout> </LinearLayout> </TabHost>

</LinearLayout>

3.-En java enlazamos con el layout y colocamos que trabajaremos con TABHOST.4.-Insertamos el código que nos dará el nombre a la pestaña, y su id.El código quedaría así:package com.wero.whatsapps;

import android.os.Bundle;import android.app.Activity;import android.view.*;import android.widget.*;import android.widget.TabHost.TabSpec;public class Wa extends Activity{TabHost tabHost;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_wa);tabHost=(TabHost) findViewById(android.R.id.tabhost);

tabHost.setup();TabSpec ts1=tabHost.newTabSpec("tab1");ts1.setIndicator("Llamadas");ts1.setContent(R.id.tab1);

Page 79: Manual de aplicaciones de android

tabHost.addTab(ts1);

tabHost.setup();TabSpec ts2=tabHost.newTabSpec("tab2");ts2.setIndicator("Conversaciones");ts2.setContent(R.id.tab2);tabHost.addTab(ts2);

tabHost.setup();TabSpec ts3=tabHost.newTabSpec("tab3");ts3.setIndicator("Contactos");ts3.setContent(R.id.tab3);tabHost.addTab(ts3);

}

}

La aplicación final es la siguiente:

ACELEROMETRO

Page 80: Manual de aplicaciones de android

1.-tenemos el LinearLayout principal con orientación vertical y dentro tres TextView mismos que nos mostraran los datos obtenidos por el sensor. La posición x, la posición y la posición z.

2.-Por ultimo tenemos un ImageView por que la aplicación mostrara una imagen por cada posición en un número determinado en ellas, cerramos el linear y el código quedará así.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#FFF" android:orientation="vertical" tools:context=".Acelerometro" >

<TextView android:id="@+id/posisionx" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_margin="10dp" android:layout_weight="1" android:gravity="center" android:text="X" android:textColor="#000" android:textSize="50sp" />

<TextView android:id="@+id/posisiony" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_margin="10dp" android:layout_weight="1" android:gravity="center" android:text="Y" android:textColor="#000" android:textSize="50sp"/>

<TextView android:id="@+id/posisionz" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_margin="10dp" android:layout_weight="1" android:gravity="center" android:text="Z" android:textColor="#000" android:textSize="50sp" />

</LinearLayout>

Page 81: Manual de aplicaciones de android

3.-En el código java primero tenemos las librerías y aquí agregamos dos para que funcione el sensor del acelerómetro.

4.-Declaramos el método sensoreventlistener para que este funcione y también el ImageView, TextView y el sensor.

5.-Despues lo enlazamos con el archivo xml.

6.-Se crean 3 procesos, OnResume, OnPause.

7.-Despues el proceso de mostrar un color dependiendo la posición.

8.-Se toma el valor del sensor y se muestra en el TextView, así por cada posición x, y, z y con la condición de if se da un valor predeterminado por posición y así mostrara la imagen dependiendo del número que obtenga el sensor en la posición.

El código quedará así:package com.wero.acelerometro;

import java.util.List;

Page 82: Manual de aplicaciones de android

import android.app.Activity;import android.content.pm.ActivityInfo;import android.graphics.Color;import android.hardware.Sensor;import android.hardware.SensorEvent;import android.hardware.SensorEventListener;import android.hardware.SensorManager;import android.os.Bundle;import android.widget.TextView;import android.widget.Toast;

public class Acelerometro extends Activity implements SensorEventListener {

TextView posicionx,posiciony,posicionz;private Sensor acelerometro;

@Overrideprotected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);setContentView(R.layout.activity_acelerometro);

posicionx= (TextView) findViewById(R.id.posisionx);posiciony= (TextView) findViewById(R.id.posisiony);posicionz= (TextView) findViewById(R.id.posisionz);

this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

}

protected void onResume() {super.onResume();

Page 83: Manual de aplicaciones de android

SensorManager sm = (SensorManager) getSystemService(SENSOR_SERVICE);

List<Sensor> sensors = sm.getSensorList(Sensor.TYPE_ACCELEROMETER);

if (sensors.size() > 0) {

sm.registerListener(this, sensors.get(0),SensorManager.SENSOR_DELAY_GAME);

}}

protected void onPause() {SensorManager mSensorManager = (SensorManager)

getSystemService(SENSOR_SERVICE);mSensorManager.unregisterListener(this, acelerometro);super.onPause();

}

protected void onStop() {SensorManager mSensorManager = (SensorManager)

getSystemService(SENSOR_SERVICE);mSensorManager.unregisterListener(this, acelerometro);super.onStop();

}

@Overridepublic void onSensorChanged(SensorEvent event) {

float xfondo=event.values[SensorManager.DATA_X];float yfondo=event.values[SensorManager.DATA_Y];float zfondo=event.values[SensorManager.DATA_Z];

if(xfondo<9.6){posicionx.setBackgroundColor(Color.TRANSPARENT);

Page 84: Manual de aplicaciones de android

posicionx.setText(null);}if(yfondo<9.6){

posiciony.setBackgroundColor(Color.TRANSPARENT);posiciony.setText(null);

}if(zfondo<9.6){

posicionz.setBackgroundColor(Color.TRANSPARENT);posicionz.setText(null);

}

if(xfondo>=9.6){posicionx.setBackgroundColor(Color.CYAN);posicionx.setText("Celular moviendose en x");

}

if(xfondo<9.6){posicionx.setBackgroundResource(R.drawable.blanco);

}

if(yfondo>=9.6){posiciony.setBackgroundColor(Color.YELLOW);posiciony.setText("Celular moviendose en y");

}if(yfondo<9.6){

posiciony.setBackgroundResource(R.drawable.blanco);}

if(zfondo>=9.6){posicionz.setBackgroundColor(Color.MAGENTA);posicionz.setText("Celular moviendose en z");

}if(zfondo<9.6){

posicionz.setBackgroundResource(R.drawable.blanco);

Page 85: Manual de aplicaciones de android

}}

@Overridepublic void onAccuracyChanged(Sensor arg0, int arg1) {

// TODO Auto-generated method stub

}

}Así es como nos adentramos a algo más elaborado, pero esta función sirve demasiado y con buena creatividad puede surgir algo muy bueno. Aplicación final:

Page 86: Manual de aplicaciones de android

CANVAS1.-Creamos un nuevo proyecto.2.- En el archivo XML no alteraremos nada y quedara como esta por defecto.3.-Creamos dos archivos java, se llamaran igual, la única diferencia es que uno tendrá extra View.4.- Después de crearlos vamos al java principal y ponemos el siguiente código que hará que en pantalla se muestre el segundo java.Código:package com.example.drawing;

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

public class Drawing extends Activity{ protected void onCreate(Bundle paramBundle) { super.onCreate(paramBundle); setContentView(new DrawinView(this)); }}5.-Nos pasamos al segundo java, agregamos los siguientes métodos y librerías para ahí poder dibujar.6.-Definimos un Paint para utilizar los colores del sistema y ponemos canvas para comenzar a dibujar.Código:import android.content.Context;import android.graphics.Canvas;import android.graphics.Paint;import android.util.AttributeSet;import android.view.View;

public class DibujarView extends View

Page 87: Manual de aplicaciones de android

{ Paint paint = new Paint();

public DibujarView(Context paramContext) { super(paramContext); }

public DibujarView(Context paramContext, AttributeSet paramAttributeSet) { super(paramContext, paramAttributeSet); }

public DibujarView(Context paramContext, AttributeSet paramAttributeSet, int paramInt) { super(paramContext, paramAttributeSet, paramInt); }

protected void onDraw(Canvas paramCanvas) { super.onDraw(paramCanvas); this.paint.setColor(-65536); paramCanvas.drawCircle(150.0F, 150.0F, 100.0F, this.paint); this.paint.setColor(-16711936); paramCanvas.drawRect(30.0F, 20.0F, 170.0F, 400.0F, this.paint); this.paint.setColor(-256); paramCanvas.drawRect(60.0F, 140.0F, 90.0F, 90.0F, this.paint); this.paint.setColor(-16776961); paramCanvas.drawRect(120.0F, 250.0F, 60.0F, 190.0F, this.paint); this.paint.setColor(-256); paramCanvas.drawRect(130.0F, 150.0F, 100.0F, 90.0F, this.paint); this.paint.setColor(-16777216); paramCanvas.drawRect(80.0F, 180.0F, 100.0F, 110.0F, this.paint);

Page 88: Manual de aplicaciones de android

}}En android podemos llevarnos bastante tiempo y nunca terminaremos de hacer algo nuevo, es sencillo hacer una aplicación con canvas solo es tener imaginación.Resultado:

Page 89: Manual de aplicaciones de android

GATO1.-Creamos un proyecto nuevo, y buscamos la carpeta en que se encuentra.2.-La abrimos y buscamos la carpeta res.3.-Después nos vamos a la carpeta drawable-mdpi.4.-En esta carpeta metemos nuestras dos imágenes de gato y ratón que utilizaremos.5.-Nos vamos al eclipse y vamos al archivo XML.6.-Quitamos los elementos que no nos sirven.7.-Transformamos a LinearLayout.8.-Agregamos tres LinearLayout con 3 ImageView Cada uno. 9.-Ponemos text view para ver nuestro progreso en el juego.CODIGO<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:background="#fff"android:orientation="vertical"tools:context=".MainActivity" ><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:layout_weight=".85"android:orientation="horizontal" >

<ImageViewandroid:id="@+id/uno"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_weight= "1" android:layout_margin="5sp"android:background="#cccccc"/>

Page 90: Manual de aplicaciones de android

<ImageViewandroid:id="@+id/dos"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_weight="1"android:layout_margin="5sp"android:background="#cccccc" />

<ImageViewandroid:id="@+id/tres"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_weight="1"android:layout_margin="5sp"android:background="#cccccc"/></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:layout_weight=".85"android:orientation="horizontal" >

<ImageViewandroid:id="@+id/cuatro"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_weight= "1" android:layout_margin="5sp"android:background="#cccccc"/>

<ImageViewandroid:id="@+id/cinco"android:layout_width="match_parent"android:layout_height="match_parent"

Page 91: Manual de aplicaciones de android

android:layout_weight="1"android:layout_margin="5sp"android:background="#cccccc"/>

<ImageViewandroid:id="@+id/seis"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_weight="1"android:layout_margin="5sp"android:background="#cccccc"/></LinearLayout>

<LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:layout_weight=".85"android:orientation="horizontal" >

<ImageViewandroid:id="@+id/siete"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_weight= "1" android:layout_margin="5sp"android:background="#cccccc"/>

<ImageViewandroid:id="@+id/ocho"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_weight="1"android:layout_margin="5sp"android:background="#cccccc"/>

Page 92: Manual de aplicaciones de android

<ImageViewandroid:id="@+id/nueve"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_weight="1"android:layout_margin="5sp"android:background="#cccccc"/></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:layout_weight="1"android:orientation="horizontal" >

<TextViewandroid:layout_width="match_parent"android:layout_height="match_parent"android:layout_weight= "1" android:text= "Jugador: " android:textSize="20sp" />

<TextViewandroid:id="@+id/jugador"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_weight="1"android:text= "0" android:textSize="20sp" /></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:layout_weight="1"android:orientation="horizontal" >

Page 93: Manual de aplicaciones de android

<TextViewandroid:layout_width="match_parent"android:layout_height="match_parent"android:layout_weight= "1" android:text= "CPU: " android:textSize="20sp" />

<TextViewandroid:id="@+id/cpu"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_weight="1"android:text= "0" android:textSize="20sp" /></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:layout_weight="1"android:orientation="horizontal" >

<TextViewandroid:layout_width="match_parent"android:layout_height="match_parent"android:layout_weight= "1" android:text= "Empates: " android:textSize="20sp" />

<TextViewandroid:id="@+id/empates"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_weight="1"android:text= "0" android:textSize="20sp" />

Page 94: Manual de aplicaciones de android

</LinearLayout>

</LinearLayout>

10.-Nos vamos al archivo java.11.-Agregamos las librerías que utilizaremos.12.-Agregamos algunas variables que utilizaremos.13.-Las definimos y agregamos el método OnClick. 14.-Dentro del método OnClick ponemos un switch para ver qué imagen selecciona el usuario y agregamos dos métodos propios aparte.15.-Agregamos todos los ImageView.16-El método ChecarSiGana es para verificar si el usuario o el CPU han ganado el juego y solo hay 8 formas posibles de ganar, entonces se declara si uno u otro ha ganado y se define una condición.17.-En el método anterior se utiliza otro método que es para borrar todo el tablero. 18.-Empezar el juego de nuevo.19.-En el otro método que agregamos ponemos que tire el CPU de forma aleatoria y entonces se coloque una imagen en el ImageView que se escogió.20.-Cuando gana el usuario entonces se pone en el TextView un número mayor y pasa lo mismo cuando gana el CPU y cuando hay un empate.Te dejo el código:

import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.view.View;import android.view.View.OnClickListener;import android.widget.ImageView;import android.widget.TextView;import android.widget.Toast;

Page 95: Manual de aplicaciones de android

public class MainActivity extends Activity implements OnClickListener {int gato[] = new int[9];boolean ganaUsuario = false, ganaSmartPhone = false, empate = false;int aleatorio, gusuario = 0, gcpu = 0, empates = 0, tiros = 0;ImageView uno, dos, tres, cuatro, cinco, seis, siete, ocho, nueve;TextView gusu, gSmart, em;

@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);gusu = (TextView) findViewById(R.id.jugador);gSmart = (TextView) findViewById(R.id.cpu);em = (TextView) findViewById(R.id.empates);uno = (ImageView) findViewById(R.id.uno);dos = (ImageView) findViewById(R.id.dos);tres = (ImageView) findViewById(R.id.tres);cuatro = (ImageView) findViewById(R.id.cuatro);cinco = (ImageView) findViewById(R.id.cinco);seis = (ImageView) findViewById(R.id.seis);siete = (ImageView) findViewById(R.id.siete);ocho = (ImageView) findViewById(R.id.ocho);nueve = (ImageView) findViewById(R.id.nueve);uno.setOnClickListener(this);dos.setOnClickListener(this);tres.setOnClickListener(this);cuatro.setOnClickListener(this);cinco.setOnClickListener(this);seis.setOnClickListener(this);siete.setOnClickListener(this);ocho.setOnClickListener(this);nueve.setOnClickListener(this);for (int i = 0; i <= 8; i++) {

Page 96: Manual de aplicaciones de android

gato[i] = 0;}}

@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.uno:if (gato[0] == 0) {uno.setImageResource(R.drawable.g);tiros = tiros + 1;gato[0] = 1;ChecarSiGana();TeTocaSmartPhone();}break;case R.id.dos:if (gato[1] == 0) {dos.setImageResource(R.drawable.g);gato[1] = 1;tiros = tiros + 1;ChecarSiGana();TeTocaSmartPhone();}break;case R.id.tres:if (gato[2] == 0) {tres.setImageResource(R.drawable.g);gato[2] = 1;tiros = tiros + 1;ChecarSiGana();TeTocaSmartPhone();}break;case R.id.cuatro:

Page 97: Manual de aplicaciones de android

if (gato[3] == 0) {cuatro.setImageResource(R.drawable.g);gato[3] = 1;tiros = tiros + 1;ChecarSiGana();TeTocaSmartPhone();}break;case R.id.cinco:if (gato[4] == 0) {cinco.setImageResource(R.drawable.g);gato[4] = 1;tiros = tiros + 1;ChecarSiGana();TeTocaSmartPhone();}break;case R.id.seis:if (gato[5] == 0) {seis.setImageResource(R.drawable.g);gato[5] = 1;tiros = tiros + 1;ChecarSiGana();TeTocaSmartPhone();}break;case R.id.siete:if (gato[6] == 0) {siete.setImageResource(R.drawable.g);gato[6] = 1;tiros = tiros + 1;ChecarSiGana();TeTocaSmartPhone();}break;

Page 98: Manual de aplicaciones de android

case R.id.ocho:if (gato[7] == 0) {ocho.setImageResource(R.drawable.g);gato[7] = 1;tiros = tiros + 1;ChecarSiGana();TeTocaSmartPhone();}break;case R.id.nueve:if (gato[8] == 0) {nueve.setImageResource(R.drawable.g);gato[8] = 1;tiros = tiros + 1;ChecarSiGana();TeTocaSmartPhone();}break;}}

private void TeTocaSmartPhone() {if (ganaUsuario == false) {aleatorio = (int) (8 * Math.random()) + 1;if (gato[aleatorio] == 0) {switch (aleatorio) {case 0:uno.setImageResource(R.drawable.r);tiros = tiros + 1;break;case 1:dos.setImageResource(R.drawable.r);tiros = tiros + 1;break;case 2:

Page 99: Manual de aplicaciones de android

tres.setImageResource(R.drawable.r);tiros = tiros + 1;break;case 3:cuatro.setImageResource(R.drawable.r);tiros = tiros + 1;break;case 4:cinco.setImageResource(R.drawable.r);tiros = tiros + 1;break;case 5:seis.setImageResource(R.drawable.r);tiros = tiros + 1;break;case 6:siete.setImageResource(R.drawable.r);tiros = tiros + 1;break;case 7:ocho.setImageResource(R.drawable.r);tiros = tiros + 1;break;case 8:nueve.setImageResource(R.drawable.r);tiros = tiros + 1;break;}gato[aleatorio] = 2;ChecarSiGana();} else {TeTocaSmartPhone();}}

Page 100: Manual de aplicaciones de android

}

private void ChecarSiGana() {

if (gato[0] == 1 && gato[1] == 1 && gato[2] == 1)ganaUsuario = true;else if (gato[3] == 1 && gato[4] == 1 && gato[5] == 1)ganaUsuario = true;else if (gato[6] == 1 && gato[7] == 1 && gato[8] == 1)ganaUsuario = true;else if (gato[0] == 1 && gato[3] == 1 && gato[6] == 1)ganaUsuario = true;else if (gato[1] == 1 && gato[4] == 1 && gato[7] == 1)ganaUsuario = true;else if (gato[2] == 1 && gato[5] == 1 && gato[8] == 1)ganaUsuario = true;else if (gato[0] == 1 && gato[4] == 1 && gato[8] == 1)ganaUsuario = true;else if (gato[2] == 1 && gato[4] == 1 && gato[6] == 1)ganaUsuario = true;

else if (gato[0] == 2 && gato[1] == 2 && gato[2] == 2)ganaSmartPhone = true;else if (gato[3] == 2 && gato[4] == 2 && gato[5] == 2)ganaSmartPhone = true;else if (gato[6] == 2 && gato[7] == 2 && gato[8] == 2)ganaSmartPhone = true;else if (gato[0] == 2 && gato[3] == 2 && gato[6] == 2)ganaSmartPhone = true;else if (gato[1] == 2 && gato[4] == 2 && gato[7] == 2)ganaSmartPhone = true;else if (gato[2] == 2 && gato[5] == 2 && gato[8] == 2)ganaSmartPhone = true;else if (gato[0] == 2 && gato[4] == 2 && gato[8] == 2)ganaSmartPhone = true;

Page 101: Manual de aplicaciones de android

else if (gato[2] == 2 && gato[4] == 2 && gato[6] == 2)ganaSmartPhone = true;else {if (tiros == 9 & ganaSmartPhone == false & ganaUsuario == false) {empate = true;}}if (ganaUsuario == true) {Toast m = Toast.makeText(this, "Haz ganado", Toast.LENGTH_SHORT);gusuario = gusuario + 1;gusu.setText("" + gusuario);gSmart.setText("" + gcpu);em.setText("" + empates);m.show();borrar();}if (ganaSmartPhone == true) {Toast m = Toast.makeText(this, "Te ha ganado el Super SmarthPhone",Toast.LENGTH_SHORT);gcpu = gcpu + 1;gusu.setText("" + gusuario);gSmart.setText("" + gcpu);em.setText("" + empates);m.show();borrar();}if (empate == true) {Toast m = Toast.makeText(this, "Empate", Toast.LENGTH_SHORT);empates = empates + 1;gusu.setText("" + gusuario);gSmart.setText("" + gcpu);em.setText("" + empates);m.show();

Page 102: Manual de aplicaciones de android

borrar();}}

private void borrar() {Handler handler = new Handler();handler.postDelayed(new Runnable() {

public void run() {uno.setImageDrawable(null);dos.setImageDrawable(null);tres.setImageDrawable(null);cuatro.setImageDrawable(null);cinco.setImageDrawable(null);seis.setImageDrawable(null);siete.setImageDrawable(null);ocho.setImageDrawable(null);nueve.setImageDrawable(null);ganaSmartPhone = false;ganaUsuario = false;tiros = 0;for (int i = 0; i <= 8; i++) {gato[i] = 0;}}}, 200);}

}Es muy entretenida la programación y más cuando se trata de jugar tus propios juegos, entonces pues que mejor que esto.Captura del juego:

Page 103: Manual de aplicaciones de android
Page 104: Manual de aplicaciones de android

CALCULADORA1.-En el archivo xml tenemos como primer elemento nuestro LinearLayout con la orientacion vertical.2.-Creamos otro con la orientacion horizontal.3.-Despues otro con orientacion vertical.4.-Dentro de este un TextView con el id de anterior. 5.-Despues otro TextView donde se mostrara el numero y se cierra el LinearLayout.6.-Afuera de este creamos un boton mismo que nos servira para borrar los numeros, se cierra el LinearLayout y se crea uno nuevo con orientacion horizontal.7.-Dentro del LinearLayout tenemos los botones de nuestra calculadora por linea, en la primera linea tenemos los numeros 7, 8, 9, + y borrar. 8.-Se cierra el LinearLayout y se crea otro con la orientacion horizontal para la siguiente linea de numeros.9.-En esta linea insertamos los numeros correspondientes a 4, 5, 6, - y raiz.10.-Despues se cierra el LinearLayout y se crea otro para la siguiente linea (orientacion horizontal). 11.-Dentro de este LinearLayout tenemos los botones de 1, 2, 3, * y factorial.12.-Se cierra el LinearLayout y se crea uno nuevo para la linea siguiente. 13.-Una vez creado nuestro LinearLayout, insertamos en el los botones correspondientes a 0, pi, el punto, entre y modulo.14.-Una vez hecho esto se cierra el LinearLayout y se crea el de la linea siguiente. 14.-Dentro del LinearLayout que acabamos de crear tenemos la última linea de botones y es la correspondiente a uno entre, xy e igual. 15.-Por ultimo se cierran los LinearLayout y agregamos las imágenes a la carpeta drawable mdpi.Código:<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"

Page 105: Manual de aplicaciones de android

android:layout_height="match_parent" android:background="#000000" android:orientation="vertical" >

<LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="0.85" android:background="#000000" android:gravity="center" android:orientation="horizontal" >

<LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight = "0.25" android:background="#000000" android:gravity="center" android:orientation="vertical" >

<TextView android:id="@+id/anterior" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight = ".25" android:background="#000000" android:ellipsize="marquee" android:focusable="true" android:focusableInTouchMode="true" android:gravity="center" android:text="" android:textAlignment="textStart" android:textColor="#FFFFFF" android:textSize="30sp" />

<TextView android:id="@+id/num" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight=".25" android:background="#000000" android:ellipsize="marquee" android:focusable="true" android:focusableInTouchMode="true" android:gravity="center" android:text="" android:textAlignment="textStart" android:textColor="#FFFFFF" android:textSize="30sp" /> </LinearLayout>

<Button android:id="@+id/back" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1" android:background="@drawable/rojo"

Page 106: Manual de aplicaciones de android

android:gravity="center" android:text = "Del" android:textColor="#FFFFFF" android:textSize="20sp" android:textStyle="bold" /> </LinearLayout>

<LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="0.85" android:background="#000000" android:gravity="center" android:orientation="horizontal" >

<Button android:id="@+id/siete" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight = "1" android:background="@drawable/azul" android:gravity="center" android:text = "7" android:textColor="#FFFFFF" android:textSize="60sp" android:textStyle="bold" />

<Button android:id="@+id/ocho" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1" android:background="@drawable/azul" android:gravity="center" android:text = "8" android:textColor="#FFFFFF" android:textSize="60sp" android:textStyle="bold" />

<Button android:id="@+id/nueve" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1" android:background="@drawable/azul" android:gravity="center" android:text = "9" android:textColor="#FFFFFF" android:textSize="60sp" android:textStyle="bold" />

<Button android:id="@+id/mas" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1" android:background="@drawable/rojof"

Page 107: Manual de aplicaciones de android

android:gravity="center" android:text = "+" android:textColor="#FFFFFF" android:textSize="60sp" android:textStyle="bold" />

<Button android:id="@+id/borrar" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1" android:background="@drawable/verde" android:gravity="center" android:text = "Ac" android:textColor="#FFFFFF" android:textSize="30sp" android:textStyle="bold" /> </LinearLayout>

<LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="0.85" android:background="#000000" android:gravity="center" android:orientation="horizontal" >

<Button android:id="@+id/cuatro" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight = "1" android:background="@drawable/azul" android:gravity="center" android:text = "4" android:textColor="#FFFFFF" android:textSize="60sp" android:textStyle="bold" />

<Button android:id="@+id/cinco" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1" android:background="@drawable/azul" android:gravity="center" android:text = "5" android:textColor="#FFFFFF" android:textSize="60sp" android:textStyle="bold" />

<Button android:id="@+id/seis" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1" android:background="@drawable/azul"

Page 108: Manual de aplicaciones de android

android:gravity="center" android:text = "6" android:textColor="#FFFFFF" android:textSize="60sp" android:textStyle="bold" />

<Button android:id="@+id/menos" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1" android:background="@drawable/rojof" android:gravity="center" android:text = "-" android:textColor="#FFFFFF" android:textSize="60sp" android:textStyle="bold" />

<Button android:id="@+id/raiz" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1" android:background="@drawable/rojof" android:gravity="center" android:text = "√" android:textColor="#FFFFFF" android:textSize="30sp" android:textStyle="bold" /> </LinearLayout>

<LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="0.85" android:background="#000000" android:gravity="center" android:orientation="horizontal" >

<Button android:id="@+id/uno" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight = "1" android:background="@drawable/azul" android:gravity="center" android:text = "1" android:textColor="#FFFFFF" android:textSize="60sp" android:textStyle="bold" />

<Button android:id="@+id/dos" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1" android:background="@drawable/azul"

Page 109: Manual de aplicaciones de android

android:gravity="center" android:text = "2" android:textColor="#FFFFFF" android:textSize="60sp" android:textStyle="bold" />

<Button android:id="@+id/tres" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1" android:background="@drawable/azul" android:gravity="center" android:text = "3" android:textColor="#FFFFFF" android:textSize="60sp" android:textStyle="bold" />

<Button android:id="@+id/por" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1" android:background="@drawable/rojof" android:gravity="center" android:text = "*" android:textColor="#FFFFFF" android:textSize="60sp" android:textStyle="bold" />

<Button android:id="@+id/factorial" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1" android:background="@drawable/rojof" android:gravity="center" android:text = "!" android:textColor="#FFFFFF" android:textSize="30sp" android:textStyle="bold" /> </LinearLayout>

<LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="0.85" android:background="#000000" android:gravity="center" android:orientation="horizontal" >

<Button android:id="@+id/cero" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight = "1" android:background="@drawable/azul"

Page 110: Manual de aplicaciones de android

android:gravity="center" android:text = "0" android:textColor="#FFFFFF" android:textSize="60sp" android:textStyle="bold" />

<Button android:id="@+id/punto" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1" android:background="@drawable/azul" android:gravity="center" android:text = "." android:textColor="#FFFFFF" android:textSize="60sp" android:textStyle="bold" />

<Button android:id="@+id/pi" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1" android:background="@drawable/rojof" android:gravity="center" android:text = " π " android:textColor="#FFFFFF" android:textSize="30sp" android:textStyle="bold" />

<Button android:id="@+id/entre" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1" android:background="@drawable/rojof" android:gravity="center" android:text = "÷" android:textColor="#FFFFFF" android:textSize="30sp" android:textStyle="bold" />

<Button android:id="@+id/modulo" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1" android:background="@drawable/rojof" android:gravity="center" android:text = "%" android:textColor="#FFFFFF" android:textSize="30sp" android:textStyle="bold" /> </LinearLayout>

<LinearLayout android:layout_width="match_parent"

Page 111: Manual de aplicaciones de android

android:layout_height="match_parent" android:layout_weight="0.85" android:background="#000000" android:gravity="center" android:orientation="horizontal" >

<Button android:id="@+id/unoentre" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight = "1" android:background="@drawable/rojof" android:gravity="center" android:text = "1/X" android:textColor="#FFFFFF" android:textSize="30sp" android:textStyle="bold" />

<Button android:id="@+id/xy" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1" android:background="@drawable/rojof" android:gravity="center" android:text = "x^y" android:textColor="#FFFFFF" android:textSize="30sp" android:textStyle="bold" />

<Button android:id="@+id/igual" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1" android:background="@drawable/verde" android:gravity="center" android:text = "=" android:textColor="#FFFFFF" android:textSize="60sp" android:textStyle="bold" /> </LinearLayout></LinearLayout>

16.-Primeramente tenemos en nuestras librerias el metodo OnClick Listener.17.-Tambien hay que implementarlo en el Public Class y de ahí pasamos declarar nuestros views, 3 variables de tipo flotante, 1 de tipo entero y dos booleanos “p” e “igual”.18.-Despues enlazamos nuestros botones y cajas con el xml.

Page 112: Manual de aplicaciones de android

19.-Ya enlazados los views tenemos que ingresar el metodo OnClick para la accion de tocar la pantalla y los botones. 20.-Una vez hecho esto se empieza a crear el proceso de los botones, el primero es para deshabilitar los botones, el segundo es para habilitarlos y el tercero para validar que esten los numeros y no falta alguno. 21.-Despues esta la funcion para borrar donde simplemente se limpian las cajas y los casos para cada boton, la accion a cada uno de ellos. 22.-Una vez creados los procesos para cada boton se crean nuevos para el numero y el punto con las condiciones true y false, para habilitar y deshabilitar. 23.-Se cierra el ultimo que es el de punto se abre otro para el caso de borrar24.-Se utiliza el metodo de borrar y habilitar.25.-Despues de este esta el de back, o regresar. Este tiene un arreglo para tomar los valores y poder almacenarlos y regresar a ellos si se quiere. 26.-Despues tenemos el caso de pi, donde como es un valor definido solo se asigna.27.-Despues el de igual, o donde se obtiene el resultado. Aquí se muestra el resultado en el TextView de cada operación que nosotro elijamos. 28.-Despues tenemos el factorial y un proceso para redondear un número.Te dejo el Código.package com.wero.calcetym;

import android.os.Bundle;import android.app.Activity;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.*;

Page 113: Manual de aplicaciones de android

public class CalCetym extends Activity implements OnClickListener {TextView display, anterior;float resultado = 0, num1 = 0, num2 = 0;int contador = 0, o = 0;boolean p = false, igual = false, boton = false, presiono = false;Button mas, menos, por, entre, raiz, factorial, pi, xy, modulo,

unoentre;

protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_cal_cetym);display = (TextView) findViewById(R.id.num);anterior = (TextView) findViewById(R.id.anterior);Button uno = (Button) findViewById(R.id.uno);Button dos = (Button) findViewById(R.id.dos);Button tres = (Button) findViewById(R.id.tres);Button cuatro = (Button) findViewById(R.id.cuatro);Button cinco = (Button) findViewById(R.id.cinco);Button seis = (Button) findViewById(R.id.seis);Button siete = (Button) findViewById(R.id.siete);Button ocho = (Button) findViewById(R.id.ocho);Button nueve = (Button) findViewById(R.id.nueve);Button cero = (Button) findViewById(R.id.cero);Button punto = (Button) findViewById(R.id.punto);mas = (Button) findViewById(R.id.mas);menos = (Button) findViewById(R.id.menos);por = (Button) findViewById(R.id.por);entre = (Button) findViewById(R.id.entre);raiz = (Button) findViewById(R.id.raiz);factorial = (Button) findViewById(R.id.factorial);Button borrar = (Button) findViewById(R.id.borrar);Button igual = (Button) findViewById(R.id.igual);Button back = (Button) findViewById(R.id.back);pi = (Button) findViewById(R.id.pi);xy = (Button) findViewById(R.id.xy);

Page 114: Manual de aplicaciones de android

modulo = (Button) findViewById(R.id.modulo);unoentre = (Button) findViewById(R.id.unoentre);uno.setOnClickListener(this);dos.setOnClickListener(this);tres.setOnClickListener(this);cuatro.setOnClickListener(this);cinco.setOnClickListener(this);seis.setOnClickListener(this);siete.setOnClickListener(this);ocho.setOnClickListener(this);nueve.setOnClickListener(this);cero.setOnClickListener(this);punto.setOnClickListener(this);mas.setOnClickListener(this);menos.setOnClickListener(this);por.setOnClickListener(this);entre.setOnClickListener(this);raiz.setOnClickListener(this);factorial.setOnClickListener(this);borrar.setOnClickListener(this);igual.setOnClickListener(this);back.setOnClickListener(this);pi.setOnClickListener(this);xy.setOnClickListener(this);modulo.setOnClickListener(this);unoentre.setOnClickListener(this);uno.setOnClickListener(this);

}public void deshabilitar(){

mas.setEnabled(false);menos.setEnabled(false);por.setEnabled(false);entre.setEnabled(false);raiz.setEnabled(false);factorial.setEnabled(false);

Page 115: Manual de aplicaciones de android

pi.setEnabled(false);xy.setEnabled(false);unoentre.setEnabled(false);modulo.setEnabled(false);

}public void habilitar(){

mas.setEnabled(true);menos.setEnabled(true);por.setEnabled(true);entre.setEnabled(true);raiz.setEnabled(true);factorial.setEnabled(true);pi.setEnabled(true);xy.setEnabled(true);unoentre.setEnabled(true);modulo.setEnabled(true);

}public boolean validar(){

if(display.getText().equals("")){Toast.makeText(this,"Falta Introducir

Numero",Toast.LENGTH_SHORT).show();return false;

}else{if(o==0){num1=Float.parseFloat(display.getText().toString());}else{num2=Float.parseFloat(display.getText().toString());}return true;

}}public void borrar(){

display.setText("");anterior.setText("");resultado=0;num1=0;num2=0;

}

Page 116: Manual de aplicaciones de android

@Overridepublic void onClick(View v) {switch(v.getId()){case R.id.xy:

if(validar()==true){if(igual==true){resultado=num1;igual=false;}else{resultado=0;}

anterior.setText(num1+"^");display.setText("");o=1;p=false;deshabilitar();

}break;

case R.id.modulo:if(validar()==true){if(igual==true){resultado=num1;igual=false;}else{resultado=0;}

anterior.setText(num1+"%");display.setText("");o=2;p=false;deshabilitar();

}break;

case R.id.mas:if(validar()==true){if(igual==true){resultado=num1;igual=false;}else{resultado=0;}

anterior.setText(num1+"+");display.setText("");o=3;p=false;deshabilitar();

}break;

case R.id.menos:if(validar()==true){

Page 117: Manual de aplicaciones de android

if(igual==true){resultado=num1;igual=false;}else{resultado=0;}anterior.setText(num1+"-");display.setText("");o=4;p=false;deshabilitar();

}break;

case R.id.por:if(validar()==true){if(igual==true){resultado=num1;igual=false;}else{resultado=0;}

anterior.setText(num1+"*");display.setText("");o=5;p=false;deshabilitar();

}break;

case R.id.entre:if(validar()==true){if(igual==true){resultado=num1;igual=false;}else{resultado=0;}

anterior.setText(num1+"/");display.setText("");o=6;p=false;deshabilitar();

}break;

case R.id.unoentre:if(validar()==true){

anterior.setText("1/"+num1);resultado=1/num1;display.setText(""+resultado);o=0;

}

Page 118: Manual de aplicaciones de android

break;case R.id.raiz:

if(validar()==true){anterior.setText("√"+num1);resultado=(float)Math.sqrt(num1);display.setText(""+resultado);o=0;

}break;

case R.id.factorial:if(validar()==true){

anterior.setText(num1+"!");resultado=factorial(num1);display.setText(""+resultado);o=0;

}break;

case R.id.uno:if(igual==true){borrar(); igual=false;

}display.append("1");break;

case R.id.dos:if(igual==true){borrar(); igual=false;

}display.append("2");break;

case R.id.tres:if(igual==true){borrar(); igual=false;

}display.append("3");break;

case R.id.cuatro:

Page 119: Manual de aplicaciones de android

if(igual==true){borrar(); igual=false;

}display.append("4");break;

case R.id.cinco:if(igual==true){borrar(); igual=false;

}display.append("5");break;

case R.id.seis:if(igual==true){borrar(); igual=false;

}display.append("6");break;

case R.id.siete:if(igual==true){borrar(); igual=false;

}display.append("7");break;

case R.id.ocho:if(igual==true){borrar(); igual=false;

}display.append("8");break;

case R.id.nueve:if(igual==true){borrar(); igual=false;

}display.append("9");break;

Page 120: Manual de aplicaciones de android

case R.id.cero:if(igual==true){borrar(); igual=false;

}display.append("0");break;

case R.id.punto:if(p==false && igual==false){

display.append(".");p=true;

}else{if(p==false){

if(resultado!=0){borrar();}display.append(".");p=false;igual=false;}

}break;

case R.id.borrar:borrar();

habilitar();break;

case R.id.back:String cad=display.getText().toString();

if(!cad.equals("")){char [] cadena=cad.toCharArray();String f="";for(int i=0;i<=cadena.length-2;i++){

f=f+cadena[1];}display.setText(f);

}else{Toast n=Toast.makeText(this,"No hay

Valores",Toast.LENGTH_SHORT);n.show();

Page 121: Manual de aplicaciones de android

resultado=0;habilitar();}

break;case R.id.pi:

resultado=(float)3.1416;display.setText("3.1416");break;

case R.id.igual:if(validar()==true){

switch(o){case 1:resultado=(float)Math.pow(num1, num2);break;case 2:resultado=num1%num2;break;case 3:resultado=num1+num2;break;case 4:resultado=num1-num2;break;case 5:resultado=num1*num2;break;case 6:resultado=num1/num2;break;}

}o=0;

p=false;num1=resultado;igual=true;habilitar();anterior.append(""+num2);display.setText(""+redondear(resultado));

break;}}

public float factorial(float num) {float fac=1;for(int i=1;i<=num;i++){

fac*=1;}return fac;

Page 122: Manual de aplicaciones de android

}public float redondear(float numero) {

return (float)Math.rint(numero*100000)/100000;}

}

Page 123: Manual de aplicaciones de android

SONIDOS ANIMALES1.-Crear nuestra interfaz con 4 LinearLayout, por consiguiente en c/u colocar 3 botones y con sus correspondientes imágenes de animales. 2.- Creamos nuestro código en Java.3.-Declaramos nuestros botones.4.-Después colocamos este código en cada track para un animal:sp = new SoundPool(8, AudioManager.STREAM_MUSIC, 0); caballo = sp.load(this, R.raw.a, 1);5.-Creamos un switch para colocar un case para cada animal: switch (v.getId()) { case R.id.uno: sp.play(caballo, 1, 1, 1, 0, 1); break; Esta aplicación es muy usada para colocar sonidos al presionar algo, por lo cual es importante conocerlo para hacer una App más llamativa.Código:import android.media.AudioManager;import android.media.SoundPool; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.*; import android.app.Activity; public class MainActivity extends Activity implements OnClickListener{ SoundPool sp; Button bt1, bt2, bt3, bt4, bt5, bt6, bt7, bt8; int caballo, canario, cerdo, gato, leon, oso, perro, vaca; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); bt1 = (Button) findViewById(R.id.uno); bt2 = (Button) findViewById(R.id.dos); bt3 = (Button) findViewById(R.id.tres); bt4 = (Button) findViewById(R.id.cuatro); bt5 = (Button) findViewById(R.id.cinco);

Page 124: Manual de aplicaciones de android

bt6 = (Button) findViewById(R.id.seis);bt7 = (Button) findViewById(R.id.siete); bt8 = (Button) findViewById(R.id.ocho); bt1.setOnClickListener(this); bt2.setOnClickListener(this); bt3.setOnClickListener(this); bt4.setOnClickListener(this); bt5.setOnClickListener(this); bt6.setOnClickListener(this); bt7.setOnClickListener(this); bt8.setOnClickListener(this); sp = new SoundPool(8, AudioManager.STREAM_MUSIC, 0); caballo = sp.load(this, R.raw.a, 1); canario = sp.load(this, R.raw.b, 1); cerdo = sp.load(this, R.raw.c, 1); gato = sp.load(this, R.raw.d, 1); leon = sp.load(this, R.raw.e, 1); oso = sp.load(this, R.raw.f, 1); perro = sp.load(this, R.raw.g, 1); vaca = sp.load(this, R.raw.h, 1); } @Override public void onClick(View v) {switch (v.getId()) { case R.id.uno: sp.play(caballo, 1, 1, 1, 0, 1); break; case R.id.dos: sp.play(canario, 1, 1, 1, 0, 1); break; case R.id.tres: sp.play(cerdo, 1, 1, 1, 0, 1); break; case R.id.cuatro: sp.play(gato, 1, 1, 1, 0, 1); break; case R.id.cinco: sp.play(leon, 1, 1, 1, 0, 1); break; case R.id.seis: sp.play(oso, 1, 1, 1, 0, 1);

Page 125: Manual de aplicaciones de android

break; case R.id.siete: sp.play(perro, 1, 1, 1, 0, 1);break; case R.id.ocho: sp.play(vaca, 1, 1, 1, 0, 1); break; } } }En mi caso use las mismas imagines del gato:

Page 126: Manual de aplicaciones de android

VIDEOVIEW1.-Creamos un proyecto donde empezaremos con la aplicación.2.-En el archivo XML vamos a crear el display principal.3.-Crearemos un VideoView.4.-Agregamos un video en la carpeta llamada raw.Codigo:<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:background="@drawable/lol"> <VideoView android:id="@+id/VideoView1" android:layout_width="fill_parent" android:layout_height="fill_parent"/> </LinearLayout>5.-En el código java agregamos el codigo que pongo a continuación y será todo.import android.os.Bundle; import android.app.Activity;import android.widget.MediaController; import android.widget.VideoView; public class Pos extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_pos); VideoView video = (VideoView) findViewById(R.id.VideoView1); Uri path = Uri.parse("android.resource://com.example.hola/"+ R.raw.COD); video.setVideoURI(path); video.setMediaController(new MediaController(this)); video.start();

Page 127: Manual de aplicaciones de android

video.requestFocus(); }}En esta aplicación nos ayuda cuando queremos accede a videos de manera más sencilla.Se verá así:

Page 128: Manual de aplicaciones de android

GIROSCOPIO

1.-En esta aplicación tenemos el LinearLayout principal y dentro un Button y un View2.-Se cierra el LinearLayout. CODIGO:<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:background="#09d000"> <Button android:layout_width="match_parent" android:layout_height="20px" android:background="#000000"/> <view android:layout_width="fill_parent" android:layout_height="wrap_content" class="com.example.pelota.PelotaDibujar" android:id="@+id/view"/>

</LinearLayout>

3.-Como el programa de acelerometro, el giroscopio tambien utiliza el sensor y tenemos que implementar el sensor event listener y algunas librerias relacionadas.4.-Se crean los 3 metodos como en el acelerometro, el OnPause, OnResume y OnStop.5.-Agregamos canvas para la pelotita.Los códigos serán estos:CODIGO 1:package com.example.pelota;

import android.os.Bundle;import android.view.*;import android.app.Activity;import android.content.pm.ActivityInfo;

Page 129: Manual de aplicaciones de android

public class Pelota extends Activity { PelotaDibujar dibujo; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); setContentView(R.layout.interfaz); setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); }}

CODIGO 2:package com.example.pelota;

import android.content.Context;import android.graphics.*;import android.hardware.*;import android.os.Bundle;import android.util.AttributeSet;import android.util.DisplayMetrics;import android.view.*;import android.widget.Toast;

public class PelotaDibujar extends View implements SensorEventListener {

Paint pincel = new Paint();

Page 130: Manual de aplicaciones de android

int alto, ancho;int ejeX=0,ejeY=0,ejeZ1=0,ejeZ=0;String X,Y,Z;Context contexto;CharSequence texto="Perdite";int duracion=Toast.LENGTH_SHORT;

public PelotaDibujar(Context interfaz, AttributeSet atributos){

super(interfaz, atributos);

SensorManager smAdministrador = (SensorManager) getContext().getSystemService(Context.SENSOR_SERVICE); Sensor snsRotacion = smAdministrador.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); smAdministrador.registerListener(this, snsRotacion, SensorManager.SENSOR_DELAY_FASTEST); //Se obtienen las medidas de la pantalla Display pantalla = ((WindowManager) getContext() .getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay(); ancho = pantalla.getWidth(); alto = pantalla.getHeight(); setMinimumHeight(alto); setMinimumWidth(ancho);

}

@Override

Page 131: Manual de aplicaciones de android

public void onSensorChanged(SensorEvent cambio) {ejeX-=cambio.values[0];X=Float.toString(ejeX);

if (ejeX < 20){ejeX = 20;

}else if(ejeX > (ancho-20)){

ejeX = ancho-20;}ejeY+=cambio.values[1];Y=Float.toString(ejeY);

if (ejeY < 20){ejeY = 20;

}else if(ejeY > alto-60){

ejeY = alto-60;}

if (ejeX <= 30){ejeX = 30;if (ejeY>=80){

ejeY=80;if (ejeX > 150){

ejeX=150;

}}

} @Override public void onDraw(Canvas lienzo) {

Page 132: Manual de aplicaciones de android

pincel.setColor(Color.GRAY);lienzo.drawCircle(60, 60, 22, pincel);pincel.setColor(Color.GRAY);lienzo.drawCircle(420, 70, 22, pincel);pincel.setColor(Color.GRAY);lienzo.drawCircle(60, 670, 22, pincel);pincel.setColor(Color.GRAY);lienzo.drawCircle(420, 670, 22, pincel);

pincel.setColor(Color.RED);lienzo.drawCircle(ejeX+10, ejeY+10, 20, pincel);

if(ejeX>=29 && ejeX<=31 && ejeY>=29 && ejeY<=31){ejeX=30;ejeY=30;

}

pincel.setColor(Color.RED);lienzo.drawText("Eje 'X': "+X, 0, alto-75, pincel);

pincel.setColor(Color.GREEN);lienzo.drawText("Eje 'Y': "+Y, 0, alto-60, pincel);

pincel.setColor(Color.RED);lienzo.drawLine(10, 10, 10, 100, pincel);lienzo.drawLine(10, 100, 60, 100, pincel);

if(ejeX==60 && ejeY==60){pincel.setColor(Color.BLUE);lienzo.drawText("GANASTE", ancho-60, alto-45, pincel);

}

if(ejeX!=60 || ejeY!=60){invalidate();

} }

Page 133: Manual de aplicaciones de android

@Override public void onAccuracyChanged(Sensor sensor, int accuracy) { // TODO Auto-generated method stub }}Así es como vemos el funcionamiento de Giroscopio, es prácticamente la rotación.Así se ve la App:

NOTIFICACIONES1.-En el layout solo colocamos un Button.Código:<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" >

Page 134: Manual de aplicaciones de android

<Button android:id="@+id/botonNotificacion" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:text="@string/notificacion" />

</RelativeLayout>

2.-Implementamos el método OnClickListener.3.-En java declaramos el Button.4.-En el método OnClick creamos un Switch.5.-Despues usamos el ManagerNotification.El código es el siguiente:package mx.com.gm.notificaciones;

import android.app.Activity;import android.app.Notification;import android.app.NotificationManager;import android.app.PendingIntent;import android.content.Context;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;

public class MainActivity extends Activity {

@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button boton = (Button) findViewById(R.id.botonNotificacion); boton.setOnClickListener( new OnClickListener() {

public void onClick(View v) {NotificationManager manager =

(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

Notification notificacion = new Notification (android.R.drawable. stat_notify_more , "Notificación" , System. currentTimeMillis ()) ;

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

PendingIntent pIntent = PendingIntent.getActivity(MainActivity.this, 0, intent, 0);

notificacion.setLatestEventInfo (MainActivity. this , "Titulo" , "Detalles" , pIntent) ;

Page 135: Manual de aplicaciones de android

manager.notify(0,notificacion);}

}); }

}

Cómo podemos ver lanzar una notificación es fácil, sólo es programarla con lo que queremos que nos sea lanzada.Resultado:

TOGGLEBUTTON1.-Creamos un proyecto donde empezaremos con la aplicación.2.- En el archivo XML vamos a crear el display principal.3.-Crearemos tres Togglebutton. Codigo:

Page 136: Manual de aplicaciones de android

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".MainActivity" > <LinearLayout android:id="@+id/fondo" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1" android:background="#000000" android:gravity="center_horizontal" android:orientation="horizontal" > <ToggleButton android:id="@+id/toggleButton1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="5sp" android:textOff="Uno Off" android:textOn="Uno On" /> <ToggleButton android:id="@+id/toggleButton2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="5sp" android:textOff="Dos Off" android:textOn="Dos On" /> <ToggleButton android:id="@+id/toggleButton3"android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="5sp" android:textOff="Tres Off" android:textOn="Tres On" /> </LinearLayout>

Page 137: Manual de aplicaciones de android

</LinearLayout>4.-En java relacionamos los códigos con el XML.5.-Hacemos que los ToggleButton tengan un color.6.-Colocamos que cuando se active losToggleButton se cambie el color de fondo. Codigo import android.os.Bundle; import android.app.Activity; import android.graphics.Color; import android.widget.CompoundButton; import android.widget.LinearLayout; import android.widget.ToggleButton; import android.widget.CompoundButton.OnCheckedChangeListener; public class MainActivity extends Activity implements OnCheckedChangeListener { ToggleButton uno, dos, tres; LinearLayout cont; String color = "", rj = "00", vr = "00", az = "00"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); uno = (ToggleButton) findViewById(R.id.toggleButton1); dos = (ToggleButton) findViewById(R.id.toggleButton2); tres = (ToggleButton) findViewById(R.id.toggleButton3); uno.setOnCheckedChangeListener(this); dos.setOnCheckedChangeListener(this); tres.setOnCheckedChangeListener(this); cont = (LinearLayout) findViewById(R.id.fondo); } @Override public void onCheckedChanged(CompoundButton v, boolean isCheked) {switch (v.getId()) { case R.id.toggleButton1: if (isCheked) {

Page 138: Manual de aplicaciones de android

rj = "FF"; color = "#" + rj + vr + az; cont.setBackgroundColor(Color.parseColor(color)); } else { rj = "00"; color = "#" + rj + vr + az; cont.setBackgroundColor(Color.parseColor(color)); } break; case R.id.toggleButton2: if (isCheked) { vr = "FF"; color = "#" + rj + vr + az; cont.setBackgroundColor(Color.parseColor(color)); } else { vr = "00"; color = "#" + rj + vr + az; cont.setBackgroundColor(Color.parseColor(color)); } break; case R.id.toggleButton3: if (isCheked) { az = "FF"; color = "#" + rj + vr + az; cont.setBackgroundColor(Color.parseColor(color)); } else { az = "00"; color = "#" + rj + vr + az;cont.setBackgroundColor(Color.parseColor(color)); } break; } } }Esta aplicación es util cuando queremos hacer combinaciones con algo, ya que podemos obtener diferentes resultados.Resultado:

Page 139: Manual de aplicaciones de android

CHECKBOX1.-Creamos el proyecto.

2.-Tenemos un LinearLayout con orientacion vertical.

3.-Creamos con orientacion horizontal.

4.-Creamos los CheckBox.

Page 140: Manual de aplicaciones de android

5.-Cerramos el LinearLayout y creamos otro nuevo con orientacion horizontal.

6.-Creamos otros tres CheckBox y lo cerramos.

7.-Despues insertamos un ImageView ya que al seleccionar alguna casilla este mostrara una imagen.

Codigo:

Page 141: Manual de aplicaciones de android
Page 142: Manual de aplicaciones de android

8.-Nos dirigimos a java.

9.-En las librerias implementamos el CheckBox y declaramos nuestros views mas abajo al igual que una variable de tipo entero igualada a cero.

10.-Enlazamos nuestros views con el archivo xml y pasamos a asignar el proceso a los CheckBox.

11.-Primero agregamos al total 1 si la casilla es checada, en todas las que pusimos.

Código:

Page 143: Manual de aplicaciones de android

Esta es otra manera de dar respuesta a algo que queremos implementar en una App.

Resultado:

Page 144: Manual de aplicaciones de android
Page 145: Manual de aplicaciones de android

RADIOBUTTON

1.- Creamos las interfaces graficas que deseemos junto con sus actividades.

2.- En el caso de esta aplicación es un cuestionario, por lo tanto cada pregunta tiene tres opciones de respuesta.

3.-Posteriormente crearemos nuestro código en java:

switch (checa) {

case R.id.a: cont = cont + 0;

Intent enviar = new Intent(this, Dos.class);

startActivity(enviar);

case R.id.b: cont = cont + 0;

Intent enviarb = new Intent(this, Dos.class);

startActivity(enviarb);

case R.id.c: cont = cont + 1;

Intent enviarc = new Intent(this, Dos.class);

4.-Cada actividad tiene un código similar al anterior, cada radiobutton nos va a mandar a la siguiente actividad, además solo un radiobutton tendrá el valor de +1 en su contador, de esta manera al último se podrá definir cuantas preguntas correctas tuvo el usuario.

Código:

package moon.radiobutton;

import android.app.Activity;

import android.os.Bundle;

import android.view.Menu;

Page 146: Manual de aplicaciones de android

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.RadioGroup;

import android.widget.Toast;

public class Radiobutton extends Activity implements OnClickListener {

View boton;

RadioGroup rg;

int Ok;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_radiobutton);

rg=(RadioGroup)findViewById(R.id.radio);

boton=(View)findViewById(R.id.ok);

boton.setOnClickListener(this);

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.

Page 147: Manual de aplicaciones de android

getMenuInflater().inflate(R.menu.radiobutton, menu);

return true;

}

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

Ok=rg.getCheckedRadioButtonId();

switch (Ok){

case R.id.bar: Toast.makeText(this, "Elegiste Halo 5", Toast.LENGTH_SHORT).show();

break;

case R.id.mad: Toast.makeText(this, "Elegiste Black ops III", Toast.LENGTH_SHORT).show();

break;

case R.id.bor: Toast.makeText(this, "Elegiste Battlefront", Toast.LENGTH_SHORT).show();

break;

}

}

}

Esta App como hemos visto es de las diferentes maneras que tenemos de dar una respuesta a algo, por lo tanto son de bastante ayuda.

Resultado:

Page 148: Manual de aplicaciones de android

SPINNER

1.-Primero tenemos nuestro LinearLayout con orientacion vertical.

Page 149: Manual de aplicaciones de android

2.-Colocamos un TextView que nos mostrara la indicacion de elegir una opcion.

3.-Despues colocamos dos Spinner.

4.-Cerramos el LinearLayoutl.

Código:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#070587" android:orientation="vertical" >

<TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center" android:text="Escoge una compania" android:textSize="25dp" />

<Spinner android:id="@+id/compania" android:layout_width="fill_parent" android:layout_height="wrap_content" />

<Spinner android:id="@+id/videojuego" android:layout_width="fill_parent" android:layout_height="wrap_content" />

</LinearLayout>

5.-Como hemos visto tenemos primero que implementar las librerias y en este caso la principal es el Spinner para poder usarlo.

6.-Se implementa el OnItemSelectedListener para seleccionar el Spinner con un arreglo.

7.-Despues se declara el Spinner y el arreglo de las opciones.

8.-Se declaran las opciones de cada arreglo y se enlaza con el archivo xml.

Page 150: Manual de aplicaciones de android

9.-Despues se implementa en los Spinner el OnItemSelectedListener y se crean variables de a1 hasta a5 para los opc del Spinner.

10.-Despues con el switch y el case se designa la opción a seleccionar en el Spinner.

Código:

package gears.spinner;

import android.os.Bundle;

import android.app.Activity;

import android.view.Menu;

import android.view.View;

import android.widget.AdapterView;

import android.widget.AdapterView.OnItemSelectedListener;

import android.widget.ArrayAdapter;

import android.widget.Spinner;

public class Otros extends Activity implements OnItemSelectedListener {

Spinner spcompania, spvideojuego;

ArrayAdapter<String> aacompania,aavideojuego1,aavideojuego2, aavideojuego3, Clear;

String[] opccompania = new String[] { "Microsoft", "Playstation","Nintendo" };

String[] opcvideojuego1 = new String[] { "Halo 5", "Gears of War 4", "PVZ:GW2" };

Page 151: Manual de aplicaciones de android

String[] opcvideojuego2 = new String[] { "UNCHARTED 4 ","Black Ops 3", "Silent Hill " };

String[] opcvideojuego3 = new String[] { "Mario Kart 9 ","Mario Party 11 ", "Pokemon " };

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_spinner);

spcompania = (Spinner) findViewById(R.id.compania);

spvideojuego = (Spinner) findViewById(R.id.videojuego);

spcompania.setOnItemSelectedListener(this);

spvideojuego.setOnItemSelectedListener(this);

aacompania = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, opccompania);

aavideojuego1 = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, opcvideojuego1);

aavideojuego2 = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, opcvideojuego2);

Page 152: Manual de aplicaciones de android

aavideojuego3 = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, opcvideojuego3);

spcompania.setAdapter(aacompania);

}

@Override

public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,

long arg3) {

switch(arg0.getId()){

case R.id.compania:

int seleccionado=spcompania.getSelectedItemPosition();

if(seleccionado==0){

spvideojuego.setAdapter(aavideojuego1);

}

if(seleccionado==1){

spvideojuego.setAdapter(aavideojuego2);

Page 153: Manual de aplicaciones de android

}

if(seleccionado==2){

spvideojuego.setAdapter(aavideojuego3);

}

break;

}

}

@Override

public void onNothingSelected(AdapterView<?> arg0) {

// TODO Auto-generated method stub

}

}

Podemos hacer diferentes formularios con esto, por ejemplo colocar los datos para que una persona seleccione el de su conveniencia.

Resultado:

Page 154: Manual de aplicaciones de android
Page 155: Manual de aplicaciones de android

WEBVIEW

1.-Creamos un nuevo proyecto y vamos al archivo XML.

2.- Agregamos un WebView que ocupe toda la pantalla.

CODIGO

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity" > <WebView android:id="@+id/webView" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_margin="10sp" />

</RelativeLayout>

3.-En el java enlazamos nuestro WebView además de agregar una librería.

4.-Ponemos en donde cargara la pagina

5.-Agregamos el url.

6.-Agregamos los tiempos de carga

package com.wero.webview;

import static android.widget.Toast.LENGTH_SHORT;import static java.lang.System.currentTimeMillis;

import java.text.SimpleDateFormat;import java.util.Date;import java.util.Locale;

import android.app.Activity;import android.content.Intent;import android.graphics.Bitmap;import android.net.Uri;import android.os.Bundle;import android.webkit.WebSettings;import android.webkit.WebView;import android.webkit.WebViewClient;

Page 156: Manual de aplicaciones de android

import android.widget.Toast;

public class MainActivity extends Activity {

private WebView myWebView;

@Overrideprotected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);this.setContentView(R.layout.main);

this.myWebView = (WebView) this.findViewById(R.id.webView);

// myWebView.addJavascriptInterface(new WebAppInterface(this),

// "Android");//// WebSettings webSettings = myWebView.getSettings();// webSettings.setJavaScriptEnabled(true);//// myWebView.loadUrl("file:///android_asset/example.html");

// Enable JavaScript WebSettings webSettings =WebSettings webSettings = myWebView.getSettings();webSettings.setJavaScriptEnabled(true);

// Provide a WebViewClient for your WebViewmyWebView.setWebViewClient(new MyWebViewClient());

myWebView.loadUrl("https://www.facebook.com");

}

@Overridepublic void onBackPressed() {

// Check if there's historyif (this.myWebView.canGoBack())

this.myWebView.goBack();else

super.onBackPressed();

}

/** * * @author amatellanes * */private class MyWebViewClient extends WebViewClient {

private long loadTime; // Web page loading time

@Overridepublic boolean shouldOverrideUrlLoading(WebView view, String

url) {

Page 157: Manual de aplicaciones de android

if (Uri.parse(url).getHost().equals("https://www.facebook.com")) {

// This is my web site, so do not override; let my WebView load

// the pagereturn false;

}

// Otherwise, the link is not for a page on my site, so launch

// another Activity that handles URLsIntent intent = new Intent(Intent.ACTION_VIEW,

Uri.parse(url));startActivity(intent);return true;

}

@Overridepublic void onPageStarted(WebView view, String url, Bitmap

favicon) {super.onPageStarted(view, url, favicon);

// Save start timethis.loadTime = currentTimeMillis();

// Show a toastToast.makeText(getApplicationContext(),

"Cargando pagina", LENGTH_SHORT).show();}

@Overridepublic void onPageFinished(WebView view, String url) {

super.onPageFinished(view, url);

// Calculate load timethis.loadTime = currentTimeMillis() - this.loadTime;

// Convert milliseconds to date formatString time = new SimpleDateFormat("mm:ss:SSS",

Locale.getDefault()).format(new Date(this.loadTime));

// Show a toastToast.makeText(getApplicationContext(),

"Pagina cerrada en: " + time, LENGTH_SHORT).show();

}}

}

Esta App es muy funcional para cuando queremos implementarlo en nuestras Apps para que se visualizen nuestras redes sociales.

Page 158: Manual de aplicaciones de android

Resultado:

Page 159: Manual de aplicaciones de android

TIMEPICKER

1.-Creamos un proyecto donde empezaremos con la aplicación.

2.-En el archivo XML vamos a crear el display principal.

3.-Creamos un EditText.

4.-Crearemos un TimePicker.

5.-Colocamos un TextView.

6.-Colocamos un Button.

Codigo:

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

android:background="#cccccc" >

<EditText

android:id="@+id/nombre"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

/>

<TimePicker

android:id="@+id/timePicker"

Page 160: Manual de aplicaciones de android

android:layout_width="wrap_content"

android:layout_height="wrap_content" />

<TextView

android:id="@+id/repite"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:textAppearance="?android:attr/textAppearanceLarge" />

<Button

android:id="@+id/boton"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:onClick="onClick"

android:text="Activar alarma" />

</LinearLayout>

3.-Asociamos el código con el layout

4.-Convertimos la variable en String.

5.-Se imprime un Toast.

Código:

package com.wero.timepicker;

import android.os.Bundle;import android.app.Activity;import android.graphics.Color;import android.view.Menu;import android.view.View;import android.widget.*;

Page 161: Manual de aplicaciones de android

public class HelloTimePicker extends Activity { TimePicker timePicker; EditText nombre; TextView repite; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_hello_time_picker); nombre = (EditText) findViewById(R.id.nombre); repite = (TextView) findViewById(R.id.repite); timePicker = (TimePicker) findViewById(R.id.timePicker); timePicker.setIs24HourView(true); } public void onClick(View view) { String nombres=nombre.getText().toString(); Toast.makeText(getBaseContext(), "La alarma"+nombres+" sonara a las:" + timePicker.getCurrentHour() + ":" + timePicker.getCurrentMinute(), Toast.LENGTH_SHORT).show(); repite.setBackgroundColor(Color.BLUE); repite.setText("La alarma"+nombres+" esta activa para sonar"); } }

Con esta aplicación podemos conseguir muchas cosas, por ejemplo podrias hacer una alarma.

Resultado:

Page 162: Manual de aplicaciones de android

DATEPICKER

1.-Creado el proyecto colocamos el LinearLayout de manera vertical.

2.-Colocamos un TextView.

3.-Colocamos el DatePicker.

4.-Colocamos un Botón.

Código:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".MainActivity" >

<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text = "Presione para modificar" />

<DatePicker android:id="@+id/dp" android:layout_width="wrap_content" android:layout_height="wrap_content" />

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

</LinearLayout>

5.-En java relacionamos con el layout.

6.-Obtenemos la fecha.

7.-La mostramos en un Toast.

Código:

package net.datepicker;

Page 163: Manual de aplicaciones de android

import android.os.Bundle;

import android.app.Activity;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.DatePicker;

import android.widget.Toast;

public class MainActivity extends Activity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

final DatePicker dp = (DatePicker) findViewById(R.id.dp);

final Button setBtn = (Button) findViewById(R.id.set);

setBtn.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

Toast.makeText(

MainActivity.this,

Page 164: Manual de aplicaciones de android

dp.getDayOfMonth() + "/" + dp.getMonth() + "/"

+ dp.getYear(), Toast.LENGTH_SHORT).show();

}

});

}

}

Esta App nos ayudaría a crear una agenda o más aplicaciones dependiendo las necesidades que se tengan.

Resultado:

Page 165: Manual de aplicaciones de android