Un ProgressDialog muestra una ventana con un texto y una barra de progreso que indica el tiempo que tarda una tarea en realizarse para luego cerrarse automáticamente. También puede mostrarse una barra de progreso de forma circular.
Para este ejemplo usamos Android Studio, el tiempo estimado para su desarrollo es de 15 minutos.
El proyecto consiste en un botón que al ser presionado mostrara un ProgressDialog, realizara unas tareas en «N» tiempo para luego cerrarse automáticamente.
Partimos de un proyecto base de android con las siguientes características:
El Layout
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="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="org.example.ventanadeprogreso.MainActivity"> <Button android:id="@+id/button" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Mostrar barra de progreso" /> </RelativeLayout>
Código MainAcivity
package org.example.ventanadeprogreso; import android.app.ProgressDialog; import android.os.Handler; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; public class MainActivity extends AppCompatActivity { private ProgressDialog barProgressDialog; private Handler updateBarHandler; private Button button; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button = (Button) findViewById(R.id.button); updateBarHandler = new Handler(); button.setOnClickListener( new View.OnClickListener() { public void onClick(View view) { barraDeProgreso(view); } }); } /** * Barra de progreso * */ public void barraDeProgreso(View view){ barProgressDialog = new ProgressDialog(MainActivity.this); barProgressDialog.setTitle("Procesando"); barProgressDialog.setMessage("Por favor espere ..."); barProgressDialog.setProgressStyle(barProgressDialog.STYLE_HORIZONTAL); barProgressDialog.setProgress(0); barProgressDialog.setMax(10); barProgressDialog.show(); new Thread(new Runnable(){ @Override public void run(){ for(int i = 0; i<=barProgressDialog.getMax();i++){ //tarea a realizar trabajando(); //actualiza barra de progreso updateBarHandler.post(new Runnable() { public void run(){ barProgressDialog.incrementProgressBy(1); } }); } barProgressDialog.dismiss(); } }).start(); } /** * Emula una tarea que dura X tiempo * */ private void trabajando(){ try{ Thread.sleep((int) Math.floor(Math.random()*(900)+100)); }catch(Exception ex){ } } }
Al ejecutar el proyecto y presionar el botón tendremos lo siguiente:
enjoy!!!
1. En la ventana de comandos de matlab escribe «mbuild -setup«, sin comillas y presiona enter. >> mbuild -setup We[...]
Nueva versión de un viejo proyecto swing «JCMousePanel» que nos permitía agregar imágenes en los contenedores JPanel. En[...]
En esta oportunidad aprovechando el interés que tienen ahora los superheroes de Marvel, crearemos un formulario de logue[...]
En este tutorial construiremos una aplicación en JavaFX para leer datos de un servicio web Herramientas IDE Netbeans 8.x[...]
A continuación te muestro 4 herramientas online para programadores en lenguaje Java y otros lenguajes de programación co[...]
En este post veremos un ejemplo sencillo de encriptación/desencriptación simétrica que el API de Java nos permite realiz[...]