Android: Toast con imagen

Blog >Lista Soluciones >  Toast + imagen


Hola desarrolladores, normalmente cuando mostramos un Toast, aparece una pequeña ventana durante unos segundos con un texto en el que mostramos el contenido que deseamos.
En este caso el toast varía de una forma más personalizada.
 
Toast personalizado : Texto + imagen


Bien, vamos a ello: En la carpeta res/layout he creado el contenedor contenidotoast.xml que lleva este código:

        
 

Analizando el código vemos que hay una imagen referenciada a ic_menu_info_details en la carpeta drawable,y el textview referenca a text_icon_msg, que es un valor en string.xml al que le he puesto el texto de contenido "Bienvenido a Android"
 .



Ahora bien, vamos a usar la clase java de la actividad principal, en esta, unicamente hay un boton, el cual al pulsarlo, aparece el Toast:

import android.os.Bundle;
import android.app.Activity;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends Activity {
 //DECLARO VARIABLES
 private Button b1;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);

      //Instancio boton
  b1=(Button) findViewById(R.id.b1);
  //Listener boton
  b1.setOnClickListener(new OnClickListener(){
   @Override
   public void onClick(View arg0) {
    // TODO Auto-generated method stub
    getToast();
   }
  });
 }
//FUNCION PARA MOSTRAR TOAST
public void getToast(){
    //Inicializo Toast
 //Creo una vista que contiene el layout contenidotoast.xml
 //incluyendolo en la vista de la actividad principal
 LayoutInflater inflater = getLayoutInflater();
 View layout = inflater.inflate(R.layout.contenidotoast,
   (ViewGroup) findViewById(R.layout.activity_main));
 //Configuro Toast
 Toast toast = new Toast(getApplicationContext());
 //gravedad
 toast.setGravity(Gravity.CLIP_HORIZONTAL, 0, 0);
 //tipo toast
 toast.setDuration(Toast.LENGTH_LONG);
 //mostrar toast
 toast.setView(layout);
 toast.show();
 }
}


Y bien, este es el resultado :






Espero que haya sido de ayuda a más de uno, thebestandroide!!



Podeis descargar el código fuente de thebestandroide con sólo compartir en facebook,twitter,linkedin o suscribirte a nuestro canal RSS más abajo. 



Compartir Compartir Compartir Compartir




Android: Modificar width o height de LinearLayout mediante Java

Blog > Lista Solucione> Tamaño LinearLayout

Modificar dimensiones de alto y ancho de un LinearLayout mediante código Java

Buenas programadores, muchas veces a la hora de configurar varias resoluciones, tenemos que adaptar los elementos conforme a si se usan tablets o dispositivos móviles de distintas pulgadas.

En este post, os traigo cómo modificar las dimensiones de un LinearLayout mediante código Java.
He estado  mirando en varios foros y demás,y hay varias técnicas.Desde crear recursos xml en varias carpetas para adaptarlo en función de las dimensiones de los smartphones y tablets o mediante código Java.

En el último caso, es decir mediante código Java sólo me ha funcionado una forma: el siguiente ejemplo, consta de una actividad en la que cuenta con un linearLayout que ocupa toda la pantalla, y dentro tengo otro LinearLayout en el que he puesto una imágen como background, con una altura he insertado 200dp, de tal forma que sería asi:


y este es el código XML de la parte no gráfica de la pantalla anterior :


    

        

        

    


Bien, a la hora de trabajar en varias resoluciones de pantalla, un tamaño como el de la imágen anterior, en un Nexus One de 3,7 pulgadas (480dp x800dp) quedaría bien con el efecto deseado, pero como digo, a la hora de usar una pantalla más grande, quedaría así(WVGA 5,1 pulgadas) quedaría así :


¿Qué diferencia verdad? Entonces para que sea algo que podamos manejar con facilidad desde código Java, os explico lo que haremos, medimos la pantalla del dispositivo en la que se ejecuta la aplicación, y en función de la medida, aplicamos un tamaño u otro por medio de fracciones, quedando ajustado a la medída deseada, da igual que sigas teniendo en height 200dp, al final ejecutando el siguiente código, se pondrá el layout con la medida proporcional deseada:

//MEDIMOS LA PANTALLA
Display display = getWindowManager().getDefaultDisplay();
int ancho = display.getWidth();
int  alto= display.getHeight();
//ASIGNAMOS MEDIANTE ID EL LAYOUT
layout1 =(LinearLayout)findViewById(R.id.milayoutestirableporcodigo);
//POR EJEMPLO LE VOY A PONER 1/3, PARA QUE EN CUALQUIER 
//DISPOSITIVO MIDA EL ALTO DE LA IMAGEN 
//1/3 DE LA PANTALLA
layout1.getLayoutParams().height=alto*1/3;
//ANCHO DE BANDA ARRIBA
layout1.getLayoutParams().width=ancho;
 
Así conseguiremos que en cualquier dispositivo de cualquier dimension, esa imagen ocupe 1/3 del alto de la pantalla, aunque ahora vienen los problemas de pixelación de la imagen, que más adelante veremos cómo podemos solucionarlo.

 Un saludo amigos! Espero que os haya ayudado a más de uno!

oOo mAkOnE oOo 



Podeis descargar el código fuente de thebestandroide con sólo compartir en facebook,twitter,linkedin o suscribirte a nuestro canal RSS más abajo. 



Compartir Compartir Compartir Compartir