(+34) 673 566 782 - (+34) 960 653 052 formacion@imaginagroup.com

Configura una carga de datos actualizando la interfaz en Android

Android
Intermedio
30 minutos

El objetivo de éste tutorial es implementar una Actividad que podamos aprovechar al realizar una carga de datos donde el usuario tenga que esperar en nuestras aplicaciones. En el ejemplo no realizaremos una carga real, sólo crearemos una pequeña secuencia donde un TextView muestre una carga de 0% a 100% y una vezcompletada la “carga” abriremos otra actividad.

Ésta técnica podremos utilizarla a partir del Android 1.5 (CupCake).

En primer lugar crearemos un nuevo proyecto llamado CargaDatos. Debemos de introducir un nombre de paquete válido e indicar la versión mínima de Android que soporta nuestra aplicación.

El asistente nos ayuda a crear la primera Activity que llamaremos CargaActivity que tendrá un layoutactivity_carga.xml asociado. Ésta actividad será la encargada de mostrar un TextView con la cuenta de 0 a 100 de la carga. Todo ésto mediante una clase Asynctask.

En total implementaremos dos Activitys y dos ficheros layout xml. Cuando acabe la carga de CargaActivity abrirá MainActivity.

  • CargaActivity.java
  • MainActivity.java
  • activity_carga.xml
  • activity_main.xml

En primer lugar declararemos las actividades en el AndroidManifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.cargadatos" android:versioncode="1" android:versionname="1.0">



    <uses-sdk android:minsdkversion="8" android:targetsdkversion="15">



    <application android:icon="@drawable/logoimaginaformacion" android:label="@string/app_name" android:theme="@style/AppTheme">
        <activity android:name=".CargaActivity" android:label="@string/title_activity_carga">
            <intent-filter>
                <action android:name="android.intent.action.MAIN">
                <category android:name="android.intent.category.LAUNCHER">
            </category></action></intent-filter>
        </activity>



        <activity android:name=".MainActivity" android:label="@string/title_activity_main">
    </activity></application>



</uses-sdk></manifest>

Abriremos el fichero string.xml localizado dentro de res/values/string.xml y lo modificaremos.

<resources>
    <string name="app_name">CargaDatos</string>
    <string name="menu_settings">CargaDatos</string>
    <string name="title_activity_carga">CargaActivity</string>
    <string name="title_activity_main">MainActivity</string>
    <string name="saludo">MainActivity</string>
</resources>

Ahora definiremos los ficheros visuales. Podremos ver el logotipo de Imagina Group en el centro de la actividad y un TextView justo debajo de la imagen y un ProgressBar.

Descargaos la imagen y renombrarla como logoimaginaformacion.png y guardarla en la carpeta drawable-mdpi.

activity_carga.xml

package com.example.cargadatos;



import android.app.Activity;
import android.os.Bundle;



public class MainActivity extends Activity {



	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
	}
}

La actividad CargaDatos es más compleja por el uso del Asynctask.

CargaActivity.java

package com.example.cargadatos;



import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.os.AsyncTask;
import android.os.Bundle;
import android.widget.ProgressBar;
import android.widget.TextView;



public class CargaActivity extends Activity {



	TextView loadText;
	ProgressBar progressBar;



	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_carga);



		loadText = (TextView) findViewById(R.id.loadText);
		progressBar = (ProgressBar) findViewById(R.id.progressBar1);
		progressBar.setMax(100);
		progressBar.setBackgroundColor(Color.GRAY);
		progressBar.setProgress(0);



		AsyncTaskCargaDatos ATCargaDatos = new AsyncTaskCargaDatos(this);
		ATCargaDatos.execute();
	}



	//
	// ASYNKTASCK
	//



	public class AsyncTaskCargaDatos extends AsyncTask&amp;amp;lt;Void, Integer, Void&amp;amp;gt; {



		Context mContext;



		AsyncTaskCargaDatos(Context context) {
			mContext = context;
		}



		@Override
		protected Void doInBackground(Void... params) {



			publishProgress(0);



			for (int i = 0; i &amp;amp;lt; 100; i++) {
				try {
					Thread.sleep(50);
					publishProgress(i + 1);
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
			}
			return null;
		}



		@Override
		protected void onProgressUpdate(Integer... value) {
			loadText.setText(value[0] + &amp;quot; %&amp;quot;);



			progressBar.setProgress(value[0]);



		}



		@Override
		protected void onPostExecute(Void result) {
			mContext.startActivity(new Intent(mContext, MainActivity.class));
			finish();
		}



	}// fin asynctask
}

AsyncTask es una clase que permite ejecutar procesos en background mientras la actividad funciona normalmente. AsyncTask está preparada para actualizar las interfaces de las Activitys. Se compone de una serie de hilos que tienen acceso a los métodos y objetos de la Activity que lo invoca.

Cuando implementamos ésta clase podemos sobrescribir 4 métodos los cuales están comunicados:

onPreExecute –> este código se ejecutará antes de doInBackground. El valor devuelto lo recibirá doInBackground.

doInBackground –> aquí realizaremos el trabajo “pesado” de la carga. Podemos parsear un fichero xml, cargar en memória los gráficos de un juego, descargar de servidor la información necesaría, etc… El valor devuelto lo recibirá onPostExecute.

onProgressUpdate –> Proceso encargado de actualizar la interfaz de la actividad mientras doInBackGround sigue cargando. Él método se ejecutará cada vez que doInBackGround ejecute el método publishProgress(param);.

Una vez todo preparado lo podemos ejecutar y visualizar el incremento del ProgressBar según como se actualiza el TextView.

AsyncTask es una herramienta muy útil en multitud de situaciones que necesitan realizar una tarea rápida en background.

En Imagina Formación te ofrecemos formación en estas nuevas tecnologías. Si quieres estar a la última en cualquiera de las diferentes plataformas, y a fin de cuentas, tu objetivo es aprender no dudes en solicitar información sin compromiso. Contamos con las herramientas y los medios necesarios para impartir cualquier tipo de formación. Te lo ponemos fácil. Formación online, presencial o de empresa, elige la modalidad que mejor se adapte a tus necesidades.

¿Sabes cómo puedes realizar una formación sin coste para tu empresa?

¿Buscas cursos bonificados? ¿Conoces qué es la Fundación Tripartita? Si eres trabajador tus cursos están subvencionados. Imagina Formación es una entidad organizadora de la Fundación Estatal de modo que puedes gestionar la formación bonificada de los cursos con nosotros. Nos encargamos de todos los trámites para conseguir la bonificación sin ningún coste adicional. Cumplimos con todos los requisitos para que nuestros cursos sean 100% bonificables.

Échale un vistazo a nuestro catálogo de Cursos Destacados y amplia tus conocimientos en las últimas tecnologías de referencia del sector. Si tienes cualquier duda… ¡Contacta con nosotros!

Uso de cookies: Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies

ACEPTAR
Aviso de cookies