jueves, 28 de marzo de 2013

Manejadores de Eventos

Android captura los distintos eventos de usuario de forma homogénea y se los pasa a la clase encargada de recogerlos para ello se utiliza un objeto de tipo View y dispone de dos técnicas para recoger los eventos:
  • Escuchadores de eventos (Event Listener) : es una interfaz de la clase View que contiene un método callback que ha de ser registrado,este método será llamado por Android cuando se produzca la acción correspondiente. Para registrar un escuchador disponemos de dos formas:

      - Button boton = (Button)findViewById(R.id.boton); 
      boton.setOnClickListener( new OnClickListener() {
      public void onClick(View v) {
      // Acciones a realizar
      }
      });

      - La segunda alternativa consiste en implementar la interfaz OnClickListener como parte de tu clase y recoger los eventos en el método onClick(). public class Ejemplo extends Activity implements OnClickListener{ protected void onCreate(Bundle savedValues) { Button boton = (Button)findViewById(R.id.boton); boton.setOnClickListener(this); } public void onClick(View v) { // Acciones a realizar } }
Diferentes escuchadores de eventos:
    • onClick():Método de la interfaz View.OnClickListener. Se llama cuando el usuario selecciona un elemento. Se puede utilizar cualquier medio como la pantalla táctil, las teclas de navegación o eltrackball.
    • onLongClick():Método de la interfaz View.OnLongClickListener. Se llama cuando el usuario selecciona un elemento durante más de un segundo.
    • onFocusChange():Método de la interfaz View.OnFocusChangeListener. Se llama cuando el usuario navega dentro o fuera de un elemento.
    • onKey():Método de la interfaz View.OnKeyListener. Se llama cuando se pulsa o se suelta una tecla del dispositivo.
    • onTouch():Método de la interfaz View.OnTouchListener. Se llama cuando se pulsa o se suelta o se desplaza en la pantalla táctil.
    • onCreateContextMenu():Método de la interfaz View.OnCreateContextMenuListener. Se llama cuando se crea un menú de contexto.
  • Manejadores de eventos (Event Handler):Si estás creando un descendiente de la clase View, podrás utilizar varios métodos (callback) directamente usados como manejadores de eventos por defecto (Event Handlers). En esta lista se incluye:
    • onKeyDown(int keyCode, KeyEvent e) Llamado cuando una tecla es pulsada.
    • onKeyUp(int keyCode, KeyEvent e) Cuando una tecla deja de ser pulsada.
    • onTrackballEvent(MotionEvent me) Llamado cuando se mueve el trackball.
    • onTouchEvent(MotionEvent me) Cuando se pulsa en la pantalla táctil.
    • onFocusChanged(boolean obtengoFoco, int direccion, Rect prevRectanguloFoco) Llamado cuando cambia el foco.
    Es la forma más sencilla, dado que no hace falta usar una interfaz, ni registrar el método callback. Como en nuestro ejemplo estamos creando JuegoView, que es un descendiente de View, podremos utilizar directamente manejadores de evento.

sábado, 2 de marzo de 2013

APIs gráficas

Para trabajar en  2D se utilizan:
  • Canvas: representa una superficie donde dibujar.
  • Paint: define color,estilo,grosor del trazado de un gráfico vectorial.
  • Path: permite definir un trazado a partir de segmentos de rectas y curvas.
  • Drawable: abstracción que representa algo que puede ser dibujado.
Para trabajar en 3D se utilizan:
  • OpenGL
  • Renderscript.

sábado, 23 de febrero de 2013

Estilos y temas

Vamos a ver ahora como podemos darle estilos a nuestras aplicaciones Android.
Tenemos la posibilidad de darle estilos a algo concreto como un botón ,textos etc... o a toda una actividad mediante la creación de temas.

En primer lugar vamos a ver como creamos estilos.
Por ejemplo si queremos dar estilo a un botón lo podemos hacer añadiendo a la etiqueta Button las siguientes lineas:

android:layout_width="fill_parent"
    android:layout_height="wrap_content"

    android:textColor="#00FF00"
    android:typeface="monospace"
    android:text="Mi estilo" 

Si tenemos varios botones tenemos la posibilidad de crear un estilo en el archivo style.xml y añadirlo al botón style="@style/MiEstilo.Botones" y no tener que estar repitiendo el código anterior en todos los botones que tengamos.Para ello en el archivo style.xml añadimos las siguientes lineas:



De esta manera creamos el estilo, tenemos que tener en cuenta que tiene que heredar de un estilo ya existente como vemos en parent y con las siguientes lineas podemos modificar las propiedades del estilo que heredamos.
También tenemos la opción de crear un estilo que herede de nuestro estilo ya creado,para esto no hay que utilizar la etiqueta parent simplemente poniendo en el name el nombre del estilo y el nuevo nombre como vemos en la imagen de abajo:


Ahora vamos a ver los temas, debemos saber que los temas son estilos pero que se van a utilizar en toda una actividad:

Como vemos en la imagen, se crea igual que un estilo pero en vez de heredar de otro estilo hereda de un tema.En el AndroidManifest.xml a la actividad que queramos que utilice estos estilo le añadimos  android:theme="@style/miTema".

miércoles, 20 de febrero de 2013

Intenciones

Las intenciones se utiliza para que las actividades se ejecuten.Existen dos tipos de intenciones:

  1. Intenciones explícitas:se indica exactamente el componente a lanzar. Su utilización típica es la de ir ejecutando los diferentes componentes internos de una aplicación.
  2. Intenciones implícitas:pueden solicitar tareas abstractas, como “quiero tomar una foto” o “quiero enviar un mensaje”. Además las intenciones se resuelven en tiempo de ejecución, de forma que el sistema mirará cuantas aplicaciones han registrado la posibilidad de ejecutar ese tipo de actividad. Si encuentra varias el sistema puede preguntar al usuario la actividad que prefiere utilizar.
Hay varias formas de utilizar las intenciones :

  • Con este código se lanza una actividad:
Intent intent =new Intent(this, MI_CLASE.class);
intent.putExtra("usuario", "Pepito Perez");
intent.putExtra("edad", 27);
startActivity(intent);

  • Para recoger los datos una vez lanzada la actividad utilizamos el siguiente código:

Bundle extras = getIntent().getExtras();
String s = extras.getString("usuario");
int i = extras.getInt("edad");

  • Cuando la actividad lanzada termina también podrá devolver datos que podrán ser recogidos por la actividad lanzadora de la siguiente manera.

Intent intent = new Intent(this, MI_CLASE.class);
startActivityForResult(intent, 1234);
@Override protected void onActivityResult (int requestCode, int resultCode, Intent data){
if (requestCode==1234 && resultCode==RESULT_OK) {
String res = data.getExtras().getString("resultado"); }
}
En la actividad llamada has de escribir:
Intent intent = new Intent();
intent.putExtra("resultado","valor");
setResult(RESULT_OK, intent);
finish();

lunes, 18 de febrero de 2013

Actividad

Una actividad es una interacción del usuario con una parte de la aplicación, son las responsables de crear el interfaz de usuario. Una aplicación suele estar formada por una serie de actividades, el usuario puede ir navegando entre actividades.
Una actividad consta de una serie de características:
  • Esta asociado a un layout.
  • La clases tiene que descender de la clase Activity. En esta clase se indicará que layout es el suyo.
  • Cada clase (Actividad) no comparte sus variables.
  • Todas las actividades creadas se deben registrar en el AndroidManifest.xml.

sábado, 9 de febrero de 2013

Layouts

Un layout es un contenedor de uno o varias vistas y también puede contener más layouts.Podemos encontrar los diferentes layouts:
  • LinearLayout: Dispone los elementos en una fila o en una columna.
  • TableLayout: Distribuye los elementos de forma tabular.
  • RelativeLayout: Dispone los elementos en relación a otro o al padre.
  • AbsoluteLayout: Posiciona los elementos de forma absoluta.(esta obsoleto)
  • FrameLayout: Permite el cambio dinámico de los elementos que contiene.

Atributos de la clase TextView

Para las vistas que contienen texto en su interior tenemos los siguientes atributos:


Basicos:
  • text: texto que se va a mostrar. se puede poner directamente "Hola" o utilizando @string/saludo, este último es muy util a la hora de tener distintos idiomas.
  • text_style: bold/italic.....
  • typerface: fuentes.
  • gravity: alineación de los textos.
  • text_apparence: estilos sólo atributos de texto
  • hint: texto que se mostrará normalmente en un EditText, por ejemplo en las cajas de texto que aparecen "Introduzca dni".
Tamaños
  • text_size: tamaño del texto.
  • width: ancho final del texto
  • height: alto final del texto
  • text_scale_x: deforma el texto en escala horizontal
  • max_lenght: máximo de caracteres permitidos.
  • lines: numero de lineas que se visualiza, min_lines y max_lines.
Color
  • text_color: color del texto
  • text_color_link: color de los enlaces
  • text_color_highlight: color de texto cuando es seleccionado
  • text_color_hint: color de texto de hint
Para definir los colores podemos utilizar "#FFFFF", colores definidos por el sistema"@android:color/blue", o colores definidos por el usuario."@color/micolor"