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!!!
En esta oportunidad dejo para estudio y critica de los programadores android un ejemplo sencillo de una aplicación que h[...]
Ya tengo varios post sobre conexión a base de datos en varios lenguajes y claro no podía faltar c#, el siguiente tutoria[...]
En un tutorial anterior se creo un WebServices [Java WebServices] utilizando java y Netbeans, en esta ocasión se da cont[...]
En este tutorial crearemos un interesante efecto de explosión al momento de abrir un JPanel, este efecto puede extenders[...]
Las estructuras de control de Shell son muy parecidos a otras lenguajes de programación. Las estructuras disponibles en[...]
En este post vemos un ejemplo de como convertir un archivo de imagen JPG en un archivo PDF utilizando para ellos la libr[...]