Barra de progreso de descarga de Android
Última actualización: 20 de marzo de 2013
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 :
Código fuente
[purchase_link id=”7882″ text=”Comprar para descargar el código fuente” style=”button” color=”green”]