Barra de progreso de descarga de Android

Barra de progreso de descarga de Android

En este tutorial, aprenderá cómo implementar una barra de progreso de descarga en su aplicación de Android. Una barra de progreso muestra una barra al usuario que representa cuánto ha progresado la operación. Crearemos un botón y, al hacer clic en el botón, descargaremos un archivo de imagen alojado en nuestro servidor y luego lo almacenaremos en el almacenamiento interno del dispositivo. El proceso de descarga mostrará un cuadro de diálogo de progreso con una barra que indica el porcentaje del archivo de imagen que se está descargando. Vamos a empezar…

Cree un nuevo proyecto en Eclipse  File  >  New  >  Android Application Project. Complete los detalles y nombre su proyecto  ProgressBarTutorial .

Nombre de la aplicación:  ProgressBarTutorial

Nombre del proyecto:  ProgressBarTutorial

Nombre del paquete:  com.androidbegin.progressbartutorial

Abra su  MainActivity .java  y pegue el siguiente código.

Actividad principal .java

paquete com.androidbegin.progressbartutorial;

importar java.io.BufferedInputStream;
importar java.io.FileOutputStream;
importar java.io.InputStream;
importar java.io.OutputStream;
importar java.net.URL;
importar java.net.URLConnection;

importar android.os.AsyncTask;
importar android.os.Bundle;
importar android.os.Environment;
importar android.app.Actividad;
importar android.app.ProgressDialog;
importar android.util.Log;
importar android.view.View;
importar android.view.View.OnClickListener;
importar android.widget.Button;

clase pública MainActivity extiende Actividad {
	// Declarar variables
	ProgressDialog mProgressDialog;
	botón botón;

	// Insertar URL de imagen
	Cadena URL = "https://www.androidbegin.com/tutorial/testimage.png";

	@Anular
	Vacío protegido onCreate (Paquete de estado de instancia guardado) {
		super.onCreate(estadoDeInstanciaGuardado);
		// Obtener la vista de activity_main.xml
		setContentView(R.diseño.actividad_principal);

		// Localice un botón en su diseño activity_main.xml
		boton = (Boton) findViewById(R.id.MyButton);

		// Capturar clics en el botón
		button.setOnClickListener(nuevo OnClickListener() {

			public void onClick (Ver arg0) {
				// Ejecutar DownloadFile AsyncTask
				nuevo DescargarArchivo().ejecutar(URL);
			}
		});

	}

	// Descargar archivo AsyncTask
	clase privada DownloadFile extiende AsyncTask<String, Integer, String> {

		@Anular
		vacío protegido onPreExecute() {
			super.onPreExecute();
			// Crear diálogo de progreso
			mProgressDialog = nuevo ProgressDialog(MainActivity.this);
			// Establezca su título de diálogo de progreso
			mProgressDialog.setTitle("Tutorial de la barra de progreso");
			// Establezca su mensaje de diálogo de progreso
			mProgressDialog.setMessage("Descargando, ¡Espere!");
			mProgressDialog.setIndeterminate(falso);
			mProgressDialog.setMax(100);
			mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
			// Mostrar diálogo de progreso
			mProgressDialog.show();
		}

		@Anular
		Cadena protegida doInBackground(String... Url) {
			intentar {
				URL url = nueva URL (URL [0]);
				URLConnection conexión = url.openConnection();
				conexión.conectar();

				// Detectar la longitud del archivo
				int fileLength = conexión.getContentLength();

				// Localiza la ubicación de almacenamiento
				Cadena de ruta de archivo = Environment.getExternalStorageDirectory()
						.getPath();

				// Descargar el archivo
				InputStream input = new BufferedInputStream(url.openStream());

				// Guarda el archivo descargado
				Salida de OutputStream = nuevo FileOutputStream (ruta de archivo + "/"
						+ "imagen de prueba.jpg");

				byte datos[] = nuevo byte[1024];
				total largo = 0;
				conteo int;
				while ((recuento = entrada.leer(datos)) != -1) {
					total += cuenta;
					// Publicar el progreso
					publicarProgreso((int) (total * 100 / longitud del archivo));
					salida.escribir(datos, 0, cuenta);
				}

				// Conexión cercana
				salida.flush();
				salida.cerrar();
				entrada.cerrar();
			} captura (Excepción e) {
				// Registro de errores
				Log.e("Error", e.getMessage());
				e.printStackTrace();
			}
			devolver nulo;
		}

		@Anular
		vacío protegido onProgressUpdate(Integer... progreso) {
			super.onProgressUpdate(progreso);
			// Actualizar el diálogo de progreso
			mProgressDialog.setProgress(progreso[0]);
			// Descartar el diálogo de progreso
			//mProgressDialog.dismiss();
		}
	}
}

Hemos creado un botón y, al hacer clic en el botón, se iniciará una AsyncTask y se descargará una imagen de una URL. La imagen descargada se almacenará en el almacenamiento interno.

En este tutorial, alojamos nuestro archivo de imagen en nuestro servidor. https://www.androidbegin.com/tutorial/testimage.png

A continuación, cree un botón en su diseño gráfico MainActivity. Vaya a  res  >  diseño  > Haga clic con el botón derecho en el  diseño  >  Nuevo  >  Archivo XML de Android

Nombre su nuevo archivo XML  activity_main.xml  y pegue los siguientes códigos.

actividad_principal .xml

<RelativeLayout xmlns_android="http://schemas.android.com/apk/res/android"
    xmlns_herramientas="http://esquemas.android.com/herramientas"
    android_layout_width="match_parent"
    android_layout_height="match_parent" >

    <Botón
        android_id="@+id/MiBotón"
        android_layout_width="wrap_content"
        android_layout_height="wrap_content"
        android_layout_centerInParent="verdadero"
        android_text="@cadena/botón" />

</RelativeLayout>

A continuación, cambie el nombre de la aplicación y otros textos. Abra su  strings.xml  en su carpeta  res > valores  y pegue el siguiente código.
cadenas.xml

<recursos>

    <string name="app_name">Tutorial de la barra de progreso</string>
    <string name="menu_settings">Configuración</string>
    <string name="button">Descargar imagen</string>

</recursos>

En su  AndroidManifest.xml , debemos declarar un permiso para permitir que la aplicación escriba un almacenamiento externo y se conecte a Internet. Abra su  AndroidManifest.xml  y pegue el siguiente código.

Manifiesto de Android. xml

<manifiesto xmlns_android="http://schemas.android.com/apk/res/android"
    paquete="com.androidbegin.progressbartutorial"
    android_versionCode="1"
    android_versionName="1.0" >

    <usos-sdk
        android_minSdkVersion="8"
        android_targetSdkVersion="15" />

    <usos-permiso android_name="android.permiso.INTERNET" >
    </usos-permiso>
    <usos-permiso android_name="android.permission.WRITE_EXTERNAL_STORAGE" >
    </usos-permiso>

    <aplicación
        android_icono="@dibujable/ic_launcher"
        android_etiqueta="@cadena/nombre_aplicación"
        android_tema="@estilo/AppTheme" >
        <actividad android_name=".MainActivity" >
            <intent-filter>
                <acción android_name="android.intent.action.MAIN" />

                <categoría android_name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </actividad>
    </aplicación>

</manifiesto>

Producción :

Capturas de pantalla del tutorial ProgressBar

Código fuente 

[purchase_link id=”7882″ text=”Comprar para descargar el código fuente” style=”button” color=”green”]