Android: Códigos de ejemplo

Desarrollador y diagramas

A continuación podréis encontrar una serie de códigos de ejemplo que me han ido haciendo falta en mis proyectos de desarrollo de aplicaciones móviles con Android. Espero que os sean de ayuda.

Para más información sobre el desarrollo Android:

Guía de referencia de desarrollo de aplicaciones móviles Android

 

Constantes

Podemos almacenar todas las constantes a utilizar en la aplicación dentro de una clase que luego utilicemos en el resto de clases.

public class Constants {
     public static final float VIEWPORT_WIDTH = 5.0f;
     public static final String REST_URL = "http://www.ejemplo.com/api";
}

 

Logs personalizados

Nos permite crear una clase propia que sea la que genere los logs de la aplicación. De esta manera, al pasarla a producción sólo tendremos que deshabilitar.

public class MyLog {
    // Cambiar a 'false' para deshabilitar el Log de la aplicación
    static final boolean DEBUG = true;

    public static void i(String tag, String string) {
        if (DEBUG) android.util.Log.i(tag, string);
    }

    public static void e(String tag, String string) {
        if (DEBUG) android.util.Log.e(tag, string);
    }

    public static void d(String tag, String string) {
        if (DEBUG) android.util.Log.d(tag, string);
    }

    public static void v(String tag, String string) {
        if (DEBUG) android.util.Log.v(tag, string);
    }

    public static void w(String tag, String string) {
        if (DEBUG) android.util.Log.w(tag, string);
    }
}

 

Back Button

Para sobreescribir el funcionamiento del botón "Vovler atrás" podemos utilizar el siguiente código.

 

Fuera del método onCreate()...

@Override
public void onBackPressed() {
   // Asignar la acción necesaria. En este caso terminar la actividad
   finish();
}

 

Up Button

Para habilitar el botón Up dentro del Toolbar de una actividad necesitaremos el siguiente código o sobreescribir el funcionamiento del mismo.

 

Dentro del método onCreate()...

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbarSobreNosotros);
if (toolbar != null) {
    setSupportActionBar(toolbar);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    getSupportActionBar().setDisplayShowHomeEnabled(true);
    getSupportActionBar().setTitle(getResources().getString(R.string.app_name));
    toolbar.setNavigationOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // Asignar la acción necesaria. En este caso "volver atrás"
            onBackPressed();
        }
    });
} else {
    Log.d("SobreNosotros", "Error al cargar toolbar");
}

 

Fuera del método onCreate()...

 

@Override
public boolean onNavigateUp() {
   // Asignar la acción necesaria. En este caso terminar la actividad
   return true;
}

 

Pero si queremos realizarlo en PreferencesActivity tendremos que sobreescribir el siguiente método.

@Override
public boolean onOptionsItemSelected(MenuItem item) {
  int id = item.getItemId();

  if (id == android.R.id.home) {
    startActivity(new Intent(this, MainActivity.class));
    return true;
  }

  return super.onOptionsItemSelected(item);
}

 

Crear elementos gráficos desde código

Podemos crear los elementos gráficos de la aplicación desde el código, sin necesidad de crearlos en los layouts XML. Tendremos que cargar el layout principal, que ese sí debe existir previamente y sobre él cargar los elementos.

 

setContentView(R.layout.activity_main);

// Hay que asignarle un ID al LinearLayout en XML, que por defecto no lo tiene
LinearLayout LinearMain = (LinearLayout) findViewById(R.id.LinearMain);

crearLayoutConImagen(LinearMain, R.drawable.facebook, "http://www.facebook.com");

 

void crearLayoutConImagen(LinearLayout ly, int res_img, String text){

   // Parámetros a asignar al layout
   LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
      LinearLayout.LayoutParams.WRAP_CONTENT,
      LinearLayout.LayoutParams.WRAP_CONTENT);

   // Crear layout contenedor
   LinearLayout contenedor = new LinearLayout(new ContextThemeWrapper(this, R.style.DarkText));
   contenedor.setLayoutParams(params);
   contenedor.setOrientation(LinearLayout.HORIZONTAL);

   // Crear imagen
   ImageView valueIV = new ImageView(new ContextThemeWrapper(this, R.style.DarkText));
   valueIV.setImageResource(res_img);

   // Crear texto
   TextView valueTV = new TextView(new ContextThemeWrapper(this, R.style.DarkText));
   valueTV.setText(text.toString());
   valueTV.setLayoutParams(params);

   // Añadir los elementos imagen y texto al layout contenedor
   contenedor.addView(valueIV);
   contenedor.addView(valueTV);

   // Añadir layout contenedor al layout principal creado en XML de la Actividad
   ly.addView(contenedor);
}

 

Tratar archivo con contenido JSON

Cómo descargar un fichero JSON de Internet y posteriomente tratarlo para leer su contenido.

try {
   // Hacer la conexión y leer el contenido línea a línea
   URL url = new URL("http://www.ticarte.com/rest/10");
   HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();

   InputStream in = new BufferedInputStream(urlConnection.getInputStream());
   BufferedReader reader = new BufferedReader(new InputStreamReader(in));

   String line;
   StringBuilder content = new StringBuilder();
   while ((line = reader.readLine()) != null) {
      content.append(line);
   }

   // Crear un objeto del contenido JSON completo
   JSONObject jsoncompleto = new JSONObject(content.toString());

   // Comprobar si existe un elemento
   if (jsoncompleto.has("acontecimiento")) {
      // Crear un objeto JSON a partir de dicho elemento
      JSONObject jsonacontecimiento = new JSONObject(jsoncompleto.getString("acontecimiento"));
      // Recuperar un elemento del objeto anterior
      Log.d("JSON", (jsonacontecimiento.has("nombre")) ? jsonacontecimiento.getString("nombre") : "No existe nombre");

      if (jsoncompleto.has("eventos")) { 
         // Crear un array JSON a partir de un elemento que sea array
         JSONArray jsoneventos = new JSONArray(jsoncompleto.getString("eventos"));

         // Recorrer el array JSON para recuperar sus elementos
         for (int n = 0; n < jsoneventos.length(); n++) {
            JSONObject jsonevento = jsoneventos.getJSONObject(n);
            Log.d("JSON", jsonevento.getString("nombreevento"));
      }
   } else {
      Log.d("JSON", "No existe acontecimiento");
   }
} catch (Exception e) {
   Log.d("JSON", e.toString());
}

 

AdMob: Solicitar anuncios de prueba

Cuando estamos probando la aplicación en desarrollo, es mejor no mostrar anuncios verdaderos para evitar hacer clicks erróneos en ellos y que Google nos pueda cancelar la cuenta. Así que solicitaremos a Google que nos muestra anuncios de prueba.

// Sustituir "ABCDEF012345" por el ID de vuestro dispositivo
// que ee obtiene del logcat en Android Studio
AdRequest adRequest = new AdRequest.Builder()
   .addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
   .addTestDevice("ABCDEF012345")
   .build();

 

Licencia Creative Commons

Este artículo publicado en TicArte pertenece a Rafa Morales y está protegido bajo una Licencia Creative Commons.

Ir arriba