Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Android Bootcamp Santa Fe GTUG

3,253 views

Published on

Presentacion de Android Bootcamp utilizada por Santa Fe GTUG. Actualizada por Horacio Alvarez.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Android Bootcamp Santa Fe GTUG

  1. 1. Android Bootcamp Elaborado (con adaptaciones) a partir de los tutoriales: http://developer.android.com/resources/tutorials/hello-world.html http://developer.android.com/resources/tutorials/views/index.html
  2. 2. <ul><li>¿Qué es una aplicación Android? </li></ul><ul><li>Android Application </li></ul><ul><ul><li>Java Language </li></ul></ul><ul><ul><li>Android SDK: compilar, empaquetar (.apk) </li></ul></ul><ul><li>Múltiples actividades relacionadas entre sí </li></ul><ul><ul><li>Alta cohesión </li></ul></ul><ul><ul><li>Bajo acoplamiento </li></ul></ul><ul><li>Android Activity: A single screen with a user interface. </li></ul><ul><li>Ej: aplicación de email </li></ul><ul><ul><ul><li>Mostrar nuevos emails </li></ul></ul></ul><ul><ul><ul><li>Escribir nuevo email </li></ul></ul></ul><ul><ul><ul><li>Leer email </li></ul></ul></ul>
  3. 3. Ciclo de vida Android Application
  4. 4. <ul><li>Bootcamp Pen Drive </li></ul><ul><li>Por favor, copie desde el pen drive la carpeta BOOTCAMP en alguna carpeta de su notebook </li></ul><ul><li>Contenido </li></ul><ul><li>android-sdk: entorno de desarrollo Android </li></ul><ul><li>eclipse: Eclipse Galileo 3.5.0 </li></ul><ul><li>txt: código del tutorial </li></ul><ul><li>ADT-10.0.0.zip: plugin de Android para Eclipse </li></ul>
  5. 5. <ul><li>Prerrequisitos </li></ul><ul><li>Java SDK 1.6 </li></ul><ul><li>Android SKD (eliminar carpeta c:Documents and Settings....android) </li></ul>
  6. 6. Instalación del Plugin ADT en Eclipse En Eclipse: Help --> Install New Software.... --> Add --> Archive… Archive: ADT-10.0.0.zip (en la carpeta BOOTCAMP) Name: Android Plugin [x] Developer Tools [ ] DESMARQUE “Contact all update sites...&quot; Next, Next, Finish..... Restart
  7. 7. Configurar Android SDK en Eclipse En Eclipse: Window -> Preferences -> Android
  8. 8. Crear un Virtual Device Desde Eclipse ingresar al AVD Manager: AVD Manager -> Virtual Devices-> New Name: MyAVD Target: Android 2.1 SD Card: - Skin: built-in (HVGA) Create AVD
  9. 9. Crear un Virtual Device
  10. 10. Iniciar Virtual Device Start… Launch
  11. 11. <ul><li>Proyecto Hello World </li></ul><ul><li>En Eclipse: </li></ul><ul><li>File -> New -> Other -> Android Project </li></ul><ul><li>Project Name:  HelloWorld </li></ul><ul><li>Build Target: Android 2.1 </li></ul><ul><li>Properties: </li></ul><ul><li>  Application Name:  Hello World </li></ul><ul><li>  Package Name:  com.example.helloworld </li></ul><ul><li>  Create Activity:  HelloActivity </li></ul><ul><li>Finish </li></ul>
  12. 12. src/com/example/HelloActivity.java - onCreate() - Bundle savedInstanceState - setContentView(R.layout.main);
  13. 13. res/layout/main.xml Define el layout de la Activity: LinearLayout TableLayout RelativeLayout
  14. 14. res/layout/main.xml LinearLayout
  15. 15. res/layout/main.xml android:orientation=&quot;vertical&quot; android:layout_width / android:layout_height &quot;fill_parent&quot; &quot;wrap_content&quot; &quot;@string/hello&quot;
  16. 16. res/values/strings.xml Cadenas de caracteres de la aplicación
  17. 17. Prueba Project -> Run (Ctrl + Shift + F11)
  18. 18. Esto es una Activity
  19. 19. Pero es aburrido.
  20. 20. Upgrade: Una lista
  21. 21. Crear res/layout/list_item.xml [código 1.txt] <? xml version = &quot;1.0&quot; encoding = &quot;utf-8&quot; ?> < TextView xmlns:android = &quot;http://schemas.android.com/apk/res/android&quot; android:layout_width = &quot;fill_parent&quot; android:layout_height = &quot;fill_parent&quot; android:padding = &quot;10dp&quot; android:textSize = &quot;16sp&quot; > </ TextView > Define el layout de cada item en la lista
  22. 22. Modificar res/layout/main.xml [código: 2.txt] <? xml version = &quot;1.0&quot; encoding = &quot;utf-8&quot; ?> < LinearLayout xmlns:android = &quot;http://schemas.android.com/apk/res/android&quot; android:orientation = &quot;vertical&quot; android:layout_width = &quot;fill_parent&quot; android:layout_height = &quot;fill_parent&quot; > < ListView android:id = &quot;@+id/mylistview&quot;   android:layout_width = &quot;fill_parent&quot; android:layout_height = &quot;fill_parent&quot; /> </ LinearLayout >
  23. 23. HelloActivity.java [código: 3.txt] public class HelloActivity extends Activity implements OnItemClickListener {      static final String[] COUNTRIES = { &quot;Brazil&quot; ,               &quot;Argentina&quot; , &quot;Mexico&quot; }; @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(); }
  24. 24. Prueba Project -> Run (Ctrl + Shift + F11)
  25. 25. Upgrade: Cuadro de Texto y Botón para Añadir
  26. 26. Modificar main.xml [Código 4.txt] <? xml version = &quot;1.0&quot; encoding = &quot;utf-8&quot; ?> < LinearLayout xmlns:android = &quot;http://schemas.android.com/apk/res/android&quot; android:orientation = &quot;vertical&quot; android:layout_width = &quot;fill_parent&quot; android:layout_height = &quot;fill_parent&quot; >      < LinearLayout          android:layout_width = &quot;fill_parent&quot;          android:layout_height = &quot;wrap_content&quot;          android:orientation = &quot;horizontal&quot; >          < EditText               android:id = &quot;@+id/mytextview&quot;              android:layout_width = &quot;200sp&quot;              android:layout_height = &quot;wrap_content&quot;              android:text = &quot;&quot; />          < Button                android:id = &quot;@+id/mybutton&quot;              android:layout_width = &quot;wrap_content&quot;              android:layout_height = &quot;wrap_content&quot;              android:text = &quot;Añadir&quot; />      </ LinearLayout >      < ListView          android:id = &quot;@+id/mylistview&quot;          android:layout_width = &quot;fill_parent&quot;          android:layout_height = &quot;fill_parent&quot; /> </ LinearLayout >
  27. 27. Prueba Project -> Run (Ctrl + Shift + F11)
  28. 28. Ahora vamos a implementar...
  29. 29. HelloActivity.java [Código: 5.txt] 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( &quot;Mexico&quot; );          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 ); } ...
  30. 30. ... HelloActivity.java [Código: 5.txt] 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(); }
  31. 31. Prueba Project -> Run (Ctrl + Shift + F11)
  32. 32. Experimento Cerrar la aplicación (oprimiendo &quot;Home&quot;) Arrancarla nuevamente desde el menú de aplicaciones. ¿ Cuál es el resultado?
  33. 33. Experimento El contenido se queda en la lista! ¿Por qué pasa eso?
  34. 34. Experimento 1 Porque Android hace &quot;Activity Lifecycle Management&quot; y puede mantener activas o cerrar Activities conforme la necesidad
  35. 35. Experimento 2 Cerrar la aplicación (oprimiendo &quot;Home&quot;) Hacer Force Close a traves del menú Menu -> Settings -> Applications -> Manage Apps -> Hello World -> Force Close Arrancarla nuevamente desde el menú de aplicaciones. ¿Cuál es el resultado?
  36. 36. Experimento 2 Resultado: El contenido se fué.
  37. 37. ¿Cómo grabar el contenido de una manera que sea persistente entre sesiones de mi aplicación?
  38. 38. Fácil -> SharedPreferences Completo -> Base de datos SQLite
  39. 39. SharedPreferences SharedPreferences sp = getPreferences(MODE_PRIVATE); Leer: String x = sp.getString(&quot;key&quot;, &quot;defaultvalue&quot;); Grabar: SharedPreferences.Editor spe = sp.edit(); spe.putString(&quot;key&quot;, &quot;value&quot;); spe.commit();
  40. 40. HelloActivity.java [Código: 6.txt] 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) ? &quot;&quot; : &quot;;&quot; )              + countries .get(i));      spe.putString( &quot;countries&quot; , sb.toString());      spe.commit(); } void loadData() {      SharedPreferences sp =                   getPreferences( MODE_PRIVATE );      String countryList =      sp.getString( &quot;countries&quot; ,          &quot;Argentina;Brazil;Chile;Mexico&quot; );      for (String country : countryList.split( &quot;;&quot; ))          countries .add(country); }
  41. 41. HelloActivity.java [Código: 6.txt] 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 ); }
  42. 42. HelloActivity.java [Código: 6.txt] public void onClick(View view) {      EditText et = (EditText)      findViewById(R.id. mytextview );      countries .add(et.getText().toString());      adapter .notifyDataSetChanged();      saveData(); }
  43. 43. Prueba Project -> Run (Ctrl + Shift + F11)
  44. 44. El &quot;Toast&quot; que aparece cuando se hace click en la lista es aburrido... ¿C ó mo se puede implementar una búsqueda en la Web en lugar del Toast?
  45. 45. ... HelloActivity.java [Código: 7.txt] public void onItemClick(AdapterView<?> parent,       View view, int pos, long id) {      Uri uri =          Uri. parse ( &quot;http://en.wikipedia.org/&quot; +          &quot;wiki/&quot; +      Uri. encode ( countries .get(pos), null ));      Intent intent = new Intent(      Intent. ACTION_VIEW , uri);      startActivity(intent); }
  46. 46. Prueba Project -> Run (Ctrl + Shift + F11)
  47. 47. <ul><li>Documentación de Referencia </li></ul><ul><li>http://developer.android.com/index.html </li></ul><ul><ul><li>Framework Topics </li></ul></ul><ul><ul><li>Android Market Topics </li></ul></ul><ul><ul><li>Developing </li></ul></ul><ul><ul><li>Publishing </li></ul></ul><ul><ul><li>Best Practices </li></ul></ul><ul><ul><li>Web Applications </li></ul></ul><ul><ul><li>Appendix </li></ul></ul>
  48. 48. ¿Preguntas?

×