sábado, 25 de marzo de 2017

Clase Activity 

La  clase activity es un componente Android que se crea como una caja virtual. interfaz de usuario tiene que ser diseñado en la parte superior de esta caja para permitir al usuario interactuar con esta actividad. Esto es exactamente igual método de la caja del HTML, donde cada etiqueta HTML se considera como una caja. Los usuarios interactúan con una aplicación de Android con pantallas proporcionadas por la actividad.

Una aplicación para Android puede tener múltiples actividades y uno de ellos será designado como actividad principal. Si una aplicación para Android tiene más de una actividad, sólo uno de ellos puede estar en estado activo a la vez. Estos estados de la actividad son mantenidos por una pila devuelto la llamada pila.Actualmente se ejecuta la actividad sera en la parte superior de la pila.Cuando se inicia una nueva actividad la actividad más antigua se empuja hacia abajo la pila y la actividad actual se convierte en el elemento superior de la pila que se da acceso de los usuarios.




OnCreate ()
método onCreate () es el método de devolución de llamada primaria que se llama cuando se crea una actividad. Por ejemplo, las operaciones de inicialización y como proyección de diseño se llevarán a cabo.
En la proyección de diseño, View es un término importante que es una clase que ocupa el cuadro de actividad. Cada actividad tiene varios puntos de vista que vienen de ViewGroup. Hay algunas de ellas construidas en ViewGroup tales como widgets de forma y diseño. El usuario también puede crear su conjunto de vistas cubiertos por ViewGroup. Las vistas se muestran método setContentView()usando.



Funcion de SetContentView dentro de onCreate
La linea SetContentView(R.layout.main);señala que hay una clase estatica llamada R.layout y, que dentro de esa clase hay una constante entera llamada main que apunta a una vista definida por un fichero XML, el cual debe estar en el directorio ./res/layout.



 Este método solo se puede llamar desde onCreate,  además es un campo inmutable. Solo se puede fijar la vista de la actividad una sola vez. Es la forma que tiene Android de obligarnos a tener una única vista por actividad.

 ubicacion del archivo  MainAtivity.java.



Atributo @android:id

Independientemente de que tipo de Layout elijamos, tenemos propiedades comunes a todos, y cabe de destacar algunas de ellas:
android:id. Se trata de un número entero que sirve para identificar cada objeto View de forma única dentro de nuestro programa, cuando lo declaramos a través de un xml de resource podemos hacer referencia a la clase de recursos R usando una @, esto es imprescindible, ya que si no no podremos identificar nuestros elementos en nuestro programa para después usarlos y/o modificarlos. 
Ejemplos:  

  • android:id="@id/boton". Hace referencia a un id ya existente asociado a la etiqueta "boton", esto se usa para cuando usamos los Layout Relativos, ya que para ubicar los elementos, lo hacemos indicando por ejemplo que un botón lo insertamos a la derecha de otro pues bien ese otro se pone así.
  • android:id"@+id/boton2". Esto crea una nueva etiqueta en la clase R llamada "boton2".

Como se declaran los controles "DIBUJADOS" en el layout para que puedan utilizarse  en la clase Activity

Por norma general, una actividad está asociada a un Layout. Un Layout es la ventana o vista que el usuario ve en la pantalla: botones, textos, barras de desplazamiento, etc. La asociación se hace en el onCreate con el método llamado “setContentView”, como veremos en el siguiente código.
El aspecto de la actividad se aplica pasando un objeto View(Encargado de dibujar una parte rectangular en la pantalla, pueden contener más objetos View, además todos los componentes de la interfaz (botones, imagenes etc) heredan de View) al método Activity.setContentView(), que es el método encargado de dibujar la pantalla. Normalmente las vistas ocupan toda la pantalla, pero se pueden configurar para que se muestren como flotantes. Las actividades también pueden llamar a componentes que se mostrarán sobre su View (como dialogos o menús).


Metodo findViewById

En primer lugar se utiliza findViewById() para obtener el elemento EditText y añadir el valor del texto a intent.
Intent puede pasar una colección de distintos tipos de datos en forma de pares clave-valor llamado extras mediante el método putExtra(), que recibe el nombre de la clave en el primer parámetro y el valor en el segundo parámetro.es la que enlaza un recurso de la interfaz de usuario de una aplicación, con una variable en nuestro código. O simplemente se encarga de acceder a ese recurso para cambiar una de sus propiedades.
Supongamos, pues, que tenemos un layout con una veintena de widgets entre layouts, Buttons, EditText, TextView, ImageView… Y que en un momento dado del ciclo de vida de la actividad, tenemos que acceder a uno ó varios de ellos para cambiar sus propiedades. Podemos acceder a ellos del modo:
((EditText) this.findViewById(R.id.edittext_cliente)).setOnClickListener(…);
Aunque también podemos guardar el valor que devuelve la funciónfindViewById() en una variable, o variable miembro de la Activity para operar con ella varias veces a lo largo del citado ciclo de vida.

 propiedad @android:onClick
Este métodos nos permite capturar los clicks en determinadas vistas comúnmente botones, para ejecutar ciertas partes de nuestro código fuente y de esta forma realizar las acciones que queramos.

La práctica de hoy será muy simple un botón contador de clicks en Android.
Lo que haremos es agregar el botón el botón en nuestro layout principal y hacer la asociación correspondiente con su variable en Java. Para aquellos que no saben como hacer dicha asociación de elementos XML a variables en Java click aquí.

Códigos actuales.

Código XML

?
1
2
3
4
<relativelayout android:layout_height="match_parent" android:layout_width="match_parent" android:paddingbottom="@dimen/activity_vertical_margin" android:paddingleft="@dimen/activity_horizontal_margin" android:paddingright="@dimen/activity_horizontal_margin" android:paddingtop="@dimen/activity_vertical_margin" tools:context=".ZASApp2MainActivity" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools">
    <button android:id="@+id/button1" android:layout_centerhorizontal="true" android:layout_centervertical="true" android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="New Button">
</button></relativelayout>



Código JAVA
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package com.example.zasapp2.zasapp2;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.Menu;
import android.widget.Button;
public class ZASApp2MainActivity extends ActionBarActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_zasapp2_main);
        Button boton1 = (Button)findViewById(R.id.button1);
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_zasapp2_main, menu);
        return true;
    }
}
El código actual solo asocia el elemento XML a la variable correspondiente en java, en este caso un boton llamado boton1. 

Implementación de onClick

Lo siguiente es implementar el evento setOnClickListener en el botón esto para que dicho botón escuche los clicks que recibe. Esto se hace con el siguiente código. 
?
1
2
3
4
5
6
boton1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                 
            }
        });
A los IDE como Andriod Studio o Eclipse facilitan mucho la escritura de este tipo de métodos por el auto-completado, ahora cada vez que el botón sea pulsado este método lo detectará y ejecutará todo el código que este escrito dentro de este, la parte donde escribiremos las acciones a realizar es dentro de las llaves del método onClick que contiene un atributo View llamado view(el nombre puede cambiar puede ser v, arg0, etc). Bien procedemos a escribir el código contador, es algo muy simple declarar una variable entero fuera del método onClick para que no se reinicie cada vez que se pulsa el botón y dentro del método onClick un autoincremental en 1, también necesitaremos mostrar el resultado en el botón con el método setText(variable); si quieres ver el pequeño tutorial sobre setText click aquí. 

Código final JAVA

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
package com.example.zasapp2.zasapp2;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
public class ZASApp2MainActivity extends ActionBarActivity {
    int clicks = 0; /*Declarado como variable "global" dentro de Activity
                     para ser usada en el metodo onClick esto evitara que
                     la variable se vuelva a cero cada vez que se da click
                     */
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_zasapp2_main);
        final Button boton1 = (Button)findViewById(R.id.button1);
        boton1.setText("No has pulsado el boton");
        boton1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
            clicks++;
            boton1.setText("Has pulsado el boton "+clicks+" veces");
            }
        });
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_zasapp2_main, menu);
        return true;
    }
}
El botón mostrará inicialmente un mensaje "No has pulsado el botón" pero al pulsar el botón ejecutará el código dentro de onClick y el mensaje cambiará por "Has pulsado el botón N veces".Los resultados:

A partir de esto se pueden realizar gran cantidad de tareas, al pulsar un botón o elemento en el Layout.

No hay comentarios:

Publicar un comentario