Diferencia entre revisiones de «Android Curso PDF»
Sin resumen de edición |
Sin resumen de edición |
||
| Línea 1: | Línea 1: | ||
Layouts:<br/> | |||
Son elementos no visibles que se encargan de controlar la posicion, distribución y tamaño de los controles que estan en su interior (botones, textviews, edittexts, ...)<br/> | |||
Extienden a la clase ViewGroup<br/> | |||
Tipos:<br/> | |||
FrameLayout: Es el mas simple de todos. Coloca todos sus controles hijos alineados con su esquina superior izquierda, de forma que cada control quedará oculto por el control siguiente (a menos que éste último tenga transparencia). Por ello, suele utilizarse para mostrar un único control en su interior, a modo de contenedor (placeholder) sencillo para un sólo elemento sustituible, por ejemplo una imagen.<br/> | |||
LinearLayout: Apila uno tras otro todos sus elementos hijos de forma horizontal o vertical según se establezca su propiedad android:orientation. Hay parámetro con el que jugar, la propiedad android:layout_weight.<br/> | |||
TableLayout: Permite distribuir sus elementos hijos de forma tabular, definiendo las filas y columnas necesarias, y la posición de cada componente dentro de la tabla.<br/> | |||
La estrucutra de la tabla se define con los objetos TableRow y dentro de cada fila se ponen los controles y estos ocupan una columna de la tabla.<br/> | |||
Por norma general, el ancho de cada columna se corresponderá con el ancho del mayor componente de dicha columna, pero existen una serie de propiedades que nos ayudarán a modificar este comportamiento:<br/> | |||
android:stretchColumns. Indicará las columnas que pueden expandir para absorver el espacio libre dejado por las demás columnas a la derecha de la pantalla.<br/> | |||
android:shrinkColumns. Indicará las columnas que se pueden contraer para dejar espacio al resto de columnas que se puedan salir por la derecha de la palntalla.<br/> | |||
android:collapseColumns. Indicará las columnas de la tabla que se quieren ocultar completamente.<br/> | |||
Todas estas propiedades del TableLayout pueden recibir una lista de índices de columnas separados por comas (ejemplo: android:stretchColumns=”1,2,3″) o un asterisco para indicar que debe aplicar a todas las columnas (ejemplo: android:stretchColumns=”*”).<br/> | |||
Otra característica importante es la posibilidad de que una celda determinada pueda ocupar el espacio de varias columnas de la tabla (análogo al atributo colspan de HTML). Esto se indicará mediante la propiedad android:layout_span del componente concreto que deberá tomar dicho espacio.<br/> | |||
GridLayout: Es similar al TableLayout. Aqui indicamos el número de filas y de columnas mediante android:rowCount y android:columnCount. También tendremos disponibles las propiedades android:layout_rowSpan y android:layout_columnSpan para conseguir que una celda ocupe el lugar de varias filas o columnas. Existe también una forma de indicar de forma explícita la fila y columna que debe ocupar un determinado elemento hijo contenido en el GridLayout, y se consigue utilizando los atributos android:layout_row y android:layout_column. De cualquier forma, salvo para configuraciones complejas del grid no suele ser necesario utilizar estas propiedades.<br/> | |||
RelativeLayout: Permite especificar la posición de cada elemento de forma relativa a su elemento padre o a cualquier otro elemento incluido en el propio layout. De esta forma, al incluir un nuevo elemento X podremos indicar por ejemplo que debe colocarse debajo del elemento Y y alineado a la derecha del layout padre.<br/> | |||
Activities<br/> | Activities<br/> | ||
Views<br/> | Views<br/> | ||
Revisión actual - 12:22 3 mar 2014
Layouts:
Son elementos no visibles que se encargan de controlar la posicion, distribución y tamaño de los controles que estan en su interior (botones, textviews, edittexts, ...)
Extienden a la clase ViewGroup
Tipos:
FrameLayout: Es el mas simple de todos. Coloca todos sus controles hijos alineados con su esquina superior izquierda, de forma que cada control quedará oculto por el control siguiente (a menos que éste último tenga transparencia). Por ello, suele utilizarse para mostrar un único control en su interior, a modo de contenedor (placeholder) sencillo para un sólo elemento sustituible, por ejemplo una imagen.
LinearLayout: Apila uno tras otro todos sus elementos hijos de forma horizontal o vertical según se establezca su propiedad android:orientation. Hay parámetro con el que jugar, la propiedad android:layout_weight.
TableLayout: Permite distribuir sus elementos hijos de forma tabular, definiendo las filas y columnas necesarias, y la posición de cada componente dentro de la tabla.
La estrucutra de la tabla se define con los objetos TableRow y dentro de cada fila se ponen los controles y estos ocupan una columna de la tabla.
Por norma general, el ancho de cada columna se corresponderá con el ancho del mayor componente de dicha columna, pero existen una serie de propiedades que nos ayudarán a modificar este comportamiento:
android:stretchColumns. Indicará las columnas que pueden expandir para absorver el espacio libre dejado por las demás columnas a la derecha de la pantalla.
android:shrinkColumns. Indicará las columnas que se pueden contraer para dejar espacio al resto de columnas que se puedan salir por la derecha de la palntalla.
android:collapseColumns. Indicará las columnas de la tabla que se quieren ocultar completamente.
Todas estas propiedades del TableLayout pueden recibir una lista de índices de columnas separados por comas (ejemplo: android:stretchColumns=”1,2,3″) o un asterisco para indicar que debe aplicar a todas las columnas (ejemplo: android:stretchColumns=”*”).
Otra característica importante es la posibilidad de que una celda determinada pueda ocupar el espacio de varias columnas de la tabla (análogo al atributo colspan de HTML). Esto se indicará mediante la propiedad android:layout_span del componente concreto que deberá tomar dicho espacio.
GridLayout: Es similar al TableLayout. Aqui indicamos el número de filas y de columnas mediante android:rowCount y android:columnCount. También tendremos disponibles las propiedades android:layout_rowSpan y android:layout_columnSpan para conseguir que una celda ocupe el lugar de varias filas o columnas. Existe también una forma de indicar de forma explícita la fila y columna que debe ocupar un determinado elemento hijo contenido en el GridLayout, y se consigue utilizando los atributos android:layout_row y android:layout_column. De cualquier forma, salvo para configuraciones complejas del grid no suele ser necesario utilizar estas propiedades.
RelativeLayout: Permite especificar la posición de cada elemento de forma relativa a su elemento padre o a cualquier otro elemento incluido en el propio layout. De esta forma, al incluir un nuevo elemento X podremos indicar por ejemplo que debe colocarse debajo del elemento Y y alineado a la derecha del layout padre.
Activities
Views
Services
Intents
La apariencia de la aplicacion se controla con los archivos xml de la carpeta layout. La logica con los archivos .java.
En los archivos .java se crean objetos que descienden de Activity y se utiliza setContentView(R.layout.activity_main); para decir con que archivo de layaout esta relacionada esa activity.
btnHola.setOnClickListener(new View.OnClickListener() { //Llamamos a la función que saltara cuando hagamos click
@Override
public void onClick(View view) {
Intent intent = new Intent(MainActivity.this, FrmSaludo.class); //Creamos un Intent para llamar a una activity desde otra activity
Bundle b = new Bundle(); //Creamos un Bundle para pasar datos a la otra activity
b.putString("NOMBRE", txtNombre.getText().toString()); //Llenamos el bundle con el par CLAVE, VALOR
intent.putExtras(b); //Añadimos la información al intent
startActivity(intent); //Llamamos a la siguiente Activity
}
});
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_saludo);
final TextView txtSaludo = (TextView)findViewById(R.id.TxtSaludo);
Bundle bundle = this.getIntent().getExtras(); //Recuperamos info pasada en el intent
txtSaludo.setText("Hola" + bundle.getString("NOMBRE")); //Construimos el mensaje a mostrar
}