Wednesday, September 12, 2012

Sliding Drawer en Android

Sliding Drawer o cajón deslizable (?)

Lo que hace el Sliding Drawer es esconder contenido de un usuario dejando sólo una lengüeta visible, así el usuario puede deslizar la lengüeta para ver el contenido.

Como bien dice en http://developer.android.com este "cajón" se puede utilizar de manera vertical u horizontal. El xml está compuesto por dos hijos, uno referente al la lengüeta y otro al contenido de éste.

La plantilla que http://developer.android.com utiliza un imageView para la lengüeta, yo utilicé en este caso un botón, de manera de no tener que lidiar con imagenes. Pero lo pueden cambiar a un imageView si desean. A su vez, cambié el tipo del contenido de GridView a un simple TextView para agregar texto.

Primero, necesitan uno (o dos) templates para el fondo de la lengüeta y del contenido del cajón. En este caso yo use una plantilla de un fondo azul el cual debe colocarse en la carpeta drawable en un archivo llamado blue.xml por ejemplo.

El contenido de éste archivo es el siguiente:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" >
        <shape>
            <solid
                android:color="#449def" />
            <stroke
                android:width="1dp"
                android:color="#2f6699" />
            <corners
                android:radius="3dp" />
            <padding
                android:left="10dp"
                android:top="10dp"
                android:right="10dp"
                android:bottom="10dp" />
        </shape>
    </item>
    <item>
        <shape>
            <gradient
                android:startColor="#449def"
                android:endColor="#2f6699"
                android:angle="270" />
            <stroke
                android:width="1dp"
                android:color="#2f6699" />
            <corners
                android:radius="4dp" />
            <padding
                android:left="10dp"
                android:top="10dp"
                android:right="10dp"
                android:bottom="10dp" />
        </shape>
    </item>
</selector>
La lengüeta es lo que tiene el texto "ayuda". Los otros botones que ven son del  proyecto en el que estoy trabajando, no tienen nada que ver con el sliding drawer

Luego el xml del sliding drawer lo deben colocar dentro de un relativeLayout (o un FrameLayout) (en el xml del layout donde quieren que se vea)

Así quedó mi sliding drawer:

 <SlidingDrawer
     android:id="@+id/drawer"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:handle="@+id/handle"
     android:content="@+id/content">
     <Button
         android:id="@id/handle"
         android:layout_width="88dip"
         android:layout_height="44dip"
         android:background="@drawable/blue"
         android:text="ayuda"
         android:textColor="#ffffff"/>

     <TextView
         android:id="@id/content"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:background="@drawable/blue"
         android:textColor="#ffffff"
         android:text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut condimentum commodo purus sit amet cursus. Pellentesque euismod nulla et mauris porttitor sit amet consectetur quam euismod. Proin augue ligula, commodo sit amet pellentesque at, bibendum in augue. Vestibulum a metus sit amet lacus porta molestie. Curabitur porta laoreet ipsum quis tincidunt. Nulla facilisi. Quisque dictum mollis ante id blandit. Nam in elit sit amet eros varius posuere id id dui. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Duis et nibh pretium nisl semper porta elementum sed justo. Sed et enim arcu. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis ac nunc eu est adipiscing condimentum id nec nisl. Proin massa erat, ultrices at ullamcorper in, consectetur nec tortor. Sed sed erat ante. Morbi eu nunc mauris." />
     </SlidingDrawer>


Bookmark and Share

Friday, September 7, 2012

Verificar que una URL es de una imagen en Java/Android

Si es necesario verificar que una URL es una enlace a una image, bastan 3 líneas de código para hacerlo:


URLConnection connection = new URL("http://foo.bar/w23afv").openConnection();
String contentType = connection.getHeaderField("Content-Type");
boolean image = contentType.startsWith("image/");


Lo que hace es ver si el encabezado del contenido de la página donde te lleva la url comienza con image/.

Solución sacada de stackoverflow

Bookmark and Share

Friday, August 24, 2012

Finalizar servidor en ubuntu

En ubuntu se puede correr un servidor para utilizar una página web en localhost, el servidor se inicia a través de la consola comunmente: rails server, para una aplicación de Rails por ejemplo. Pero qué pasa cuando cerraste el terminal y el servidor sigue andando?

Con el siguiente comando puedes ver los servidores que están andando y así obtener el PID para posteriormente cerrarlo.

lsof -i :3000

Al ejecutar ese comando en consola aparecerá una lista similar a la siguiente:


COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
ruby                3926 user      5u     IPv4    110440      0t0           TCP *:3000 (LISTEN)


Como ven el PID aquí es el 3926, y podrán terminalo ejecutando lo siguiente

kill -9 3926

Bookmark and Share

Tuesday, August 21, 2012

Eliminar nombre de aplicación en barra de estado en Android

Por defecto, las aplicaciones en android muestran una barra de estado con el nombre de la aplicación. Esto muchas veces se ve feo y se puede sacar de dos formas: De forma dinámica en una actividad y en el manifesto.

Aquí la segunda forma, más rapida y requiere menos código:


<activity android:name=".ActivityName"
    android:label="@string/app_name"
    android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen">
</activity>

Así se configura el estilo de la aplicación, se le saca la barra y se coloca en pantalla entera.


Bookmark and Share

Sunday, August 19, 2012

Patrón de fondo en aplicaciones Android

Buscando cómo colocar un patrón de fondo en una aplicación Android, me encontré con un excelente tutorial de Matt Swanson.

Aquí lo que aparecía en el tutorial:


  1. Tener un imagen que pueda ser utilizada de patrón. Ésta se puede obtener del sitio Subtle Patterns donde hay decenas de patrones que se pueden elegir.
  2. Colocar el archivo nombrepatronescogido.png en la carpeta drawable.
  3. Crear el fondo con el patrón: Para esto creen un archivo xml en la carpeta drawable, llámenlo patron_de_fondo.xml por ejemplo. Dentro de este archivo colocar el siguiente código:
  4. <?xml version="1.0" encoding="utf-8"?>
    <bitmap xmlns:android="http://schemas.android.com/apk/res/android"
        android:src="@drawable/patron_de_fondo"
        android:tileMode="repeat" />
  5. Agregar el fondo a alguna vista. Para ello deben agregar la linea android:background="@drawable/patron_de_fondo" a un layout, ejemplo:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/background_repeating"
    android:orientation="vertical" >
</LinearLayout>

Y listo, la aplicación ya tiene un lindo fondo.

Bookmark and Share

Friday, July 27, 2012

Java: Como codificar una URL en UTF-8

Existe una forma muy simple para codificar un String de URL en UTF-8:

 try{
   String encodedurl = URLEncoder.encode(url.toString(),"UTF-8"); 
   System.out.println(encodedurl);
  }catch(UnsupportedEncodingException e){
   System.err.println(e);
  }

Al método donde agreguen estas lineas deberán agregar

   throws UnsupportedEncodingException

Bookmark and Share

Thursday, June 14, 2012

Problema encontrando MySql2 luego de actualizar Ubuntu

Si tienen problema encontrando MySql2 al actualizar Ubuntu a 12.04, luego de correr rails console por ejemplo, intenten lo siguiente:

Desinstalen mysql2:
gem uninstall mysql2

Instalar de nuevo:
Bundle install

Así mysql2 empezará a utilizar la nueva librería de Ubuntu y el problema se habrá solucionado.

Bookmark and Share
Related Posts Plugin for WordPress, Blogger...