Añadir salto de línea en TextView

Para añadir un salto de línea en un textView por código hay que usar la etiqueta de html <br\>. Para ello ponemos:


mTextView.setText( "Línea 1" + Html.fromHtml("<br />") + "Línea 2");

Problema al añadir TableRow dinamicamente


A veces sucede que al intentar añadir un TableRow durante ejecución a una TableLayout no aparece nada en la pantalla. Esto me ha pasado hace poco, y tras comprobar (más de 10 veces...) que estaba añadiendo bien el TableRow, he descubierto buscando por google que es debido a que eclipse nos añade el import  import android.view.ViewGroup.LayoutParams en lugar de import android.widget.TableRow.LayoutParams. 

Así que tan solo hay que cambiarlos y listo!

Personalizar botones



1º Crear en drawable un xml con información del botón cuando es pulsado o no lo es.

<!-- my_button.xml-->
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" android:drawable="@drawable/button_pressed" />
    <item android:drawable="@drawable/button_default" />
</selector>


2º En este caso estamos cambiando el background de un botón cuando se presiona, asi que en la propiedad background de este botón debemos de poner el nombre del xml selector que creamos, en este caso "@drawable/my_button"

Si quieres cambiar por ejemplo también propiedades del texto, como el color, deberías crear otro xml con dicha información.

Aplicación se bloquea al volver a entrar después de presionar HOME_BUTTON

Si a ti también te ha pasado que se te bloquea la aplicación al volver a entrar después de presionar el HOME_BUTON es probable que se solucione añadiendo todas tus actividades al Manifest de tu aplicación.

<application....
      ....

      <activity android:name=".NombreActividad1" android:label="@string/app_name">
      </activity>


      <activity android:name=".NombreActividad2" android:label="@string/app_name">
      </activity>

....
</application>



Grabar Bitmap como imagen con formato jpg o png


En el siguiente ejemplo, se graba un Bitmap (data) como una imagen jpeg en una ruta concreta del dispositivo Android. Además haciendo uso del post anterior, grabamos la imagen con los parámetros de dia, mes...

String path = "/nombreCarpetaDondeQuremposGrabar";
FileOutputStream outStream = null;
Bitmap data = mi_funcion_que_devuelve_Bitmap(data, camera);
try {
File f = new File(Environment.getExternalStorageDirectory() + path);
        /* Miro si el directorio está creado, y si no lo está lo creo*/
if(!f.isDirectory()) {
String newFolder = path;
String extStorageDirectory = Environment.getExternalStorageDirectory().toString();
File myNewFolder = new File(extStorageDirectory + newFolder);
myNewFolder.mkdir();
Log.d("MENSAJE",path+" ha sido creado!");
}else{
                Log.d("MENSAJE",path+" estaba creado");
        }
Calendar c = Calendar.getInstance();
String date = Integer.toString(c.get(Calendar.MONTH))  + Integer.toString(c.get(Calendar.DAY_OF_MONTH)) + Integer.toString(c.get(Calendar.YEAR)) + Integer.toString(c.get(Calendar.HOUR_OF_DAY)) + Integer.toString(c.get(Calendar.MINUTE)) + Integer.toString(c.get(Calendar.SECOND));
outStream = new FileOutputStream(String.format("/sdcard"+path+"/prefijo_"+ date +".jpg", System.currentTimeMillis()));
data.compress(Bitmap.CompressFormat.JPEG, 90, outStream);
outStream.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
}

Obtener valores de calendario

A continuación se muestra en un sencillo ejemplo cómo obtener/grabar los datos de mes, día, año, hora, minutos y segundos en una variable de tipo String.

Calendar c = Calendar.getInstance();
String date = Integer.toString(c.get(Calendar.MONTH))  + Integer.toString(c.get(Calendar.DAY_OF_MONTH)) + Integer.toString(c.get(Calendar.YEAR)) + Integer.toString(c.get(Calendar.HOUR_OF_DAY)) + Integer.toString(c.get(Calendar.MINUTE)) + Integer.toString(c.get(Calendar.SECOND));

Crear una carpeta en un dispositivo android

A continuación se muestra un ejemplo de como crear una carpeta (folder) usando java en un dispositivo Android. Para ello tan solo debemos añadir las siguientes líneas de código, dónde se comprueba si la carpeta ya está creada, y si no lo está se crea



File f = new File(Environment.getExternalStorageDirectory() + "/cualquierCarpeta");
// Comprobamos si la carpeta está ya creada

// Si la carpeta no está creada, la creamos.

if(!f.isDirectory()) {
String newFolder = "/cualquierCarpeta"; //cualquierCarpeta es el nombre de la Carpeta que vamos a crear
String extStorageDirectory = Environment.getExternalStorageDirectory().toString();
File myNewFolder = new File(extStorageDirectory + newFolder);
myNewFolder.mkdir(); //creamos la carpeta
}else{
       Log.d(TAG,"La carpeta ya estaba creada");
}

Como crear un widget para nuestra aplicación


Los pasos para crear un widget son:
  1. Definir la Interfaz gráfica del widget (layout) mediante un archivo .xml en /res/layout
  2. Configuración XML del widget (AppWidgetProviderInfo) en /res/xml/
  3. Implementación de la funcionalidad del widget (AppWidgetProvider
  4. Declaración del widget en el Android Manifest de la aplicación
En el ejmplo vamos a crear un widget con un ImageButton, que cuando es pulsado pasa a una actividad concreta de nuestra aplicación.
Cerrar un dialogo en Android pasado un cierto tiempo.
En el siguiente ejemplo vamos a mostrar como se cerraría un dialogo en Android pasado 1 segundo desde que fue abierto. Para ello vamos a usar el ejemplo del post anterior, donde aprendimos a crear un diálogo con un SeekBar.
Por lo que no vamos a copiar el código de nuevo (ver post anterior)

public void abrir_dialogo(){
     LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    final View layout = inflater.inflate(R.layout.barra_ajuste, (ViewGroup) findViewById(R.id.my_dialog_root_element));
    

Dialogo con SeekBar


En el siguiente ejemplo, vamos a crear un dialogo que se muestre sobre el layout de nuestra actividad y en el que mostraremos y gestionaremos una barra (SeekBar).

Para ello debemos crear un layout con un SeekBar, este layout le grabaremos en res/layout/:

<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/my_dialog_root_element"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="top|center"
    android:orientation="vertical" >

SharedPreferences



Muchas aplicaciones que instalamos en nuestros teléfonos tienen las particularidad de que si es la primera vez que la ejecutamos nos da una serie de opciones, si ya la hemos ejecutado con anterioridad, nos ofrecerá otras opciones diferentes. Esto puede realizarse fácilmente con “shared preferences”.

Configurar botones físicos en Android

En este rápido tutorial vamos a aprender a interceptar los eventos de usar los botones físicos de nuestro dispositivo android. 

Para interceptar estos eventos y personalizarlos a nuestro antojo, haremos uso de la siguiente clase:
KeyEvent, la cual mantiene un registro de los posibles botones que pueden haber en un dispositivo Android. Estos son:

Pasar a otra actividad - Intent


Intent nos permite pasas de una actividad a otra. Para ello tan solo es necesario:

  • Añadir la siguiente librería:

        import android.content.Intent;

  • Crear un intent que indique el cambio a la nueva actividad y llamar a la función starActivity(...) 

    Intent i = new Intent(this,NombreDeLaActividadNueva.class);
    startActivity(i);

Convertir de entero a string en Android

Para convertir un String (cadena) a int (entero) hay que emplear el método estático de la clase Integer.parseInt

Ejemplo:
String miString = "5";
int miEntero = Integer.parseInt(miString);


Para convertir int(entero) a String usamos el método estático de la clase Integer.toString

Ejemplo:

int miEntero = 1;
String miString = Integer.toString(miEntero);

Modificar variables de entorno en Windows 7

1- Botón derecho sobre "Equipo" y seleccionamos "Propiedades"
2- Seleccionamos configuración avanzada del sistema
3- En la ventana que se abre, en la pestaña de "Opciones avanzadas" seleccionamos "Variables de entorno"

Instalar Eclipse con Android para Windows

La instalación de Eclipse con Android es bastante sencilla, tan solo tienes que seguir unos pocos pasos:

Lo primero que debes hacer es descargar el software que vamos a utilizar en la instalación:
1- Instalación software Java: descargar JDK y JRE de Java desde aquí (puede que tengas que desinstalar versiones de Java anteriores)
2- Instalar Eclipse Classic, bajarlo aquí
3- Instalar Android SDK de Windows, bajar aquí Android Studio descargar aquí

Una vez descargados todo el software necesario, lo siguiente es instalar siguiendo los siguientes pasos: