Dialogo con SeekBar


En el siguiente ejemplo, vamos a crear un dialogo que se muestre sobre el layout de nuestra actividad y en el que mostraremos y gestionaremos una barra (SeekBar).

Para ello debemos crear un layout con un SeekBar, este layout le grabaremos en res/layout/:

<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/my_dialog_root_element"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="top|center"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/textView3"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:background="@color/blue"
        android:text="@string/titulo_barra"
        android:textStyle="bold" />
    <SeekBar
        android:id="@+id/umbral_seekBar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="2"
        android:max="255" />
</TableLayout>


Luego desde nuestra actividad


public class ACapturar extends Activity {  

@Override
    public void onCreate(Bundle savedInstanceState)
{
         ......
         abrir_dialogo();
        }

}


public void abrir_dialogo(){
    LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
   final View layout = inflater.inflate(R.layout.barra_ajuste, (ViewGroup) findViewById(R.id.my_dialog_root_element));
    
   AlertDialog.Builder builder = new AlertDialog.Builder(ACapturar.this).setView(layout);
   final AlertDialog alertDialog = builder.create();
   alertDialog.show();
   
   SeekBar sb = (SeekBar)layout.findViewById(R.id.umbral_seekBar);  

   sb.setProgress(valor_anterior); //Fijamos SeekBar al un valor anterior...

   sb.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
       public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser){
                       //Log.d("MENSAJE", "On progress seekbar");
        int valor = progress; //grabamos el nuevo valor

               //Hacer lo que queramos con con el nuevo valor

       }
public void onStartTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
public void onStopTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
   });

    }

¿Dudas?

1 comentario:

Unknown dijo...

Buenas, estaba leyendo para implementarlo en un SeekBar que tengo en mi aplicación, pero no se que es "barra_ajuste" podrías concretármelo? muchas gracias!