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.