Documentos de Académico
Documentos de Profesional
Documentos de Cultura
(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:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 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" 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: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:
package com.android.calculadora; import android.app.Activity; import android.os.Bundle; import android.widget.*; import android.view.*; public class Calculadora extends Activity { // Instancias de objetos a usar private double valor_a, valor_b; private EditText op_a, op_b; private TextView resultado; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // Asignamos los objetos 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); } 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"); } } } }
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
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
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
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 Fernando - 21 de octubre de 2011 - 19:03 comentario de alejo - 25 de octubre de 2011 - 22:41
Muy bueno, gracias.
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
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
le cambio el nombre al id, del operando a y todo lo que esta abajo del primer textview, me lo sube, por que????
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!!!!
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
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)
Hola Diana, parece un problema de permisos, podras darle permisos de escritura al archivo que comentas?
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"); } }} }
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?
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.