Material Semana 1 - Android

15
SENA REGIONAL CAUCA CENTRO DE TELEINFORMÁTICA Y PRODUCCIÓN INDUSTRIAL Ingeniero, Giovanny Angulo Controles de Texto Básicos en Android TextView EditText TextView es un control que muestra un texto, generalmente es informativo y no se suelen hacer muchos cambios. EditText es un control que permite al usuario de nuestra aplicación introducir un texto mediente teclado. TEXTVIEW Como se muestra en la imagen, tenemos varias opciones a la hora de elegir una etiqueta informativa. "Plain TextView" seria el TextvView básico y "Large Text", "Medium Text", "Small Text" es el mismo control, lo único que nos cambia la apariencia, en concreto el tamaño del texto. EDITTEXT De igual forma, el control básico sería Plain Text, aunque tenemos muchas otras opciones que nos proporciona Android Studio, como puede ser Password(Numeric), que nos automatiza el control para que el usuario al pulsar, le aparezca el teclado numérico, y oculte los caracteres con puntos.

description

sena

Transcript of Material Semana 1 - Android

  • SENA REGIONAL CAUCA CENTRO DE TELEINFORMTICA Y PRODUCCIN INDUSTRIAL

    Ingeniero, Giovanny Angulo

    Controles de Texto Bsicos en Android TextView

    EditText

    TextView es un control que muestra un texto, generalmente es informativo y no se suelen hacer

    muchos cambios.

    EditText es un control que permite al usuario de nuestra aplicacin introducir un texto mediente

    teclado.

    TEXTVIEW

    Como se muestra en la imagen, tenemos varias opciones a la hora de elegir una etiqueta

    informativa.

    "Plain TextView" seria el TextvView bsico y "Large Text", "Medium Text", "Small Text" es el mismo

    control, lo nico que nos cambia la apariencia, en concreto el tamao del texto.

    EDITTEXT

    De igual forma, el control bsico sera Plain Text, aunque tenemos muchas otras opciones que

    nos proporciona Android Studio, como puede ser Password(Numeric), que nos automatiza el

    control para que el usuario al pulsar, le aparezca el teclado numrico, y oculte los caracteres con

    puntos.

  • SENA REGIONAL CAUCA CENTRO DE TELEINFORMTICA Y PRODUCCIN INDUSTRIAL

    Ingeniero, Giovanny Angulo

    Propiedades a destacar: layout:width : indica el ancho del control (ojo no del texto que contiene)

    layout:height : indica la altura del control. (idem)

    Estas dos propiedades pueden contener 4 valores:

    1. match_parent: Ajusta la dimensin al padre que lo contiene

    2. wrap_content: Ajusta la dimensin a su contenido.

    3. fill_parent: es exactamente igual que match_parent, es un valor obsoleto que no

    debemos usar a no ser que nuestra aplicacin sea compatible con versiones anteriores a

    Android 2.2, a partir de esta versin debemos usar match_parent.

    4. Un valor en concreto, por ejemplo 50dp

    No debemos confundir la propiedad Gravity con layout:gravity, esto suele crear bastante

    confusin sobre todo cuando uno se inicia en el mundillo de android.

    Gravity hace referencia al contenido mientras que layout:gravity hace referencia al control, es decir,

    si queremos alinear el texto dentro del control hacia la derecha, utilizaremos Gravity, y marcaremos

    la opcin de right, mientras que si queremos alinear todo el control a la derecha de la

    pantalla(activity), utilizaremos layout:gravity y tambin marcaremos right.

    Propiedad Autolink

    Podemos definir que nuestro TextView, (ya que en EditText no es muy lgico utilizarla) para que se

    genere un enlace, que el usuario al pulsarlo se abrir automticamente la aplicacin por defecto

    para usar el enlace, por ejemplo si marcamos web siempre y cuando el texto sea una URL, se

    abrir el navegador por esa URL, o si ponemos un nmero de telfono, automticamente nos

    saldr la aplicacin para llamar a ese nmero.

    Os animo a que juguis con las propiedades, que son muy intuitivas.

    Es importante definir un id para nuestros controles, de esta forma podemos hacer referencia a ellos en nuestro cdigo java.

    Ejemplo de nuestro fichero xml: layout_main.xml:

    android:orientation="vertical"

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

  • SENA REGIONAL CAUCA CENTRO DE TELEINFORMTICA Y PRODUCCIN INDUSTRIAL

    Ingeniero, Giovanny Angulo

    android:gravity="center_horizontal"

    android:id="@+id/tvMuestraTexto"

    android:layout_gravity="center"

    android:layout_height="wrap_content"

    android:layout_width="match_parent"

    android:text="Esto es un TextView">

    Para hacer obtener el texto que el usuario introduce en el EditText, lo primero es declarar el control en nuestra clase de la siguiente forma:

    EditText etTextoIntroducido = (EditText) findviewbyid(R.id.etEntradaTexto); como muestro en el siguiente cdigo:

    @Override

    protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);

    EditText etTextoIntroducido = (EditText)

    findViewById(R.id.etEntradaTexto);

    String texto = etTextoIntroducido.getText().toString();

    }

  • SENA REGIONAL CAUCA CENTRO DE TELEINFORMTICA Y PRODUCCIN INDUSTRIAL

    Ingeniero, Giovanny Angulo

    3. Controles de Texto Avanzados

    Hemos visto los controles bsicos de texto, ahora vamos a ver unos controles un poco ms

    avanzados, que pueden aadir un extra de usabilidad a nuestras aplicaciones, los controles

    sonAutoCompleteTextView y MultiAutoCompleteTextView

    Se utilizan para presentar sugerencias mientras el usuario escribe un texto, con una serie de palabras que nosotros hemos predefinido, en forma de men desplegable.

    Que diferencia hay entre AutoCompleteTextView y MultiAutoCompleteTextView? El primero se utiliza cuando el usuario va a escribir solamente un elemento, por ejemplo, si introduce un pas y comienza escribiendo una 'E', le apareceran como sugerencias Espaa / Ecuador / Egipto. Pero si en el mismo cuadro va a escribir varios pases, debemos usar el MultiAutoCompleteTextView, de esta forma cuando escriba por ejemplo: "Mxico, A" en la letra A le aparecern sugerencias Argentina, Afganistn... Para que quede completamente claro, lo mejor es probar el control y ver cmo funciona. A continuacin os muestro un ejemplo: Nuestro Archivo XML:

  • SENA REGIONAL CAUCA CENTRO DE TELEINFORMTICA Y PRODUCCIN INDUSTRIAL

    Ingeniero, Giovanny Angulo

    android:layout_height="fill_parent"

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

    android:gravity="center_vertical"

    >

    En muchos tutoriales utilizan un array de Strings para especificar las palabras clave que se mostrarn en las sugerencias, con la intencin de abreviar el tutorial, pero esa no es la forma correcta, si intencin es tener la aplicacin en varios idiomas. Por realizarlo correctamente y seguir las buenas practicas de programacin debemos declarar un array en nuestro archivo values/strings.xml de la siguiente forma:

    Controles de Avanzados

    Settings

    Espaa

    Mxico

    Ecuador

    Argentia

    Bolivia

  • SENA REGIONAL CAUCA CENTRO DE TELEINFORMTICA Y PRODUCCIN INDUSTRIAL

    Ingeniero, Giovanny Angulo

    Chile

    Colombia

    Costa Rica

    El Salvador

    Panam

    Paraguay

    Per

    Puerto Rico

    Repblica Dominicana

    Venezuela

    Uruguay

    Ahora veamos nuestro cdigo Java de MainActivity.java:

    import android.os.Bundle;

    import android.app.Activity;

    import android.view.Menu;

    import android.widget.ArrayAdapter;

    import android.widget.AutoCompleteTextView;

    import android.widget.EditText;

    import android.widget.MultiAutoCompleteTextView;

    public class MainActivity extends Activity {

    @Override

    protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);

    //Declaramos las sugerencias

    String[] paises =

    getResources().getStringArray(R.array.paises_array);

  • SENA REGIONAL CAUCA CENTRO DE TELEINFORMTICA Y PRODUCCIN INDUSTRIAL

    Ingeniero, Giovanny Angulo

    //Declaramos nuestros controles

    AutoCompleteTextView autoTextView = (AutoCompleteTextView)

    findViewById(R.id.autoCompleteTextView);

    MultiAutoCompleteTextView multiAutoTV =

    (MultiAutoCompleteTextView)findViewById(R.id.multiAutoCompleteTextView);

    //Declaramos un adaptador

    ArrayAdapter adapter;

    adapter = new ArrayAdapter(this,

    android.R.layout.simple_list_item_1, paises);

    //Indicamos que muestre sugerencias con el primer caracter que

    escriba el usuario

    autoTextView.setThreshold(1);

    multiAutoTV.setThreshold(1);

    //definimos cmo vaman a estar separados los paises, en este caso

    con una coma

    multiAutoTV.setTokenizer(new

    MultiAutoCompleteTextView.CommaTokenizer());

    autoTextView.setAdapter(adapter);

    multiAutoTV.setAdapter(adapter);

    }

    @Override

    public boolean onCreateOptionsMenu(Menu menu) {

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

    present.

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

    return true;

    }

  • SENA REGIONAL CAUCA CENTRO DE TELEINFORMTICA Y PRODUCCIN INDUSTRIAL

    Ingeniero, Giovanny Angulo

    }

    4. Tres Formas de Programar un Botn en Android

    Los botones (button) en Android, son esenciales en cualquier aplicacin, en realidad es un

    componente que tenemos disponible en la mayora de las plataformas.

    Tenemos varios tipos de botones disponibles que se adaptarn a la mayora de nuestras necesidades:

    Button: el control mas bsico.

    RadioButton: permite al usuario elegir entre varias opciones, aunque yo lo voy a

    encuadrar en controles de seleccin y lo veremos en ese apartado.

    ImageButton: En vez del tpico texto, el botn es una imagen.

    CheckBox: es un botn que puede tener 2 estados, "checked" o "unchecked".

    ToggleButton: similar al anterior puede tener dos estados, marcando con una luz si esta

    activo.

    Switch: el nuevo botn para versiones superiores a Android 4, que viene a sustituir a

    ToggleButton.

    Utilizando un botn bsico: MTODO 1 La forma de proporcionar un botn mediante XML, aunque el editor de Android Studio o Eclipse lo hace por nosotros es:

    Una vez definido el id del botn, ya podemos utilizarlo en nuestro cdigo java. Lo primero es declararlo e inicializarlo, a continuacin llamamos al mtodo setOnClickListner creando un nuevo objeto View.onClickListener, es ms fcil ver el cdigo que explicarlo:

    Button btAcept = (Button) findViewById(R.id.btAceptar);

  • SENA REGIONAL CAUCA CENTRO DE TELEINFORMTICA Y PRODUCCIN INDUSTRIAL

    Ingeniero, Giovanny Angulo

    btAcept.setOnClickListener(new View.OnClickListener() {

    public void onClick(View view) {

    Toast.makeText(getBaseContext(), "Has pulsado Aceptar!",

    Toast.LENGTH_SHORT).show();

    }

    }); MTODO 2 En vez de utilizar el mtodo setOnclickListener, utilizaremos un mtodo propio. que debe cumplir 3 requisitos: 1. Debe ser pblico. 2. Debe ser void. 3. Recibe un View. Veamos como quedara el XML del botn, presta atencin a como hemos definido la propiedad onClick. (Nota: no es necesario escribir XML, en el panel de propiedades podemos hacerlo)

    y ahora nuestro cdigo Java, insisto en los 3 requisitos que coment antes para que funcione correctamente, como podis observar tampoco lo he declarado:

    @Override

    protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);

    }

    public void clickBotonCancelar(View v) {

    Toast.makeText(getBaseContext(), "Has pulsado Cancelar!",

    Toast.LENGTH_SHORT).show();

    }

  • SENA REGIONAL CAUCA CENTRO DE TELEINFORMTICA Y PRODUCCIN INDUSTRIAL

    Ingeniero, Giovanny Angulo

    MTODO 3 Este mtodo es muy cmodo cuando nuestra activity utiliza varios botones. Como siempre veamos el cdigo, idntico que el primer mtodo y difiere del segundo en que no utilizamos la propiedad onClick en el XML.

    Esta forma es una variante del mtodo 1, la diferencia es que nuestra clase MainActivity implementa la clase OnClickListener.

    public class MainActivity extends Activity implements

    View.OnClickListener {

    @Override

    protected void onCreate(Bundle savedInstanceState) {

  • SENA REGIONAL CAUCA CENTRO DE TELEINFORMTICA Y PRODUCCIN INDUSTRIAL

    Ingeniero, Giovanny Angulo

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);

    Button btUno= (Button) findViewById(R.id.bt1);

    Button btDos = (Button) findViewById(R.id.bt2);

    Button btTres = (Button) findViewById(R.id.bt3);

    btUno.setOnClickListener(this);

    btDos.setOnClickListener(this);

    btTres.setOnClickListener(this);

    }

    @Override

    public void onClick(View v) {

    String s = new String();

    switch (v.getId()) {

    case R.id.bt1:

    s = "Boton 1";

    break;

    case R.id.bt2:

    s = "Boton 2";

    break;

    case R.id.bt3:

    s = "Boton 3";

    break;

    }

    Toast.makeText(getBaseContext(), "Has pulsado " + s,

    Toast.LENGTH_SHORT).show();

    }

    } A continuacin os dejo el cdigo fuente completo con todos los botones:

  • SENA REGIONAL CAUCA CENTRO DE TELEINFORMTICA Y PRODUCCIN INDUSTRIAL

    Ingeniero, Giovanny Angulo

    XML:

  • SENA REGIONAL CAUCA CENTRO DE TELEINFORMTICA Y PRODUCCIN INDUSTRIAL

    Ingeniero, Giovanny Angulo

    android:id="@+id/bt2"

    android:layout_gravity="center"/>

    JAVA:

    import android.app.Activity;

    import android.os.Bundle;

    import android.view.Menu;

    import android.view.View;

    import android.widget.Button;

    import android.widget.Toast;

    public class MainActivity extends Activity implements

    View.OnClickListener {

    @Override

    protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);

    Button btAcept = (Button) findViewById(R.id.btAceptar);

    btAcept.setOnClickListener(new View.OnClickListener() {

    public void onClick(View view) {

    Toast.makeText(getBaseContext(), "Has pulsado Aceptar!",

    Toast.LENGTH_SHORT).show();

    }

    });

  • SENA REGIONAL CAUCA CENTRO DE TELEINFORMTICA Y PRODUCCIN INDUSTRIAL

    Ingeniero, Giovanny Angulo

    Button btUno= (Button) findViewById(R.id.bt1);

    Button btDos = (Button) findViewById(R.id.bt2);

    Button btTres = (Button) findViewById(R.id.bt3);

    btUno.setOnClickListener(this);

    btDos.setOnClickListener(this);

    btTres.setOnClickListener(this);

    }

    public void clickBotonCancelar(View v) {

    Toast.makeText(getBaseContext(), "Has pulsado Cancelar!",

    Toast.LENGTH_SHORT).show();

    }

    @Override

    public void onClick(View v) {

    String s = new String();

    switch (v.getId()) {

    case R.id.bt1:

    s = "Boton 1";

    break;

    case R.id.bt2:

    s = "Boton 2";

    break;

    case R.id.bt3:

    s = "Boton 3";

    break;

    }

    Toast.makeText(getBaseContext(), "Has pulsado " + s,

    Toast.LENGTH_SHORT).show();

    }

    @Override

  • SENA REGIONAL CAUCA CENTRO DE TELEINFORMTICA Y PRODUCCIN INDUSTRIAL

    Ingeniero, Giovanny Angulo

    public boolean onCreateOptionsMenu(Menu menu) {

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

    present.

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

    return true;

    }

    }