Diferencia entre revisiones de «Android»
Página creada con «Android Curso PDF<br/> <br/> =Tema 1= ==PDF== <br/> El parámetro Id tiene el siguiente formato @+id/txtTarea, donde la @ indica al parser XML qué debe parsear y expa...» |
|||
| Línea 78: | Línea 78: | ||
Cada aplicación se ejecuta en su propia sandbox. Este sandbox evita que las app interfieran entre ellas.<br/> | Cada aplicación se ejecuta en su propia sandbox. Este sandbox evita que las app interfieran entre ellas.<br/> | ||
Hay maneras de comunicar apps entre ellas:<br/> | Hay maneras de comunicar apps entre ellas:<br/> | ||
Arrancando dos apps con el mismo identificador de usuario Linux. Estas dos apps podran correr en el mismo proceso y compartir la misma VM.<br/> | *Arrancando dos apps con el mismo identificador de usuario Linux. Estas dos apps podran correr en el mismo proceso y compartir la misma VM.<br/> | ||
Una app puede solicitar permisos para acceder a datos comunes, tales como sms, telefono, sd, ...<br/> | *Una app puede solicitar permisos para acceder a datos comunes, tales como sms, telefono, sd, ...<br/> | ||
Existen diferentes apps en Android:<br/> | Existen diferentes apps en Android:<br/> | ||
Primer plano: App que requiere interacción con el usuario (Juegos, Chrome, ...) | *Primer plano: App que requiere interacción con el usuario (Juegos, Chrome, ...) | ||
Segundo plano: Apps de llamadas | *Segundo plano: Apps de llamadas, ... | ||
Intermitente: Útil tanto en primer como en segundo plano. Ej: App de correo. | *Intermitente: Útil tanto en primer como en segundo plano. Ej: App de correo. | ||
Widget: Pequeñas app en el escritorio. | *Widget: Pequeñas app en el escritorio. | ||
Componentes:<br/> | Componentes:<br/> | ||
Son los bloques básicos de una app.<br/> | *Son los bloques básicos de una app.<br/> | ||
Cada componente es un punto de acceso distinto a través del cual el sistema puede acceder a la app.<br/> | *Cada componente es un punto de acceso distinto a través del cual el sistema puede acceder a la app.<br/> | ||
No todos los componentes son puntos de entrada par ael usuario.<br/> | *No todos los componentes son puntos de entrada par ael usuario.<br/> | ||
Cada componenete juega un rol específico.<br/> | *Cada componenete juega un rol específico.<br/> | ||
4 tipos de | *4 tipos de <b>Componentes básicos</b>:<br/> | ||
Activities | **Activities | ||
Suele corresponderse con una interfaz gráfica desde la que pueden realizar un conjunto de acciones. | ***Suele corresponderse con una interfaz gráfica desde la que pueden realizar un conjunto de acciones. | ||
***Para crear una activity debemos crear una subclase de Activity o utilizar una de las existentes. | |||
Services | ***Los dos métodos más importantes son: | ||
Content providers | ****onCreate(): Será llamado cuando se cree la actividad. Deberemos implementar la inicialización esencial de los componentes de la activity. Aquí deberemos llamar a setContentView( ) para definir el layout de la interfaz. | ||
Broadcast receivers | ****onPause(): Será llamado cuando el usuario deje la activity, lo cual no quiere decir que vaya a ser destruida siempre. Generalmente deberemos guardar cualquier cambio que deba ser persistente para la sesión del usuario. | ||
**Services | |||
**Content providers | |||
**Broadcast receivers | |||
==Ej1== | ==Ej1== | ||
Revisión del 10:52 24 mar 2014
Tema 1
El parámetro Id tiene el siguiente formato @+id/txtTarea, donde la @ indica al parser XML qué debe parsear y expandir el resto de la cadena e identificarla como recurso id. El símbolo + indica que el recurso es nuevo y que debe ser añadido a la clase R.
La clase R es autogenerada por Android y contiene todos los componentes gráficos y cadenas de texto global de la aplicación.
En Android no tenemos que hacer referencia a los ficheros de recursos mediante sus rutas. En lugar de ello, la clase R es la encargada de mantener automáticamente las referencias a estos recursos y su contenido.
Width y Height:
match_parent: Indica que ocupe todo el ancho o alto de la vista padre. En este caso es el LinearLayout.
wrap_content: Indica que el ancho o alto debe ajustarse al contenido de éste.
fill_parent: Es el mismo que match_parent pero fue utilizado en versiones anteriores al API 8.
Cadena de texto de la app definidas en fichero aparte.
Al boton se le indica el nombre de una variable (@string/<nombre_varialbe> que esta definida en el archivo src/main/res/values/strings.xml
El método onCreate de la clase de nuestra app (que deriva de Activity) es el punto de entrada de nuestra Activitie
findViewById() es un método que enlaza un recurso de la interfaz de usuario de una aplicación, con una variable en nuestro código. O simplemente se encarga de acceder a ese recurso para cambiar una de sus propiedades.
Funciona de la siguiente forma: EditText txtTarea = (EditText)findViewById(R.id.txtTarea);
Debemos hacer un casting porque el método findViewById() nos devuelve un objeto de la clase View. Esta es la clase de la que eredan todos los elementos gráficos de nuestras vistas. Por eso debemos indicarle específicamente qué tipo de objeto es.
Los objetos de la clase ArrayList almacenan Strings.
A través de un elemento denominado Adapter, Android nos facilita la tarea de enlazar estructuras de datos con elementos de uestra vista. En este caso, utilizaremos un ArrayAdapter.
Para dar funcionalidad a un botón se puede hacer de dos formas:
A través de la interfaz (todolist_activity.xml). Únicamente se puede gestionar ese evento: cuando el botón es pulsado.
A través de nuestra clase Java (TodoList_Activity.java) que controla la vista gráfica.
En nuestro ejemplo lo vamos a realizar en la clase Java añadiendo un escuchador de eventos a nuestro objeto de la clase Button. Éste estará a la escucha de todos los eventos que el usuario quiera realizar con ese objeto. Y dentro del Listener, le indicaremos qué debemos hacer si el botón es pulsado.
btnAdd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String tarea = txtTarea.getText().toString();
if (tarea.length() != 0)
allItemsAdapter.add(tarea);
}
});
Observarás que te obliga añadir el modificador final al objeto EditText y al ArrayAdapter, esto es debido a que Java nos obliga siempre y cuando sean utilizadas en un método sobrecargado dentro de otro. Utilizado para indicarle al compilador que esa entidad no podrá ser modificada más tarde.
Ej2
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.todolist_activity);
mEtTarea = (EditText)findViewById(R.id.txtTarea);
mBtAdd = (Button)findViewById(R.id.btnAdd);
mLvItems = (ListView)findViewById(R.id.listItem);
ArrayList<String> allItems = new ArrayList<String>();
final ArrayAdapter<String> allItemsAdapter;
allItemsAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, allItems);
mLvItems.setAdapter(allItemsAdapter);
mBtAdd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String tarea = mEtTarea.getText().toString();
Date cDate = new Date();
String fDate = new SimpleDateFormat("dd-MM-yyyy").format(cDate);
if(tarea.length() != 0){
allItemsAdapter.add(tarea+" @ "+fDate);
}
}
});
}
Tema 2
Cada aplicación se ejecuta en su propia sandbox. Este sandbox evita que las app interfieran entre ellas.
Hay maneras de comunicar apps entre ellas:
- Arrancando dos apps con el mismo identificador de usuario Linux. Estas dos apps podran correr en el mismo proceso y compartir la misma VM.
- Una app puede solicitar permisos para acceder a datos comunes, tales como sms, telefono, sd, ...
Existen diferentes apps en Android:
- Primer plano: App que requiere interacción con el usuario (Juegos, Chrome, ...)
- Segundo plano: Apps de llamadas, ...
- Intermitente: Útil tanto en primer como en segundo plano. Ej: App de correo.
- Widget: Pequeñas app en el escritorio.
Componentes:
- Son los bloques básicos de una app.
- Cada componente es un punto de acceso distinto a través del cual el sistema puede acceder a la app.
- No todos los componentes son puntos de entrada par ael usuario.
- Cada componenete juega un rol específico.
- 4 tipos de Componentes básicos:
- Activities
- Suele corresponderse con una interfaz gráfica desde la que pueden realizar un conjunto de acciones.
- Para crear una activity debemos crear una subclase de Activity o utilizar una de las existentes.
- Los dos métodos más importantes son:
- onCreate(): Será llamado cuando se cree la actividad. Deberemos implementar la inicialización esencial de los componentes de la activity. Aquí deberemos llamar a setContentView( ) para definir el layout de la interfaz.
- onPause(): Será llamado cuando el usuario deje la activity, lo cual no quiere decir que vaya a ser destruida siempre. Generalmente deberemos guardar cualquier cambio que deba ser persistente para la sesión del usuario.
- Services
- Content providers
- Broadcast receivers
- Activities
Ej1
Cada Activity tiene tres estados: running, pause y stopped.
La clase android.util.Log envia mensajes de log en tiempo de ejecucion.
Existen varios niveles de logs: e()->error, w()->warning, i()->info, d()->debug y v()->verbose.
public class MainActivity extends Activity {
private static final String TAG = "DEBUG T2Ej1";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.d(TAG, "Llamando onCreate");
}
@Override
protected void onStart() {
super.onStart();
Log.d(TAG, "Llamando onStart");
}
@Override
protected void onPause() {
super.onPause();
Log.d(TAG, "Llamando onPause");
}
@Override
protected void onStop() {
super.onStop();
Log.d(TAG, "Llamando onStop");
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.d(TAG, "Llamando onDestroy");
}
@Override
protected void onResume() {
super.onResume();
Log.d(TAG, "Llamando onResume");
}
Logcat-> es donde nos aparecen todos los mensajes en tiempo de ejecucion.
Podemos crear filtros para poder ver los mensajes que nos interesan.
Ej2
Un Toast es un mensaje que se muestra en pantalla durante unos segundos al usuario para luego volver a desaparecer automáticamente sin requerir ningún tipo de actuación por su parte, y sin recibir el foco de la aplicación en ningún momento.
Tema 3
Ej1
Table Layout se utiliza para insertar tablas y Table Row inserta una fila. Luego en Table Row podemos insertar EditTexts, TextViews, Botones, ....
El peso de cada elemento en el Layout se marca con android:layout_weight="<entre 0 y 1>";. Esto sirve para asignar un porcentaje de la pantalla a un elemento, tanto si está en horizontal como en vertical. Se ha de poner la propiedad android:layout_width="0dp";
android:layout_alignParentTop="true" --> Con esta propiedad se alinea el objeto con el padre, en este caso en la parte superior, pero nos da opciones de en cualquier parte.
android:gravity="top" -->
android:hint="Comments" -->
android:inputType="textMultiLine" --> Con esta propiedad decimos que un EditText es multilinea
Ej2
Ej3
Ej4
Ej5
Fragments