Vous êtes sur la page 1sur 14

> blog agencia web

Acceso Clientes buscar

categoras

Accesibilidad ActiveX Ajax Android Aplicacin Web (WebApp) Apps Buscadores Business Intelligence Comercio electrnico Correo Electrnico CSS ERP Flash Google Google Analytics Google Apps HTML5 Internet Internet Explorer iOS Java JavaScript jQuery Linux Marketing OnLine MySQL Navegadores Open Data Patrones PHP Redes Sociales Rendimiento

RSS SEO Servidores y Seguridad Web 2.0 Windows 8 XHTML RSS


Lunes, 13 de diciembre de 2010

Programando para Android: una sencilla aplicacin


categora: APPS ANDROID JAVA

Vamos a hablar sobre como programar una aplicacin para un dispositivo con Android que se va a tratar de una sencilla calculadora. Como todos sabemos, Android se programa mediante el lenguaje de programacin Java. Este ejemplo de la calculadora puede parecer demasiado bsico, pero con una idea inicial de como hacer una pequea aplicacin para Android y nociones sobre Java, veremos que desarrollar un programa ms complejo es muy fcil. En primer lugar, necesitaremos el Android SDK que lo podemos descargar dehttp://developer.android.com/sdk/index.html Tras instalarlo deberemos ejecutar el archivo android dentro de la carpeta tools y hacer lo siguiente:

Instalar la plataforma de la versin Android a emular, lo haremos desde la pestaa Available packages y elegiremos la versin que queramos (2.1, 2.2, 2.3, etc) Crear un dispositivo virtual, pestaa Virtual devices, que ser nuestro dispositivo a emular.

Como segundo paso, haremos uso de la plataforma Eclipse y su plugin ADT para el desarrollo de Android bajo Eclipse. Podemos hacerlo desde la direccinhttp://developer.android.com/sdk/eclipse-adt.html Ahora nos quedara configurar Eclipse para que supiera la ruta hasta el SDK de Android y tendramos todo preparado para trabajar. Lo podemos hacer desde el men Window -> Preferences y dentro de la ventana en la pestaa Android tenemos la opcin SDK Location. Ahora tenemos todo preparado y configurado para empezar a crear aplicaciones. La web del SDK de Android contiene varios ejemplo de como empezar a programar y el ejemplo ms sencillo es el del "Hola Mundo" donde viene todo el proceso indicado arriba de forma ms detallada (lo podis encontrar aqu http://developer.android.com/resources/tutorials/hello-world.html).

Nosotros nos vamos a basar en uno un poco ms avanzado y lo vamos a ampliar hasta crear una aplicacin con cierta utilidad. Este ejemplo es el de como posicionar elementos con tamaos y posiciones relativas http://developer.android.com/resources/tutorials/views/hellorelativelayout.html y vamos a aadir algunos elementos y funcionalidades para crear nuestra sencilla calculadora.

Creando nuestra primera aplicacin para Android


Para ver cual queremos que sea la interfaz final e intuir el funcionamiento, vamos a mostrar una captura de pantalla del resultado final en el emulador:

donde podemos ver tres elementos: TextView (objeto para mostrar texto), EditText (caja de entrada de texto) y Button (botn).

Empezaremos creando en Eclipse un proyecto para Android, modificaremos el archivores/layout/main.xml en su vista de cdigo de fuente y pegaremos el siguiente cdigo XML:
01 <?xml version="1.0" encoding="utf-8"?> 0 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/an 2 droid" 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:id="@+id/label_a" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Operando A:"/> <EditText android:id="@+id/op_a" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@android:drawable/editbox_background" android:layout_below="@id/label_a"/> <TextView android:id="@+id/label_b" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_below="@id/op_a" android:text="Operando B:"/> <EditText android:id="@+id/op_b" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@android:drawable/editbox_background" android:layout_below="@id/label_b"/> <Button android:id="@+id/sumar" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/op_b" android:layout_alignParentLeft="true" android:layout_marginLeft="1dip" android:onClick="cSumar" android:text="+" /> <Button android:id="@+id/restar" android:layout_width="wrap_content" android:layout_height="wrap_content"

41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71

android:layout_toRightOf="@id/sumar" android:layout_alignTop="@id/sumar" android:onClick="cRestar" android:text="-" /> <Button android:id="@+id/multiplicar" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_toRightOf="@id/restar" android:layout_alignTop="@id/restar" android:onClick="cMultiplicar" android:text="*" /> <Button android:id="@+id/dividir" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_toRightOf="@id/multiplicar" android:layout_alignTop="@id/sumar" android:onClick="cDividir" android:text="/" /> <TextView android:id="@+id/texto_resultado" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_below="@id/dividir" android:text="Resultado:"/> <TextView android:id="@+id/resultado" android:layout_width="fill_parent" android:layout_height="wrap_content"

android:layout_below="@id/texto_resultado" android:text="Realice operacin para obtener 72 resultado"/> 73 </RelativeLayout>

Los atributos relevantes para este ejemplo de cada elemento son:


android:id identificador de cada objeto android:layout_width y android:layout_height, anchura y altura respectivamente android:layout_below: indica si el objeto est debajo de otro android:layout_toRightOf y android:layout_alignTop: indican si estn varios elementos en la misma fila sobre qu objeto se coloca a su derecha y su posicionamiento en altura

android:text es el texto por defecto en cada elemento

android:onClick es el nombre del mtodo pblico a ejecutar al pulsar ese botn. Este mtodo debe ser obligatoriamente pblico y tener como parmetro de entrada la vista, ejemplo public void function cSumar(View view) { ... }.

ahora vamos a programar el funcionamiento de los objetos descritos en el archivo de extensin java creado para el proyecto:
01 package com.android.calculadora; 02 03 import android.app.Activity; 04 import android.os.Bundle; 05 import android.widget.*; 06 import android.view.*; 07 08 public class Calculadora extends Activity { 09 10 11 12 13 14 15 16 17 18 19 20 21 // Asignamos los objetos this.op_a = (EditText) findViewById(R.id.op_a); public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // Instancias de objetos a usar private double valor_a, valor_b; private EditText op_a, op_b; private TextView resultado;

this.op_b = (EditText) findViewById(R.id.op_b); this.resultado = (TextView) 22 findViewById(R.id.resultado); 23 24 25 public void cSumar(View view) { if(this.op_a.getText().toString().length() > 0 && 26 this.op_b.getText().toString().length() > 0) { this.valor_a = Double.parseDouble(this.op_a.getText().toString()); this.valor_b = 28 Double.parseDouble(this.op_b.getText().toString()); 27 this.resultado.setText(Double.toString((this.valor_a + this.valor_b))); 30 } 29 31 32 } }

33

public void cRestar(View view) { if(this.op_a.getText().toString().length() > 0 && 34 this.op_b.getText().toString().length() > 0) { this.valor_a = Double.parseDouble(this.op_a.getText().toString()); this.valor_b = 36 Double.parseDouble(this.op_b.getText().toString()); 35 this.resultado.setText(Double.toString((this.valor_a this.valor_b))); 38 } 37 39 40 41 public void cMultiplicar(View view) { if(this.op_a.getText().toString().length() > 0 && 42 this.op_b.getText().toString().length() > 0) { this.valor_a = Double.parseDouble(this.op_a.getText().toString()); this.valor_b = 44 Double.parseDouble(this.op_b.getText().toString()); 43 this.resultado.setText(Double.toString((this.valor_a * this.valor_b))); 46 } 45 47 48 49 public void cDividir(View view) { if(this.op_a.getText().toString().length() > 0 && 50 this.op_b.getText().toString().length() > 0) { this.valor_a = Double.parseDouble(this.op_a.getText().toString()); this.valor_b = 52 Double.parseDouble(this.op_b.getText().toString()); 51 53 if(this.valor_b != 0) { this.resultado.setText(Double.toString((this.valor_a 54 / this.valor_b))); 55 56 57 58 59 60 61 } } } } else { this.resultado.setText("Infinito"); } } }

El mtodo onCreate se ejecuta al crear la aplicacin y es donde asignamos los objetos declarados en el XML a objetos Java. Tras ello declaramos las funciones definidas en los atributos onClick de cada botn. Por ltimo nos quedara ejecutarlo y probar el funcionamiento.

Conclusiones
Como hemos dicho, este ejemplo de una calculadora es un ejemplo muy sencillo pero podemos ver que con un poco de cdigo y unas pequeas nociones sobre Android SDK podemos sacar muchsimo provecho de nuestros conocimientos sobre Java.

59 comentarios:
Otro otro al correo pavarotty_91@hotmail.com se les agradecera

comentario de Jaime David - 7 de marzo de 2011 - 16:28


Se ve bueno el ejemplo, lo estoy haciendo con eclipse pero en la linea 16 no se reconoce la clase R? public void onCreate(Bundle savedInstanceState) { 16 super.onCreate(savedInstanceState); 17 setContentView(R.layout.main);

comentario de Colombiano - 16 de mayo de 2011 - 22:20


perdon linea 17 la clase R

comentario de colombiano - 16 de mayo de 2011 - 22:21


Parece que no tienes correctamente configuradas las rutas a las libreras de desarrollo de Android dentro de Eclipse, ya que el objeto R pertenece a la base de las libreras Java: http://developer.android.com/reference/android/R.html Has seguido la documentacin para que Eclipse tenga configurado correctamente las rutas? Siguiendo el siguiente enlace para instalar el SDK de Android no deberas tener problemas: http://developer.android.com/sdk/installing.html

comentario de Imaginanet - 17 de mayo de 2011 - 09:02


buenisimo..!!! justo lo que estoy buscando... ya que soy principiante en la programacion en android, grax..!!

comentario de daniel-89 - 22 de mayo de 2011 - 00:21


hola. disculpa la molestia. por casualidad tienen algun codigo de un software con navegaciones con ventanas, combobox y otros tipos de controles? desde ya muchas gracias. mi mail es carlosnavas1986@gmail.com

comentario de carlos navas - 3 de julio de 2011 - 00:38


Me estoy iniciando en esto y me parece exelente no tendras una calculadora con mas funciones no se talvez cientifica, seria super, gracias por todo. rauli_20_5@hotmail.com

comentario de Ismael - 26 de julio de 2011 - 04:37


Respecto a los dos anteriores comentarios:

Hola Carlos, seguiremos ampliando esta seccin sobre Android con el tiempo, de momento puedes revisar la seccin de ejemplos de Android http://developer.android.com/resources/browser.html?tag=tutorial Respecto al comentario de Ismael, a partir de aqu puedes hacer uso de todas las funciones matemticas de Java, por ejemplo:

http://download.oracle.com/javase/6/docs/api/java/lang/Math.html o si quieres algo ms complejo siempre se puede programar. Un saludo.

comentario de Imaginanet - 26 de julio de 2011 - 10:47


amigo esta muy bueno lo compile corrio y todo pero no me cambia el resultado undo los botones y nada que puede ser

comentario de alvaro - 17 de agosto de 2011 - 09:08


Me obliga a forzar cierre!, ni siquiera alcanza a mostrar los botones...

comentario de Fernando - 21 de octubre de 2011 - 19:03 comentario de alejo - 25 de octubre de 2011 - 22:41
Muy bueno, gracias.

Excelente!!! compila completamente, buen cdigo para empezar en andriod...

comentario de Angelx - 6 de noviembre de 2011 - 17:22


hola que tal, excelente tu post pero apenas estoy empezando y estgaria padre que dieras un how to desde un principio de abrir las ventanas y eso, por que me costo algo de trabajo y tengo un error en estas lineas del package de java de la 19 ala 23 te agradeseria tu ayuda.....felicidades

comentario de Jorge Cu - 10 de noviembre de 2011 - 02:44

Hola Jorge, creo que deberas empezar por leerte el tutorial oficial del hello world: http://developer.android.com/resources/tutorials/hello-world.html y despus http://developer.android.com/resources/tutorials/views/index.html Saludos

comentario de Imaginanet - 10 de noviembre de 2011 - 08:51


hola buen aporte pero me sale erro en R.id.op_a y R.id.op_b el error es en .id haver si me ayudas xq este error

comentario de merry - 23 de noviembre de 2011 - 00:53


alguien sabe como enlazar una pagina web usando android sobre eclipse?

comentario de kei - 30 de noviembre de 2011 - 06:01


y despues como se publica en android market??

comentario de alvaro - 29 de noviembre de 2011 - 18:41


Hola lvaro, puedes publicar tu aplicacin en Android Market segn las instrucciones del portal de desarrolladores de Android: http://developer.android.com/

comentario de Imaginanet - 30 de noviembre de 2011 - 13:13


hey fijate que quise agregarle a tu app raiz cuadrada y cubica usando la formula this.valor_c ^(1/2) y no me da resultado correcto.. ayuda

comentario de jose dueas - 4 de diciembre de 2011 - 04:19


Hola Jos, Para hacer uso de races cuadradas y exponenciales es mejor hacer uso de la funcin pow de la librera Math.

Por ejemplo para hacer 2^3 sera: double resultado = Math.pow(2,3); En el caso de la raz cuadrada hay una limitacin para races cuadradas de 2 y 3 (no para radicales superiores) en el que debemos hacer uso de la funciones Math.sqrt() y Math.cbrt() respectivamente, donde previamente debers haber hecho import java.lang.Math Puedes encontrar ms informacin en http://developer.android.com/reference/java/lang/Math.html Saludos.

comentario de Imaginanet - 5 de diciembre de 2011 - 08:28


no jala tu aplicacion, marca error y esta como tu lo hiciste, me dice que la aplicacion se ha interrumpido

comentario de arturo zamora - 25 de diciembre de 2011 - 02:07

le cambio el nombre al id, del operando a y todo lo que esta abajo del primer textview, me lo sube, por que????

comentario de arturo - 25 de diciembre de 2011 - 01:00


Hola Arturo,nn Respecto a que la aplicacin se ha interrumpido, ejectala desde Eclipse y en la consola de debug te mostrar la interrupcin que se ha producido.nn Respecto a que se te mueve todo tras modificar el ID, ten en cuenta que el res/layout/main.xml sigue buscando a ese botn, por lo que debes cambiar el ID en los dos sitios.

comentario de Imaginanet - 3 de enero de 2012 - 07:59


hola me podras poner las fuentes de la aplicacin porfavor

comentario de RUlo - 21 de enero de 2012 - 21:22


no suma -.-....todo lo demas..Ok =D

comentario de leo - 9 de febrero de 2012 - 18:03


ola diskulpa me sale un error en R.id.op_a, R.id.op_b, R.id.resultado. podrias ayudarme gracias

comentario de Daniel - 18 de febrero de 2012 - 23:39


Genial es como programar en SWING

comentario de LeonardoCM87 - 29 de febrero de 2012 - 18:46


Para evitar el error de la R edita el el main.xml de tu proyecto en el workspace/tuproyecto/res/layout/mail.xml pones los valores indicados y listeilor. No debieras tener problemas Saludos !!

comentario de Carlos - 17 de marzo de 2012 - 04:31


Men... gracias, estaba buscando la forma de hacer una calcu... y tu idea me sirvio mucho... lo estaba pensando de la forma dificil :D GRACIAS LOCO, SIGUE CON ESTE TIPO DE APORTES!!!!

comentario de Paspi - 10 de abril de 2012 - 08:57


hola, buen aporte, tambien estaba viendo si alguien pudiera mandarme un ejemplo con textbox, combobox, navegacion entre pantallas, etc a mi correo mrrg89@hotmail.com gracias de antemano

comentario de Alberto - 20 de abril de 2012 - 08:43

oye por que me marca error en la linea 18 donde se asignan los objetos en estos parametros(R.id.op_a) (R.id.op_b) (R.id.resultado)

comentario de led - 7 de junio de 2012 - 05:28


Muy buen aporte pro me gustaria q me ayudes con el codigo fuente xq me sale un error ayuda xfavor......

comentario de Esteban - 18 de junio de 2012 - 04:43


Excelente aporte. Gracias.

comentario de Cesar - 16 de junio de 2012 - 21:32


Hola buenas tardes, podrias colocar el archivo manifiest.xml.. Ya que me da un error al ejecutarlo (Unable to open stack trace file '/data/anr/traces.txt': Permission denied).. Gracias

comentario de diana - 12 de julio de 2012 - 22:56

Hola Diana, parece un problema de permisos, podras darle permisos de escritura al archivo que comentas?

comentario de Imaginanet - Carlos - 13 de julio de 2012 - 07:54


funciona perfecto muchas gracias

comentario de David C - 16 de julio de 2012 - 17:53


Thank you very much !!!

comentario de Al - 24 de julio de 2012 - 18:44


muy bueno! tengo un par de dudas, todas las clases que se crean deben ser hijos de la clase Activity? y la otra, para pasar informacion de una clase a otra hay que usar los Intents, eso es siempre o cuando por ejemplo se desea crear otra Activity?

comentario de patricio - 2 de agosto de 2012 - 06:57


Hola imaginanet, Est buensimo este cdigo que dejaste, muchas gracias por eso. Estoy comenzando a programar para Android y me dejaron la tarea de realizar una calculadora; que deleite poder toparme con esto. Bendiciones.

comentario de Juan Pablo - 2 de agosto de 2012 - 06:20


Hola Patricio, s, as es.

comentario de Imaginanet - Carlos - 21 de agosto de 2012 - 12:01


Gracias por este post!

comentario de Yan C: - 13 de septiembre de 2012 - 06:42


Hola Muy Bueno, ahora tengo una duda, una vez creada y funcionando perfectamente, como la instalo en mi android, he buscado en la ruta Proyecto/bin y he encontrado Calculadora.apk , la he copiado en mi Android pero a la hora de ejecutarla no hace nada, te agradezco la ayuda

comentario de Sergio - 19 de septiembre de 2012 - 22:43

Hola Muy Bueno, ahora tengo una duda, una vez creada y funcionando perfectamente, como la instalo en mi android, he buscado en la ruta Proyecto/bin y he encontrado Calculadora.apk , la he copiado en mi Android pero a la hora de ejecutarla no hace nada, te agradezco la ayuda

comentario de Sergio - 20 de septiembre de 2012 - 19:44

Hola Sergio, en la siguiente URL puedes encontrar ms informacin de qu hacer con los APK: http://www.pedroventura.com/software/como-instalar-un-apk-en-android/ Saludos.

comentario de Imaginanet - Carlos - 20 de septiembre de 2012 - 08:28


Viejo esta buenisimo el ejemplo, pero tengo un inconveniente con el codigo me aparece el siguiente error: FATAL EXCEPTION MAIN nos e que sea la verdad por ejemplo en la linea 17 donde colocaste setContentView(R.layout.main); a mi me toco colocar setContentView(R.layout.activity_calculadora); me pdorias colaborar con eso? Muchisimas gracias

comentario de Juan David Ramirez - 3 de octubre de 2012 - 04:12


Juan David Ramirez a mi me suceda lo mismo, eso sucede cuando copias y pegas el cdigo completo, lo que tienes que hacer es parte del codigo en su lugar teniendo en cuenta los corchetes, el setContentView(R.layout.main); no lo tienes que cambiar. quedaria asi: package com.example.capitales; "en vez de capitales el nombre de tu proyecto, creeria que calculadora. import android.os.Bundle; import android.app.Activity; import android.view.Menu; public class Capitales extends Activity { private double valor_a, valor_b; private EditText op_a, op_b; private TextView resultado; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); this.op_a = (EditText) findViewById(R.id.op_a); this.op_b = (EditText) findViewById(R.id.op_b); this.resultado = (TextView) findViewById(R.id.resultado); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_main, menu); return true; } public void cSumar(View view) { if(this.op_a.getText().toString().length() > 0 && this.op_b.getText().toString().length() > 0) { this.valor_a = Double.parseDouble(this.op_a.getText().toString()); this.valor_b = Double.parseDouble(this.op_b.getText().toString()); this.resultado.setText(Double.toString((this.valor_a + this.valor_b))); } } public void cRestar(View view) { if(this.op_a.getText().toString().length() > 0 && this.op_b.getText().toString().length() > 0) { this.valor_a = Double.parseDouble(this.op_a.getText().toString()); this.valor_b = Double.parseDouble(this.op_b.getText().toString()); this.resultado.setText(Double.toString((this.valor_a - this.valor_b)));

} } public void cMultiplicar(View view) { if(this.op_a.getText().toString().length() > 0 && this.op_b.getText().toString().length() > 0) { this.valor_a = Double.parseDouble(this.op_a.getText().toString()); this.valor_b = Double.parseDouble(this.op_b.getText().toString()); this.resultado.setText(Double.toString((this.valor_a * this.valor_b))); } } public void cDividir(View view) { if(this.op_a.getText().toString().length() > 0 && this.op_b.getText().toString().length() > 0) { this.valor_a = Double.parseDouble(this.op_a.getText().toString()); this.valor_b = Double.parseDouble(this.op_b.getText().toString()); if(this.valor_b != 0) { this.resultado.setText(Double.toString((this.valor_a / this.valor_b))); } else { this.resultado.setText("Infinito"); } }} }

comentario de ohm - 20 de octubre de 2012 - 21:46


Como instalo android en mi compu?? o donde descargo el id para programar en android y eclipse

comentario de Estefan Menocal - 23 de octubre de 2012 - 16:42


Hola Estefan, en el artculo se describe como realizarlo. Sigue los pasos.

comentario de Imaginanet - Carlos - 27 de octubre de 2012 - 17:13


Disculpa estaba probando tu codigo y mi computadora detiene la aplicacion... dice Unafortulately Calculadora has stopped... y no hace ni una operacion...

comentario de Rogelio - 24 de noviembre de 2012 - 02:54


Excelente!!!!

comentario de genaro - 27 de noviembre de 2012 - 23:20


Funciono muy bien gracias

comentario de Saya - 17 de diciembre de 2012 - 03:09


No funciona he revisado la ruta, compile un ejercicio de hola mundo y funciono. Pero me sale el error de .R Que podra ser...? Ya mire el xml, me voy a cortar las pelotas si no soy capaz de hacer este aplicativo.

comentario de Benjamin Jaramillo - 3 de enero de 2013 - 04:28

Hola! Muy buena, me ha servido para entender algunas cosillas de Android. Lo que no entiendo es porque tanto "this". Por no hace falta no?

comentario de Alvaro - 20 de enero de 2013 - 14:05


holis! :DD me funcion muy bien el ejemplo! opaqu a mi compaero ;)

comentario de Ubaldo - 13 de febrero de 2013 - 21:27

Hombre, sos lo mximo gracias por la ayuda.

comentario de Any - 2 de marzo de 2013 - 11:02


yo hasta aqui voy bien pero cual seria el codigo para agregar raiz y potencia

comentario de Watson - 16 de marzo de 2013 - 07:53

la linea "if(this.valor_b != 0)" <-- no tiene sentido porque nunca sera 0 ya que en la condicion anterior has dicho que sea mayor que cero.

comentario de paco - 10 de abril de 2013 - 19:54


oo grax. fue de gran ayuda !!

comentario de alma - 17 de abril de 2013 - 23:14


EXELENTE!!!! fue de gran utilidad ;) thanks

comentario de Ysrael - 18 de abril de 2013 - 09:57

deja tu comentario:

Tu nombre

Tu email

Tu comentario

Introduce el cdigo de seguridad:

Enviar

Vous aimerez peut-être aussi