Aprende Java Aprende Php Aprende C++ Aprende HTML 5 Aprende JavaScript Aprende JSON Aprende MySQL Aprende SQLServer Aprende Visual Basic 6 Aprende PostgreSQL Aprende SQLite Aprende Redis Aprende Kotlin Aprende XML Aprende Linux VSC Aprende Wordpress Aprende Laravel Aprende VueJS Aprende JQuery Aprende Bootstrap Aprende Netbeans Aprende Android
Sigueme en Facebook Sigueme en Twitter Sigueme en Instagram Sigueme en Youtube Sigueme en TikTok Sigueme en Whatsapp
Home / Android / Ejemplo de uso de ProgressDialog

Ejemplo de uso de ProgressDialog

Por jc mouse martes, diciembre 26, 2017

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:

  • Nombre: ventanadeprogreso (org.example.ventanadeprogreso)
  • Plantilla: Empty Activity
  • Activity Name: MainActivity
  • Layout Name: activity_main

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!!!

Tags

Artículos similares

Esteganografía y encriptación de imágenes en Linux

En un post anterior conocimos una herramienta Open Source con un conjunto de herramientas para el trabajo con imágenes e[...]

Convierte tus fotos al estilo Ghibli gratis y fácil: Guia paso a paso

Primero que nada Studio Ghibli es un estudio de animación japonés fundado en 1985 por Hayao Miyazaki, Isao Takahata y To[...]

Abrir enlace web desde JLabel con Java

El siguiente código te permite abrir enlaces web desde un JLabel, ademas aprovechando el soporte a etiquetas HTML del co[...]

HSQLDB: Gestor de bases de datos libre en java

HyperSQL DataBase (HSQLDB) es un moderno administrador de bases de datos relacionales, es portátil e implementado en jav[...]

Crear imagen dinamicamente y agregar a un objeto swing

Si bien se puede hacer uso de archivos de imagen (jpg, png, bmp, etc) en las aplicaciones java, también este te permite[...]

Filtros con JMF y una webcam [Proyecto]

En esta oportunidad dejo a consideracion un proyecto para la captura de video desde una webcam, utilizando filtros como[...]