Diferencia entre revisiones de «Toast»

De MediaWiki
Ir a la navegación Ir a la búsqueda
(Página creada con «==Introdución== *Un '''Toast''' proporciona un simple feedback de algo que pasa na aplicación a través dunha pequena mensaxe popup. *Chámaselle así "Tostada" porque ap...»)
 
Línea 34: Línea 34:
  
 
==Caso práctico==
 
==Caso práctico==
−
*Comezamos creando o proxecto '''U2_15_Toast'''
+
 
−
*Collendo como base a primeira versión da aplicación dos planetas: '''U2_12_Spinner'''.
+
* Partimos que xa temos creado o proxecto inicial como [http://wiki.cifprodolfoucha.es/index.php?title=PDM_Creando_proxecto_base xa indicamos anteriormente].
 +
: Se non o temos creado antes, crea un paquete de nome '''UI''' como un subpaquete do teu paquete principal.
 +
: Dentro do paquete UI, crearemos un novo paquete de nome: '''Toasts'''.
 +
 
 +
 
 +
<br />
 +
* Dentro do paquete '''Toasts''' crear unha nova 'Empty Activity' de nome: '''UD02_01_Toast''' de tipo Launcher e sen compatibilidade.
 +
: Modifica o arquivo '''AndroidManifiest.xml''' e engade unha label á activity como [http://wiki.cifprodolfoucha.es/index.php?title=PDM_Creando_proxecto_base xa vimos na creación do proxecto base].
 +
 
 +
 +
 
 +
*Collendo como base a primeira versión da aplicación dos planetas: [http://wiki.cifprodolfoucha.es/index.php?title=Spinner#Caso_pr.C3.A1ctico U2_12_Spinner].
 
*Simplemente agora a nova aplicación ten unha entrada máis ao principio do Spinner '''Selecciona un planeta'''.
 
*Simplemente agora a nova aplicación ten unha entrada máis ao principio do Spinner '''Selecciona un planeta'''.
  
Línea 52: Línea 63:
  
 
*Engadimos un ítem ao principio:
 
*Engadimos un ítem ao principio:
−
<syntaxhighlight lang="xml" line enclose="div" highlight="4" >
+
<syntaxhighlight lang="xml" line enclose="div" highlight="15,16" >
 
<?xml version="1.0" encoding="utf-8"?>
 
<?xml version="1.0" encoding="utf-8"?>
 
<resources>
 
<resources>
−
    <string-array name="planetas">
+
 
 +
    <string-array name="planetas_UD02_01_spinner">
 +
        <item>Mercurio</item>
 +
        <item>Venus</item>
 +
        <item>Terra</item>
 +
        <item>Marte</item>
 +
        <item>Xúpiter</item>
 +
        <item>Saturno</item>
 +
        <item>Urano</item>
 +
        <item>Neptuno</item>
 +
    </string-array>
 +
 
 +
    <string-array name="planetas_UD02_01_toast">
 
         <item>Selecciona un planeta</item>
 
         <item>Selecciona un planeta</item>
 
         <item>Mercurio</item>
 
         <item>Mercurio</item>
Línea 70: Línea 93:
  
  
 +
<br />
 
===O XML do layout===
 
===O XML do layout===
−
*É igual ao da aplicación orixinal.
+
*É igual ao da aplicación orixinal, cambiando a fonte de datos do spinner e actualizando os id´s dos controis.
  
−
<syntaxhighlight lang="xml" line enclose="div" highlight="" >
+
<syntaxhighlight lang="xml" line enclose="div" highlight="19" >
−
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+
<?xml version="1.0" encoding="utf-8"?>
 +
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
 +
    xmlns:app="http://schemas.android.com/apk/res-auto"
 
     xmlns:tools="http://schemas.android.com/tools"
 
     xmlns:tools="http://schemas.android.com/tools"
 
     android:layout_width="match_parent"
 
     android:layout_width="match_parent"
 
     android:layout_height="match_parent"
 
     android:layout_height="match_parent"
−
     android:orientation="vertical" >
+
     tools:context=".UI.Toasts.UD02_01_Toast">
  
−
     <Spinner
+
     <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
−
         android:id="@+id/spin_planetas"
+
         xmlns:tools="http://schemas.android.com/tools"
−
         android:layout_width="wrap_content"
+
         android:layout_width="match_parent"
−
         android:layout_height="wrap_content"
+
         android:layout_height="match_parent"
−
         android:entries="@array/planetas" />
+
         android:orientation="vertical" >
  
−
    <Button
+
        <Spinner
−
        android:id="@+id/btn_seleccion"
+
            android:id="@+id/spnPlanetas_UD02_01_Toast"
−
        android:layout_width="wrap_content"
+
            android:layout_width="wrap_content"
−
        android:layout_height="wrap_content"
+
            android:layout_height="wrap_content"
−
        android:onClick="onButtonClick"
+
            android:entries="@array/planetas_UD02_01_toast" />
−
        android:text="Preme cando selecciones" />
 
  
−
    <TextView
+
        <Button
−
        android:id="@+id/lbl_resultado"
+
            android:id="@+id/btnSeleccion_UD02_01_Toast"
−
        android:layout_width="wrap_content"
+
            android:layout_width="wrap_content"
−
        android:layout_height="wrap_content"
+
            android:layout_height="wrap_content"
−
        android:text="Selecciona un planeta" />
+
            android:onClick="onButtonClick"
 +
            android:text="Preme cando selecciones" />
  
−
</LinearLayout>
+
        <TextView
 +
            android:id="@+id/tvResultado_UD02_01_Toast"
 +
            android:layout_width="wrap_content"
 +
            android:layout_height="wrap_content"
 +
            android:text="Selecciona un planeta" />
 +
 
 +
    </LinearLayout>
 +
</android.support.constraint.ConstraintLayout>
 
</syntaxhighlight>
 
</syntaxhighlight>
  
  
  
−
 
+
<br />
 
===Código Java===
 
===Código Java===
  
 
*Ao método da aplicación orixinal engadímoslle un control: se esta seleccionada ou non a posición 0 do Spinner.
 
*Ao método da aplicación orixinal engadímoslle un control: se esta seleccionada ou non a posición 0 do Spinner.
−
<syntaxhighlight lang="java" line enclose="div" highlight="30-31" >
+
<syntaxhighlight lang="java" line enclose="div" highlight="18-20" >
−
package com.example.u2_15_toast;
+
package es.cursoandroid.cifprodolfoucha.aprendiendo.UI.Toasts;
  
 
import android.app.Activity;
 
import android.app.Activity;
 
import android.os.Bundle;
 
import android.os.Bundle;
−
import android.view.Menu;
 
 
import android.view.View;
 
import android.view.View;
 
import android.widget.Spinner;
 
import android.widget.Spinner;
Línea 119: Línea 151:
 
import android.widget.Toast;
 
import android.widget.Toast;
  
−
public class U2_15_Toast extends Activity {
+
import es.cursoandroid.cifprodolfoucha.aprendiendo.R;
  
−
@Override
+
public class UD02_01_Toast extends Activity {
−
protected void onCreate(Bundle savedInstanceState) {
 
−
super.onCreate(savedInstanceState);
 
−
setContentView(R.layout.activity_u2_15__toast);
 
−
}
 
  
−
@Override
+
    public void onButtonClick(View v) {
−
public boolean onCreateOptionsMenu(Menu menu) {
+
        Spinner spinPlanetas = (Spinner) findViewById(R.id.spnPlanetas_UD02_01_Toast);
−
// Inflate the menu; this adds items to the action bar if it is present.
+
        TextView lblResultado = (TextView) findViewById(R.id.tvResultado_UD02_01_Toast);
−
getMenuInflater().inflate(R.menu.u2_15__toast, menu);
 
−
return true;
 
−
}
 
  
−
public void onButtonClick(View v) {
+
        if (spinPlanetas.getSelectedItemId() == 0) {
−
Spinner spinPlanetas = (Spinner) findViewById(R.id.spin_planetas);
+
            Toast.makeText(this, "Por favor selecciona un planeta",Toast.LENGTH_LONG).show();
−
TextView lblResultado = (TextView) findViewById(R.id.lbl_resultado);
+
            lblResultado.setText("");
 +
        } else
  
−
if (spinPlanetas.getSelectedItemId() == 0) {
+
            lblResultado.setText("Seleccionaches "
−
Toast.makeText(this, "Por favor selecciona un planeta",Toast.LENGTH_LONG).show();
+
                    + spinPlanetas.getSelectedItem()
−
lblResultado.setText("");
+
                    + "\nque está na posición "
−
} else
+
                    + spinPlanetas.getSelectedItemId());
 +
    }
  
−
lblResultado.setText("Seleccionaches "
 
−
+ spinPlanetas.getSelectedItem()
 
−
+ "\nque está na posición "
 
−
+ spinPlanetas.getSelectedItemId());
 
−
}
 
  
 +
    @Override
 +
    protected void onCreate(Bundle savedInstanceState) {
 +
        super.onCreate(savedInstanceState);
 +
        setContentView(R.layout.activity_ud02_01__toast);
 +
    }
 
}
 
}
 +
 
</syntaxhighlight>
 
</syntaxhighlight>
−
*'''Liña 30''': Comprobamos se a posición seleccionada no Spinner é a 0 de ser así ...
+
*'''Liña 18''': Comprobamos se a posición seleccionada no Spinner é a 0 de ser así ...
−
*'''Liña 31''': realizamos un Toast.
+
*'''Liña 19''': realizamos un Toast.
−
*'''Liña 32''': Poñemos a etiqueta a baleiro.
+
*'''Liña 20''': Poñemos a etiqueta a baleiro.
 +
 
 +
 
  
  
  
 
<br> -- [[Usuario:angelfg|Ángel D. Fernández González]] e [[Usuario:Carrion|Carlos Carrión Álvarez]] -- (2015).
 
<br> -- [[Usuario:angelfg|Ángel D. Fernández González]] e [[Usuario:Carrion|Carlos Carrión Álvarez]] -- (2015).

Revisión del 12:00 12 oct 2018

Introdución

  • Un Toast proporciona un simple feedback de algo que pasa na aplicación a través dunha pequena mensaxe popup.
  • Chámaselle así "Tostada" porque aparece na pantalla do mesmo xeito que as tostadas saltan na torradora cando están feitas.

00 toast.png

  • So usa o espazo que precise a mensaxe e a pantalla actual permanece visible.
  • Desaparecen automaticamente pasado un pequeno espazo de tempo.


  • Para usar o Toast:
1 Context context = getApplicationContext();
2 CharSequence text = "Hello toast!";
3 int duration = Toast.LENGTH_SHORT;
4 
5 Toast toast = Toast.makeText(context, text, duration);
6 toast.show();
  • Context: é un interface que permite acceder aos recursos da nosa aplicación
  • duration:
    • LENGTH_SHORT: constante que equivale a 2 segundos
    • LENGTH_LONG: constante que equivale a 3,5 segundos


  • As liñas 5 e 6 anteriores poden ser substituídas pola seguinte:
1 Toast.makeText(context, text, duration).show();


Caso práctico

Se non o temos creado antes, crea un paquete de nome UI como un subpaquete do teu paquete principal.
Dentro do paquete UI, crearemos un novo paquete de nome: Toasts.



  • Dentro do paquete Toasts crear unha nova 'Empty Activity' de nome: UD02_01_Toast de tipo Launcher e sen compatibilidade.
Modifica o arquivo AndroidManifiest.xml e engade unha label á activity como xa vimos na creación do proxecto base.


  • Collendo como base a primeira versión da aplicación dos planetas: U2_12_Spinner.
  • Simplemente agora a nova aplicación ten unha entrada máis ao principio do Spinner Selecciona un planeta.



Arquivo de recursos: array_planetas.xml

  • Copiamos o ficheiro array_planetas.xml ubicado en /res/values/ dunha aplicación á outra.
  • Engadimos un ítem ao principio:
 1 <?xml version="1.0" encoding="utf-8"?>
 2 <resources>
 3 
 4     <string-array name="planetas_UD02_01_spinner">
 5         <item>Mercurio</item>
 6         <item>Venus</item>
 7         <item>Terra</item>
 8         <item>Marte</item>
 9         <item>Xúpiter</item>
10         <item>Saturno</item>
11         <item>Urano</item>
12         <item>Neptuno</item>
13     </string-array>
14 
15     <string-array name="planetas_UD02_01_toast">
16         <item>Selecciona un planeta</item>
17         <item>Mercurio</item>
18         <item>Venus</item>
19         <item>Terra</item>
20         <item>Marte</item>
21         <item>Xúpiter</item>
22         <item>Saturno</item>
23         <item>Urano</item>
24         <item>Neptuno</item>
25     </string-array>
26 </resources>



O XML do layout

  • É igual ao da aplicación orixinal, cambiando a fonte de datos do spinner e actualizando os id´s dos controis.
 1 <?xml version="1.0" encoding="utf-8"?>
 2 <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     xmlns:app="http://schemas.android.com/apk/res-auto"
 4     xmlns:tools="http://schemas.android.com/tools"
 5     android:layout_width="match_parent"
 6     android:layout_height="match_parent"
 7     tools:context=".UI.Toasts.UD02_01_Toast">
 8 
 9     <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
10         xmlns:tools="http://schemas.android.com/tools"
11         android:layout_width="match_parent"
12         android:layout_height="match_parent"
13         android:orientation="vertical" >
14 
15         <Spinner
16             android:id="@+id/spnPlanetas_UD02_01_Toast"
17             android:layout_width="wrap_content"
18             android:layout_height="wrap_content"
19             android:entries="@array/planetas_UD02_01_toast" />
20 
21         <Button
22             android:id="@+id/btnSeleccion_UD02_01_Toast"
23             android:layout_width="wrap_content"
24             android:layout_height="wrap_content"
25             android:onClick="onButtonClick"
26             android:text="Preme cando selecciones" />
27 
28         <TextView
29             android:id="@+id/tvResultado_UD02_01_Toast"
30             android:layout_width="wrap_content"
31             android:layout_height="wrap_content"
32             android:text="Selecciona un planeta" />
33 
34     </LinearLayout>
35 </android.support.constraint.ConstraintLayout>



Código Java

  • Ao método da aplicación orixinal engadímoslle un control: se esta seleccionada ou non a posición 0 do Spinner.
 1 package es.cursoandroid.cifprodolfoucha.aprendiendo.UI.Toasts;
 2 
 3 import android.app.Activity;
 4 import android.os.Bundle;
 5 import android.view.View;
 6 import android.widget.Spinner;
 7 import android.widget.TextView;
 8 import android.widget.Toast;
 9 
10 import es.cursoandroid.cifprodolfoucha.aprendiendo.R;
11 
12 public class UD02_01_Toast extends Activity {
13 
14     public void onButtonClick(View v) {
15         Spinner spinPlanetas = (Spinner) findViewById(R.id.spnPlanetas_UD02_01_Toast);
16         TextView lblResultado = (TextView) findViewById(R.id.tvResultado_UD02_01_Toast);
17 
18         if (spinPlanetas.getSelectedItemId() == 0) {
19             Toast.makeText(this, "Por favor selecciona un planeta",Toast.LENGTH_LONG).show();
20             lblResultado.setText("");
21         } else
22 
23             lblResultado.setText("Seleccionaches "
24                     + spinPlanetas.getSelectedItem()
25                     + "\nque está na posición "
26                     + spinPlanetas.getSelectedItemId());
27     }
28 
29 
30     @Override
31     protected void onCreate(Bundle savedInstanceState) {
32         super.onCreate(savedInstanceState);
33         setContentView(R.layout.activity_ud02_01__toast);
34     }
35 }
  • Liña 18: Comprobamos se a posición seleccionada no Spinner é a 0 de ser así ...
  • Liña 19: realizamos un Toast.
  • Liña 20: Poñemos a etiqueta a baleiro.




-- Ángel D. Fernández González e Carlos Carrión Álvarez -- (2015).