ANDROID BOOTCAMP 101: MI PRIMERA APLICACIÓN ANDROID - CÓMO INICIAR UN EMPRENDIMIENTO DE APLICACIONES MÓVILES

  • 1,168 views
Uploaded on

Este “Bootcamp” es la primera de una serie de capacitaciones que se dictarán en varios lugares y contextos. Durante este “Bootcamp” se verán las bases para crear aplicaciones Android usando eclipse + …

Este “Bootcamp” es la primera de una serie de capacitaciones que se dictarán en varios lugares y contextos. Durante este “Bootcamp” se verán las bases para crear aplicaciones Android usando eclipse + ADT (Android Development Tools).


Durante el curso cubriremos:

Descripción básica de sistemas Android y sus principales beneficios para usuarios, desarrolladores y empresas.

Instalación y configuración del ambiente de desarrollo.

Creación de una aplicación. Emulador y deploy en dispositivos android.

Conceptos básicos sobre arquitectura y ciclos de vida de aplicaciones Android. Layouts e Intents.

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
1,168
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
35
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Android Bootcamp 101:Mi primera Aplicación Android Leo Fishman leo@gtugs.org Buenos Aires GTUG
  • 2. Descarga de ArchivosPor favor, copie la carpeta BOOTCAMP a su escritorio (o para donde prefiera)
  • 3. ¿Que es Android?
  • 4. Componentes de una aplicación Activities  Representa una Pantalla con UI  Son independientes entre ellas Se pueden referenciar Activities de otras aplicaciones (vía Intent)  Extienden de la clase Activity Services  Corren en el background  Para porcesos complejos o para servir a llamadas remotas  No proveen UI  Extienden de la clase Service Content Providers  Comparten un conjunto de información de la aplicación  Pueden leer/escribir informacion privada de la aplicación  Extienden de la clase ContentProvider Broadcast Recievers  Responden a “mensajes generales”  Pueden crear notificaciones en la barra de estado  Extienden de la clase BroadcastReciever
  • 5. Intents Los activities, Service y Broadcast Recivers se activanmediante mensajes llamados Intents que pueden ser de la propia aplicación o de otras.Para Activities y Services los intents se configuran con una Accion (VIEW , SEND; etc.) y una URI que especifica la ubicacion de la informacion sobre la que se va a actuar. Para los Broadcast Recievers los intents incluyen unicamente el “mensaje” que se envió.
  • 6. Manifest  AndroidManifest.xml , en el carpeta raiz de la aplicación  Registra todos los componentes que conforman la aplicación y sus capacidades de recibir intents.  Identifica los permisos que requiere la aplicación.  Define el nivel mínimo de API a utilizar. Define requerimientos de hardware o software requeridos por la aplicación.  Define los APIs ( ademas del Android Framework API) con los que la aplicación va a interactuar.
  • 7. Activity Lifecycle
  • 8.  Objetivos1.Instalar IDE (Eclipse).2.Instalar el Plugin ADT.3.Configurar al menos un “Virtual Device” (AVD) o“Hardware Device”.4.Crear un Proyecto Android.5.Construir una aplicación Android.6.Desplegar la aplicación en un dispositivo
  • 9. Instalación del Plugin ADT En Eclipse: Help -> Install New Software.... -> Add Name: Android Plugin Archive: ADT-10.0.0.zip (en la carpeta BOOTCAMP) [x] Developer Tools[ ] DESMARQUE "Check all update sites..." Next, next, next....., restart.
  • 10. Crear un Virtual DeviceWindow -> AVD Manager -> Virtual Devices->New Name: MyAVD Target: Android 2.1 Skin: HVGA Create AVD Close
  • 11. Proyecto Hello World File -> New -> Android Project Project Name:   HelloWorld Build Target: Android 2.1 Properties:   Application Name:  HelloWorld  Package Name:  com.example.helloworld   Create Activity:  HelloActivity
  • 12. src/com/example/HelloActivity.java - onCreate() - Bundle savedInstanceState - setContentView(R.layout.main);
  • 13. res/layout/main.xmlDefine el layout de la Activity
  • 14. res/layout/main.xml LinearLayout
  • 15. res/layout/main.xml android:orientation="vertical"android:layout_width / android:layout_height "fill_parent" "wrap_content“ String Resources: en Java: R.string.string_name en XML:@string/string_name
  • 16. res/values/strings.xmlCadenas de caracteres de la aplicación
  • 17. Prueba Project -> Run(Ctrl + Shift + F11)
  • 18. Esto es una Activity
  • 19. Upgrade: Una lista
  • 20. Crear res/layout/list_item.xml [1] <?xml version="1.0" encoding="utf-8"?> <TextViewxmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:padding="10dp" android:textSize="16sp" > </TextView> Define el layout de cada iten en la lista
  • 21. Modificar res/layout/main.xml [2] <?xml version="1.0" encoding="utf-8"?> <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <ListView android:id="@+id/mylistview"  android:layout_width="fill_parent" android:layout_height="fill_parent" /> </LinearLayout>
  • 22. HelloActivity.java [2] public class HelloActivity extends Activity i {     static final String[] COUNTRIES = { "Brazil",              "Argentina","Mexico" }; @Override public void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);     setContentView(R.layout.main);    ListView lv = (ListView) findViewById(R.id.mylistview);     lv.setAdapter(new ArrayAdapter<String>(this,          R.layout.list_item,         COUNTRIES));      }
  • 23. Prueba Project -> Run(Ctrl + Shift + F11)
  • 24. HelloActivity.java [2] public class HelloActivity extends Activity implements OnItemClickListener {     static final String[] COUNTRIES = { "Brazil",              "Argentina","Mexico" }; @Override public void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);     setContentView(R.layout.main);    ListView lv = (ListView) findViewById(R.id.mylistview);     lv.setAdapter(new ArrayAdapter<String>(this,          R.layout.list_item,         COUNTRIES));     lv.setOnItemClickListener(this); } public void onItemClick(AdapterView<?> parent, View view,      int pos, long id) {     Toast.makeText(getApplicationContext(),          ((TextView) view).getText(),         Toast.LENGTH_SHORT).show(); }
  • 25. Prueba Project -> Run(Ctrl + Shift + F11)
  • 26. EditText y Botón para Añadir
  • 27. Modificar main.xml [4] <?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" >     <LinearLayout         android:layout_width="fill_parent"         android:layout_height="wrap_content"         android:orientation="horizontal">         <EditText              android:id="@+id/mytextview"             android:layout_width="200sp"             android:layout_height="wrap_content"             android:text=""/>         <Button              android:id="@+id/mybutton"             android:layout_width="wrap_content"             android:layout_height="wrap_content"             android:text="Añadir"/>     </LinearLayout>     <ListView         android:id="@+id/mylistview"         android:layout_width="fill_parent"         android:layout_height="fill_parent"/> </LinearLayout>
  • 28. Prueba Project -> Run(Ctrl + Shift + F11)
  • 29. Ahora vamos a implementar...
  • 30. HelloActivity.java [5] package com.example.helloworld;  import ... public class HelloActivity extends Activity     implements OnItemClickListener, OnClickListener {     private List<String> countries =          new ArrayList<String>();     private ArrayAdapter<String> adapter;     @Override     public void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.main);         countries.add("Mexico");         ListView lv = (ListView)              findViewById(R.id.mylistview);         adapter = new ArrayAdapter<String>(             this, R.layout.list_item, countries);         lv.setAdapter(adapter);         lv.setOnItemClickListener(this);        Button btn = (Button) findViewById(R.id.mybutton);         btn.setOnClickListener(this); } ...
  • 31. ... HelloActivity.java [5] public void onItemClick(AdapterView<?> parent,     View view, int pos, long id) {     Toast.makeText(getApplicationContext(),                     ((TextView)view).getText(),     Toast.LENGTH_SHORT).show(); } public void onClick(View view) {    EditText et = (EditText) findViewById(R.id.mytextview);     countries.add(et.getText().toString());     adapter.notifyDataSetChanged(); }
  • 32. Prueba Project -> Run(Ctrl + Shift + F11)
  • 33. ExperimentoCerrar la aplicación (oprimiendo "Home") Arrancarla nuevamente desde el menú de aplicaciones. ¿Cual es el resultado?
  • 34. ExperimentoEl contenido se queda en la lista! ¿Por qué pasa eso?
  • 35. Experimento Porque Android hace "Activity Lifecycle Management"y puede mantener activas o cerrar Activities conforme la necesidad
  • 36. Experimento 2Cerrar la aplicación (oprimindo "Home") Hacer Force Close a traves del menú Menu -> Manage Apps -> Hello World -> Force CloseArrancarla nuevamente desde el menú de aplicaciones. ¿Cual es el resultado?
  • 37. Experimento 2 Resultado:El contenido se fué.
  • 38. ¿Como grabar el contenido de una manera que sea persistente entre sesiones de mi aplicación?
  • 39. Fácil -> SharedPreferencesCompleto -> Base de datos SQLite
  • 40. SharedPreferences SharedPreferences sp = getPreferences(MODE_PRIVATE); Leer:String x = sp.getString("key", "defaultvalue"); Grabar: SharedPreferences.Editor spe = sp.edit(); spe.putString("key", "value"); spe.commit();
  • 41. HelloActivity.java [6] void saveData() {     SharedPreferences.Editor spe =         getPreferences(MODE_PRIVATE).edit();     StringBuilder sb = new StringBuilder();     for (int i = 0; i < countries.size(); i++)         sb.append( ((i == 0) ? "" : ";")             + countries.get(i));     spe.putString("countries", sb.toString());     spe.commit(); } void loadData() {     SharedPreferences sp =                  getPreferences(MODE_PRIVATE);     String countryList =     sp.getString("countries",         "Argentina;Brazil;Chile;Mexico");    for (String country : countryList.split(";"))         countries.add(country); }
  • 42. HelloActivity.java [6] public void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);     setContentView(R.layout.main);     loadData();     ListView lv = (ListView)     findViewById(R.id.mylistview);     adapter = new ArrayAdapter<String>(this,     R.layout.list_item, countries);     lv.setAdapter(adapter);     lv.setOnItemClickListener(this);    Button btn = (Button) findViewById(R.id.mybutton);     btn.setOnClickListener(this); }
  • 43. HelloActivity.java [6] public void onClick(View view) {     EditText et = (EditText)     findViewById(R.id.mytextview);    countries.add(et.getText().toString());     adapter.notifyDataSetChanged();     saveData(); }
  • 44. Prueba Project -> Run(Ctrl + Shift + F11)
  • 45. El "Toast" que aparece cuando se hace click en la lista es aburrido...¿Como se puede implementar un Web Search en lugar del Toast?
  • 46. ... HelloActivity.java [7] public void onItemClick(AdapterView<?> parent,      View view, int pos, long id) {     Uri uri =        Uri.parse("http://en.wikipedia.org/" +         "wiki/" +     Uri.encode(countries.get(pos), null));     Intent intent = new Intent(     Intent.ACTION_VIEW, uri);     startActivity(intent); }
  • 47. ¿Preguntas?
  • 48. Referencias: Elaborado (con adaptaciones) a partir de los tutoriales:http://developer.android.com/resources/tutorials/hello-world.htmlhttp://developer.android.com/resources/tutorials/views/index.html Para mas información http://developer.android.com/index.html Android Bootcamp 102 ( próximamente )
  • 49. http://bsas.gtugs.org/