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 este post hablaremos sobre la biblioteca de Apache PDFBox el cual es una herramienta para java de código abierto que[...]
En este post implementaremos el código necesario para multiplicar matrices con el lenguaje Kotlin, pero para realizar es[...]
Para terminar el tutorial, debemos unir tanto la VISTA como el MODELO y para eso esta el CONTROLADOR. o.O El controlador[...]
En un post anterior, desarrollamos un swing para simular un efecto FLIP y recibí algunos mensajes pidiéndome un ejemplo[...]
En este post aprenderemos a usar los gráficos 2d que viene con JavaFX en nuestras aplicaciones java swing. Esto puede se[...]
Los archivos digitales (txt, docx, xlsx, odt, odp, pdf, etc) nos permiten almacenar información el cual en ocasiones, de[...]