Vous êtes sur la page 1sur 217
— marcombo} Android: Programacién de dispositivos méviles a través de ejemplos Primera edicién, 2012 © 2012 José Enrique Amaro Soriano © MARCOMBO, S.A. 2012 Gran Via de les Corts Catalanes, 594 08007 Barcelona ‘www.marcombo,com «Cualquier forma de reproduceién, distribueién, comunicacién publica o transformacién de esta obra sélo puede ser realizada con la autorizacion de sus titulares, salvo excepeion prevista por la ley. Ditijase a CEDRO (Centro Espaitol de Derechos Reprografi www. cedro.org) si necesita fotocopiar o eseanear algtin fragmento de esta obra» ISBN: 978-84-267-1767-2 DL: Impreso en XXXXXXXx Printed in Spain INDICE GENERAL 1.1. Acerca de este libro. 1.2. A quién va dirigido 1.3.__Resumen de los contenido: 1.4. Requerimientos 1.5. Créditos y Agradecimiento 2. ESCRIBIR Y MANIPULAR TEXTO......... 2.1. Actividad basica: Hola Android . 2.2. Color de fondo y formato del texto.......... 2.3. Modificando el texto desde Java............ 2.4. Modificando el color desde Java... : ave a 9. Afadi texto con Append) .. \do la pantalla 3.__BOTONES....... 3.1. Definicin de un botén en el layout. 3.2. Caso de dos botones 3.3. Uso de Toast para mostrar 3.4. Cambiar eltexto de un botén. 5.__ GUARDAR DATOS CON SharedPreferences.. 6.__ ACTIVIDADES ssssssssensecsssnans 6.1. Uso de Intent para inick 6. Pasar valores numéricos entre actividades th. — eae ences cee vil 8.4. Dimensiones. del canvas... sesentesennennensnecnennnnscene 8.5. Formas geométricas.... 8.6. Curva: ae 8.7. Trastaciones y rotaciones 8.8. Texto siguiendo una cu 8.9. Caracteres Unic: 8.10. LayoutParams.... GRAFICOS INTERACTIVOS 1 Evento ACTION DOWN Evento ACTION MOVE. Dibujar en la . Mover objetos. SUSU AGRE i chicsinintiese lias 10.1. Insertar una imagen en el layout... 10.2. Controlando las imagenes en Java. 10.3. Botones con imagenes... 10.5. Nt REPRO DDUICTI SOND css nae L1G 11.1, Uso de MediaPlayer... 11.2. Reproducir efectos de sonido justar imagen a las dimensiones 12. APLICANDO TEMAS 12.1. Tema por defecto . 12.2. Tema NoTitleBar... 12.3. Tema Dialog 12.4. Tema Light . 13. RECURSOS... panensannnnsansansansnsienneananscensnnnsansesinneansassessesnanasssssesnnissaes L2T 13.1. El recurso string 27 13.2. El recurso color . 29 13.3. Usando recursos en un Layout. 31 14, HILOS ¥ CONTROLADORES wicssssssssssssssssssssssssssnesssissssnanssnsnsansssansessneers 137 on Threé 14.1, Ejecuciones en backgr 14.2. Didlogos de progress vin 14.3. Interfaz Runnable... 14.4. Notificaciones. 15. ANIMACIONE! 15.1. Movimiento uniforme. La bola botadora...... 15.2. Movimiento acelerado. La bola botadora 11 .... 15.3. Conservacién de la energia...... 15.4. Simulaci6n de caida con ligadura APENDICE A... ELEMENTOS DE JAVA A.1. Programa basico de Java con Android A.2. Variables A.3. Conversién de variables. A.4. Operaciones con variables ... A.5. Funciones matematicas A. Bloque if-else A.7. Bucles for . A.B. Bucle while... AQ. Bloques switch A.10. Métodos ..... A.11. Clases y objetos........ A.12. Sub-clases A.13. Variables y métodos es A.14. Arrays ... A.15. Arrays 2D A.16. Cadenas...... A.17. Formato numérico... A.18. Manejo de Excepciones. A.19. Interfaces .... A.20. Clases andnima: A.21. Otras caracteristicas de Java A211, Paquetes... A.21.2. Clases piblicas A.21.3, Privilegios de acceso de los métodos y variables A.21.4. Clases y métodos abstractos.. ce APENDICE B.... HERRAMIENTAS DE DESARROLLO DE ANDROID ... B.1. Eclipse .... B.1.1. Problemas en la instalacién 8.1.2. Importar una clase Java de otro proyecto B.1.3. Importar un proyecto completo ya existente B.2. Android Virtual Device (AVD). B.3. Dalvik Debug Monitor Server (DMS)... APENDICE C... APLICACIONES ...... C.1. Interaccién neutrén-protén C.2. Ajuste por minimos cuadrados C.3. Energia del Helio-4 . BIBLIOGRAFIA... 1. INTRODUCCION 1.1. Acerca de este libro Aunque el sistema operativo Android tiene apenas unos afios de vida, la libroria Java de Android consiste ya en mas de 150 paquetes (APIs), que contienen miles de clases, métodos, interfaces y constantes. Todas estas clases estan documentadas en la pagina web de Android Developers. La vasta extension del software de desairolio de Android (SDK) puede resultar extremadamente abrumadora para ol quo se acerca por primera vez a este sistema, especialmente si también es nuevo en el lenguaje de programacién Java. La bibliografia existente tiende a estar dirigida a profesionales y los pocos libros introductorios estan enfocados a construir completas aplicaciones de telefonia, que por su extension y complejidad coniribuyen a incrementar la frustracién del principiante. En muchos casos se requiere un conocimiento avanzado de Java. Los manuales de Android ilustran todo tipo de aplicaciones para controlar sensores, enviar SMS, utilizar el GPS, acceso a servicios de internet, juegos, telefonia, fotografia, video, musica atc. Pero en general se pasa por alto que los dispositivos Android son verdaderos ordenadores que pueden utilizarse también para calculo numérico y aplicaciones cientificas y técnicas, tanto para docencia como para uso profesional ¢ investigacién. Con Android es posible realizar aplicaciones de calculo y literalmente llevarselas en el bolsillo. En este libro pretendemos hacer un acercamiento distinto a Android. No introduciremos toda la artilleria de Android necesaria para escribir complejas aplicaciones de calidad profesional para publicarlas en el mercado Android. Se trata de presentar en pocas paginas las herramientas necesarias para poder realizar en poco tiempo programas sencillos de computacién para uso cientifico y técnico, aunque no se descartan otras aplicaciones en los estudios, en el trabajo, artisticas 0, simplemente, para ocio 0 disfrute personal 1.2. A quién va dirigido Este libro esta dirigido al principiante con escasos o nulos conocimientos de Java que quiere escribir rapidamente programas para uso personal. En particular, podran beneficiarse de este libro los estudiantes, profesores, cientificos o profesionales de cualquier tipo, con conocimientos previos de algtin lenguaje de i programacién, que pretendan utilizar sus dispositivos Android para ejecutar sus propias aplicaciones. Siguiendo la filosofia de que un ejemplo vale més que mil palabras, introducimos los conceptos mediante ejemplos que consisten en pequefias aplicaciones que ilustran algun aspecto concreto de Android. Todos los ejemplos se acompafian con capturas de la pantalla. El resultado es un acercamiento rapido y practico al sistema. 1.3. Resumen de los contenidos En las primeras noventa paginas (capitulos 2 a 8), se introducen los conceptos esenciales para escribir completas aplicaciones Android con funciones de entrada y salida de datos, lectura y esoritura de ficheros, y herramientas graficas, utilizando 36l0 un pequefio conjunto de clases y métodos de la libreria de Android. A continuacién, se introducen otras hetramientas no esenciales, aunque igualmente asequibles, como graficos interactivos (capitulo 9), manejo de imégenes (capitulo 10), Sonido (capitulo 11), temas (capitulo 12) y recursos (capitulo 13). El capitulo 14 introduce ya conceptos mas avanzados, incluyendo procesos, controladores, didlogos de progreso y notificaciones. Finalmente el capitulo 15 describe como realizar animaciones graficas, con aplicacién directa a simulaciones. EI libro se complementa con un apéndice de introduccién al lenguaje de programacién Java, usando exclusivamente Android (apéndice A). El lector que no conozca Java podré adquirir las nociones basicas de este lenguaje estudiando el apéndice A, a la vez que avanza en el estudio del capitulo 2. Aunque en este libro no se describe el software especifico para desarrollo de Android (editores, compiladores, emuladores, etc), el apéndice B contiene algunas notas sobre el uso de estas herramientas, que pueden ser ttiles en algin momento. Finalmente, en el apéndice C aplicamos los conceptos y técnicas introducidas en este libro para realizar un programa completo de cdlculo cientifico Algunos de los ejemplos de este libro pueden descargarse de la pagina web del autor: http://www.ugr.es/~amaro/android Estas aplicaciones podran ser instaladas directamente en un dispositivo Android, o podran ser examinadas y modificadas por el usuario, puesto que se proporciona su cédigo fuente. 12 aa You have either reached a page that is unavailable for viewing or reached your viewing limit for this book. aa You have either reached a page that is unavailable for viewing or reached your viewing limit for this book. 2. ESCRIBIR Y MANIPULAR TEXTO 2.1. Actividad basica: Hola Android Comenzamos examinando el siguiente listado del programa por defecto generado por Eclipse al crear un nuevo proyecto android. Se trata de escribir el mensaje ‘Hola Android” en la pantalla. En este programa basico se define la clase Activity, que contiene el método onCreate () que se ejecuta cuando se crea la actividad (ver la seccién A.1 en el apéndice para una explicacién detallada de los elementos Java de esta actividad) package prueba.android.hello; import android.app.Activity; public class Hello extends activity { /** Called when the activity is first created. */ @override public void onCreate (Bundle savedInstancestate) { super .onCreate (savedInstanceState) ; setContentView(R.layout.main) ; } } Lo que hace la titima instruccién del programa —_ anterior setcontentview(R.layout main), es ‘inflar’ la vista de la pantalla (0 “layout’). Esta vista esta definida en el fichero main .xml, al que hace referencia la variable R. layout .main. ‘http: //schenas.android.com/apk/res/android" background="#f££ff£" orientatio1 vertical" layout_width="£ill_parent" layout_height="£il1_parent" layout_width-"wrap_content" layout_gravity="center" layout_height="wrap_content" textColor="#000000" textSize="24sp" text="Negro sobre blanco Android" W El resultado puede verse en la figura 2.2. 2.3. Modificando el texto desde java La cadena de texto que se muestra en pantalla estd definida en el fichero de layout main.xml. Podemos modificarla desde java. Para ello primero afiadimos una etiqueta (0 ID) al texto Text view en el archivo xml: Aqui hemos afiadido la linea android:id y el texto quedara identificado mediante la etiqueta myTextview. A continuacién en la clase Activity del cédigo java esctibimos la siguiente instruccién que define un objeto Text view asociado a la id myText View que hemos indicado en main. xml: TextView myTextView=(TextView) findViewById(R.id.myTextView) ; El método findviewzyrd|) aplicado a variable R.id.myTextview se encarga de localizar el bloque en main.xm1 asociado a Textview. A continuacién, definimos otto texto con el método setText (): nyTextView. set Text ( "He modificado TextView con un nuevo texto" + "usando java"); EI programa java quedaria asi: package prueba.android.hello; import android.app.activity; import android.os.Bundle; import android.widget .TextView; public class Hello extends Activity { @0verride public void onCreate (Bundle savedInstancestate) { super .onCreate (savedInstanceState] ; setContentView(R. layout .main) ; TextView myTextView= 18 (TextView) findViewById(R.id.myTextView) ; myTextView.setText ( "He modificado TextView con un nuevo texto " + “usando java"); } } Y el resultado se puede ver en la figura 2.3. set Text () no modifica el texto que hay escrito en el fichero main .xm1, s6lo el que se muestra en la pantalla del teléfono. nuevo texto usando java Figura 2.3. Texto modificado con setText() 2.4. Modificando el color desde Java También se pueden modificar otras propiedades del texto con java. Por ejemplo, setTextColor() para cambiar el color. Asi, afiadiendo la siguiente instruccién definiriamos el texto rojo:0 myTextView.setTextColor (Color.argb(255,255,0,0)); El método color.argb (alpha, red,green,blue)construye el color asociado a las componentes de alpha (transparencia), rojo, verde y azul, que son ntimeros enteros entre 0 y 255. El resultado se ve en la figura 2.4. 19 aa You have either reached a page that is unavailable for viewing or reached your viewing limit for this book. aa You have either reached a page that is unavailable for viewing or reached your viewing limit for this book. print (Layout , String) para afiadir un texto a un layout. Esto nos permite ilustrar tambien el normal uso de Java en Android. Por ejemplo, afadimos el siguiente método a nuestra actividad: public void print (LinearLayout 11, String texto) { TextView tv=new Textview (this); tv.setTextColor (Color .argb(255,0,0,0)); tv.setTextSize (18); tv.setText (texto) ; 11 .addView(tv) ; } de manera que para afiadir un texto al layout nos basta llamar a este método: uinearLayout 11 = (LinearLayout) findViewBytd(R.id-myLinearLayout) ; print (11, "Afiadiendo texto al layout usando el método print ()" +" que hemos definido") ; Ademés, podemos definir un método print ()alternativo _afiadiendo parametros para escribir el texto con un tamajio y un color dados: public void print (LinearLayout 11, String texto, int size, int r, int g, int b){ TextView tv=new TextView (this) ; tv.setTextColor(Color.argb(255,r,g,b)); tv.setTextSize (size) ; tv.setText (texto) ; ll .addview(tv) ; ) Ya podemos ejecutar este método cuanto queramos con distintos tamafios y colores, por ejemplo: LinearLayout 11 = (LinearLayout ) findviewByTd(R.id.myLinearLayout) ; print (11,"text size 18 red ",18,255,0,0); print (11,"text size 24 green ",24,0,255,0); print (11,"text size 28 blue ",28,0,0,255); print (11,"text size 32 amarillo ",32,255,255,0); print (11, "text size 28 magenta ",28,255,0,255) ; print (11,"text size 24 cyan ",24, 0,255,255) ; El resultado se muestra en la figura 2.6. Ie modificado Textview con un hnuevo texto usando java ext size 18 red ext size 28 blue ext size 28 magenta Figura 2.6, Resultado de escribir usando la funci6n print(). 2.7. Escribiendo resultados de operaciones Utilizando set Tex podemos escribir cualquier texto o el resultado de cualquier operacién matematica, por ejemplo: double a=2.25; double b=1.25; double c=a+b; tv.setText ("La suma de "+ a4 "mas "+b+ "es "4c ); Aunque setText admite sélo cadenas, estas se pueden concatenar con nuimeros usando el signo +. También podemos aprovechar la funcién print () definida en el ejemplo anterior. Aqui tenemos el programa He11o modificado para escribir el resultado de una operacion: public class Hello extends Activity { @0verride public void onCreate (Bundle savedinstancestate) { super .onCreate (savedInstanceState) ; setContentView(R.layout.main) ; TextView myTextView = (Text View) £indviewById(R.id.myTextView] ; nyTextView. set Text ( "Ejemplo de resultados de operaciones matem&ticas" + “usando java"); 24 } myTextView. set TextColor (Color .argb(255,255,0,0)); double 252: double b=1.2 double c=a+b; LinearLayout 11 = (LinearLayout) findViewBytd(R.id.myLinearLayout) ; print (11, “La suma de "+a+ "mas "+b+"es "4 cl; public void print (LinearLayout 11, string texto) { } TextView tv=new TextView (this) ; tv.setText Color (Color.argb(255,0,0,0)); tv.setTextsize (18); tv.setText (texto) ; 11 .addview(tv) ; } El resultado se puede ver en la figura 2.7. a Fal @ 12:46 Pm iEjemplo de resultados de peraciones matematicasusando java a suma de 2.25 mas 1.25 es3.5 Figura 2.7. Resultado do operaciones matematicas. 2.8. Ejemplo: una tabla del seno Otro ejemplo, en lugar de la simple suma anterior, escribamos una tabla de la funcién seno entre 0 y 4 LinearLayout 11= (LinearLayout) findviewById(R.id.myLinearLayout) ; print (11,"\n Tabla de sin(x) :\n"); for(int i=0;ic10;i++) { double x=i/10.0; double sx=Math.sin(x); print(11, "sin( "+x +") "+ sx); } EI resultado esté en la figura 2.8. El simbolo \n indica nueva linea. Recordamos ademas en este ejemplo cémo se realiza un ciclo repetitivo en Java usando for (). a [afl @ 12:56 pm Ejempio de resultados de loperaciones matematicas usando ava Tabla de sin(x): in( 0.0 )= 0.0 in( 0.1 ) = 0.09983341664682815 in 0.2 = 0.19866933079506122 in( 0.3 ) = 0.29552020666133955 in( 0.4 ) = 0.3894183423086505. in( 05 ) = 0.479425538604203 in( 0.6 ) = 0.5646424733950354 in( 0.7 ) = 0.644217687237691 jin( 0.8 ) = 0.7173560908995228 in( 09 ) = 0.7833269096274834 Figura 2.8. Resultado de operaciones matematicas. Tabla del seno. 2.9. Afa texto con Append() Se puede afiadir texto a un objeto TextView usando el método append(). Por ejemplo: public class HolaAndroid2 extends Activity { @0verride public void onCreate (Bundle savedInstancestate) { super .onCreate (savedInstanceState) ; setContentView(R.1layout.main) ; View v=findViewById(R.id.myTextView) ; TextView myTextView=|TextView) v; myTextView.setText ("Texto 1 definido con setText"); myTextView.append("\n Texto 2 con append") ; myTextView.append("\n Texto 3 con append") ; myTextView.append("\n Texto 4 con append") ; El resultado se muestra en la figura 2.9. Ale 2PM Texto 1 definido con setText Texto 2 con append Texto 3 con append Texto 4 con append Figura 2.9. Afiadir texto a un textView con append(). 2.10. Extendiendo la pantalla con ScrollView Si vamos a escribir mucho texto en un Layout, llega un momento en que aquél se sale de la pantalla y ya no es posible verlo, aunque el texto en teoria esta ahi (de 26 aa You have either reached a page that is unavailable for viewing or reached your viewing limit for this book. aa You have either reached a page that is unavailable for viewing or reached your viewing limit for this book. 3. BOTONES En Android los botones permiten interaccionar con las aplicaciones para realizar acciones. 3.1. Defi jon de un botén en el layout Lo mas simple es definir un boton dentro de un layout mediante: Este botén lo afiadimos al fichero main. xm1 del ejemplo “Hola Android" que se modifica asi: 29 Figura 3.1. Un boton simple. La actividad principal “inflara” este bot6n junto con el Layout. Por ejemplo: public class Hello extends Activity implements onClickListener { /** Called when the activity is first created. */ @override public void onCreate (Bundle savedInstanceState) { super .onCreate (savedInstancestate) ; setContentView(R. layout .main) ; TextView myTextView= (TextView) findViewById(R.id.myTextView) ; myTextView.setText ("Ejemplo de botén") ; } El resultado se muestra en la figura 3.1. Nétese que en la primera linea hemos afiadido ala clase Hello la propiedad: 30 implements OnClickListener Esto es necesario para que la actividad “escuche los clicks" y responda al pulsar sobre el boton. Para que el botén responda a una accién primero debemos definir el botén como un objeto de tipo View asociado a su ID: view boton=findviewByTd(R.id.myButton) ; y luego definir a este bot6n como un “oyente" de clicks en nuestra actividad: boton.setOnClickListener (this) ; Para finalizar la implementacién de la interfaz OnCclickListener, debemos definir el método onClick () que contiene las instrucciones a seguir cuando se pulse el botén: public void onClick(view v) { myTextView.setText ("Has pulsado el botén"); } El ejemplo final quedaria asi: package prueba .android.hello; import import import import import public android.app.Activity; android.os.Bundle; android.view.View; android.view.View.OnClickListener; android.widget .TextView; class Hello extends Activity implements OnClickListener{ /** Called when the activity is first created. +/ TextView myTextView; @override public void onCreate (Bundle savedInstanceState) { View boton= super .onCreate(savedInstancestate) ; setContentView(R.layout .main) ; myTextView= (Text View) findViewById(R.id.myTextView) ; myTextView.setText ("Ejemplo de botén") ; indViewBy1d (R.id.myButton) ; boton.setOnClickListener (this) ; public void onClick(view v) { myTextView.setText ("Has pulsado el botén") ; } Nétese que en el encabezamiento hemos incluido también las importaciones necesarias para que el programa funcione. Estas lineas generalmente las obviamos en nuestios ejemplos, porque el programa Eclipse nos informa y hace las importaciones necesarias, pulsando con el botén derecho del ratén sobre los nombres de los objetos que quedan subrayados en rojo en Eclipse. Lo que hace el método onClick ()es modificar el texto de myTextview, que hemos tenido que declarar fuera del método oncreate()como campo de la clase Hello para que esté definido en toda actividad, también en onClick () TextView myTextView; Al pulsar el botén se ejecuta el método onClick |) que redefine el texto de myText View, "has pulsado el botén’, como se ve en la figura 3.2. Hello iHas pulsado el botén Figura 3.2. El texto cambia tras pulsar el botén. 3.2. Caso de dos botones Para afiadir un segundo boton basta definirlo en main.xml a continuacion del primero. 32 Igual que en el caso de un botén, hay que definir cada uno de los dos botones como “escuchador" mediante setOnClickListener (). view boton1=findviewById(R.id.button1) ; botonl.setOnClickListener (this) ; View boton2=findViewById (R.id.button2) ; boton2 .setOnClickbistener (this) ; Finalmente, se debe definir una accién dependiendo de cual de los botones se ha pulsado en el método onClick (View v), donde v correspondera a uno de los dos botones. Basta entonces comprobar su “ID’ mediante v.gettd() para definir la accién. En el siguiente ejemplo haremos que se escriba un texto indicando qué botén se ha pulsado. public class HolaAndroid2 extends Activity implements onClickListener{ TextView myTextView; aa You have either reached a page that is unavailable for viewing or reached your viewing limit for this book. aa You have either reached a page that is unavailable for viewing or reached your viewing limit for this book. ele saan Tempio deboton Botont eet err Figura 3.4. Un texto emergente con voast tras pulsar el bot6n 2. 3.4. Cambiar el texto de un botén La clase Button es una extension de la clase TextView. Por tanto, se pueden usar todo sus métodos, por ejemplo ((TextView) usar el método hay que convertir el botén a tipo TextView mediante un cast. En Ia siguiente aplicacién, modificamos el ejemplo anterior para que cada botén muestre el niimero de veces que se ha pulsado. Basta sustituir el método onClick () porlo siguiente: 36 int 41-0; int i2=0; public void onClick (View v) { String mensaj int duracion: if (v.getIa() ltt; (Textview)v) .setText ("Pulsado "+i1+" veces"); .id.button1) { } else if(v.getId( i2++; -id.button2) { setTex(), de la siguiente forma: boton) .setText ("texto del boton"); nétese que para ((TextView) v) .setText ("Pulsado "+i2+" veces"); t } El resultado se muestra en la figura 3.5. GEIS tooAw Ejemple debeton Pulsado 32,veces Pulsado 44 veces Figura 3.5, Cada botén muestra el nimero de pulsaciones usando set Text. 3.5. Cambiar el color de los botones Para cambiar el color de un botén se utiliza el método: boton. set BackgroundColor (Color .rgb(red, green, blue) ) Como ilustracién del uso de este método, en el ejemplo anterior afiadiremos un tercer botén y definiremos el método onClick () para que, al pulsar sobre el primer botén, cambie la componente red, el segundo la green y eltercero la blue. Pulsando sobre los distintos botones estos cambian de color. El programa permite explorar la gama de colores avanzando de cinco en cinco. Este es el cédigo que sustituye a onClick (): int i1-0; int i2=0; int i3=0; int dcolor=5; int cmax=255; 38 int red=cmax; int green=cmax; int blue=cmax; public void onClick (View v) { if(v.getId()--R.id.button1) { ileey red=dcolor*iltemax; else if(v.get1d( i2t+; green=dcolor*i2%cmax; -id.button2) { else if(v.getId( ibees bluesdcolor*i3temax; -id button3) { } ((TextView)v) .setText ("color "+tred+", "+greent", "tblue) ; v.setBackgroundColor (Color. rgb (red, green,blue)) ; } El resultado se ve en la figura 3.6. BAG anm rs Figura 3.6. Pulsando los botones, cambian de color con setBackgroundColor (). 3.6. Calculadora Para ilustrar el uso de botones en Android presentamos una sencilla aplicacién, una calculadora con botones para ntimeros y operaciones. Esto nos permitira también introducir el uso de tablas en Android. Primero definimos los botones en main.xm1 dispuestos en una tabla, usando un TableLayout. Cada fila se especifica con TableRow. Las dos primeras filas incluyen sélo texto. La primera fila es un titulo. La segunda fila mostrara los niimeros que vamos introduciendo. La tercera fila es un texto para el resultado de los célculos, que expande tres columnas, y el botén »=". Las siguientes filas contienen botones para las teclas numéricas, las operaciones aritméticas, el punto decimal y la tecla de borrado. sTextView android: textColor="#000000" android: background="#ffaa33" android:textSize="24sp" android: layout_gravity="center" android: layout_width="£i11 parent" android: layout_height="wrap_content" android:text="Android Calculator" [>

Vous aimerez peut-être aussi