Google Technology User Group
Android Bootcamp 101: Mi primera aplicación        Android
Archivos necesariosPor favor, copie a partir del pen drive o CD la carpetaAndroid Bootcamp a su escritorio (o para dondepr...
¿Que es Android?
Componentes de una aplicación● Activities       ■Representa una Pantalla con UI       ■Son independientes entre ellas     ...
Intents● Los activities, Service y Broadcast Recivers se activanmediante mensajes llamados Intents que pueden ser de lapro...
Manifest●   AndroidManifest.xml , en el carpeta raiz de la aplicación●Registra todos los componentes que conforman la apli...
Activity Lifecycle
Objetivos1. Instalar IDE (Eclipse).2. Instalar el Plugin ADT.3. Configurar al menos un “Virtual Device” (AVD) o   “Hardwar...
Instalación del Plugin ADTEn Eclipse:Help -> Install New Software.... -> AddName: Android PluginArchive: ADT-18.0.0.zip(en...
Crear un Virtual DeviceWindow -> AVD Manager -> Virtual Devices->NewName: MyAVDTarget: Android 2.1Skin: HVGACreate AVDClose
Proyecto Hello WorldFile -> New -> Android ProjectProject Name: HelloWorldBuild Target: Android 2.1Properties: Application...
src/com/example/HelloActivity.java- onCreate()- Bundle savedInstanceState- setContentView(R.layout.main);
res/layout/main.xmlDefine el layout de la Activity
res/layout/main.xmlLinearLayout
res/layout/main.xml       android:orientation="vertical"android:layout_width / android:layout_height                "fill_...
res/values/strings.xmlCadenas de caracteres de la aplicación
Prueba  Project -> Run(Ctrl + Shift + F11)
Esto es una Activity
Upgrade: Una lista
Crear res/layout/list_item.xml [1]<?xml version="1.0" encoding="utf-8"?><TextView xmlns:android="http://schemas.android.co...
Modificar res/layout/main.xml [2]<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android...
HelloActivity.java [3a]public class HelloActivity extends Activity i {  static final String[] COUNTRIES = { "Brazil",     ...
Prueba  Project -> Run(Ctrl + Shift + F11)
HelloActivity.java [3b]public class HelloActivity extends Activity implements OnItemClickListener {  static final String[]...
Prueba  Project -> Run(Ctrl + Shift + F11)
EditText y Botón para Añadir
Modificar main.xml [4]<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/re...
Prueba  Project -> Run(Ctrl + Shift + F11)
Ahora vamos a implementar...
HelloActivity.java [5]package com.example.helloworld;import ...public class HelloActivity extends Activity    implements O...
... HelloActivity.java [5]public void onItemClick(AdapterView<?> parent,  View view, int pos, long id) {  Toast.makeText(g...
Prueba  Project -> Run(Ctrl + Shift + F11)
ExperimentoCerrar la aplicación (oprimiendo "Home") Arrancarla nuevamente desde el menú            de aplicaciones.       ...
ExperimentoEl contenido se queda en la lista!      ¿Por qué pasa eso?
Experimento       Porque Android hace "Activity Lifecycle Management"y puede mantener activas o cerrar Activities conforme...
Experimento 2Cerrar la aplicación (oprimindo "Home") Hacer Force Close a traves del menú         Menu -> Manage Apps ->   ...
Experimento 2    Resultado:El contenido se fué.
¿Como grabar el contenido de una   manera que sea persistente entre sesiones de mi aplicación?
Fácil -> SharedPreferencesCompleto -> Base de datos SQLite
SharedPreferencesSharedPreferences sp =getPreferences(MODE_PRIVATE);Leer:String x = sp.getString("key", "defaultvalue");Gr...
HelloActivity.java [6]void saveData() {  SharedPreferences.Editor spe =     getPreferences(MODE_PRIVATE).edit();  StringBu...
HelloActivity.java [6]public void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  setContentVi...
HelloActivity.java [6]public void onClick(View view) {  EditText et = (EditText)  findViewById(R.id.mytextview);  countrie...
Prueba  Project -> Run(Ctrl + Shift + F11)
El "Toast" que aparece cuando se hace      click en la lista es aburrido...¿Como se puede implementar un Web    Search en ...
... HelloActivity.java [7]public void onItemClick(AdapterView<?> parent,  View view, int pos, long id) {  Uri uri =     Ur...
¿Como seguir?http://developer.android.com/     ¿Preguntas?
Muchas Gracias                www.gtug.com.ar                   @gtugbsas                   gplus.to/gtugbsas             ...
Upcoming SlideShare
Loading in...5
×

Android bootcamp 101 v2.0

813

Published on

Presentación utilizada durante el GTUG Day organizado por GTUG Buenos aires el 15/04/2012
http://www.gtug.com.ar/gtug-day/

Published in: Technology, News & Politics
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
813
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "Android bootcamp 101 v2.0"

  1. 1. Google Technology User Group
  2. 2. Android Bootcamp 101: Mi primera aplicación Android
  3. 3. Archivos necesariosPor favor, copie a partir del pen drive o CD la carpetaAndroid Bootcamp a su escritorio (o para dondeprefiera)
  4. 4. ¿Que es Android?
  5. 5. 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
  6. 6. Intents● Los activities, Service y Broadcast Recivers se activanmediante mensajes llamados Intents que pueden ser de lapropia aplicación o de otras.●Para Activities y Services los intents se configuran con unaAccion (VIEW , SEND; etac.) y una URI que especifica laubicacion de la informacion sobre la que se va a actuar.●Para los Broadcast Recievers los intents incluyen unicamenteel “mensaje” que se envió.
  7. 7. Manifest● AndroidManifest.xml , en el carpeta raiz de la aplicación●Registra todos los componentes que conforman la aplicacióny 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 porla aplicación.●Define los APIs ( ademas del Android Framework API) conlos que la aplicación va a interactuar.
  8. 8. Activity Lifecycle
  9. 9. 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
  10. 10. Instalación del Plugin ADTEn Eclipse:Help -> Install New Software.... -> AddName: Android PluginArchive: ADT-18.0.0.zip(en la carpeta que compiaron)[x] Developer Tools[ ] DESMARQUE "Check all update sites..."Next, next, next....., restart.
  11. 11. Crear un Virtual DeviceWindow -> AVD Manager -> Virtual Devices->NewName: MyAVDTarget: Android 2.1Skin: HVGACreate AVDClose
  12. 12. Proyecto Hello WorldFile -> New -> Android ProjectProject Name: HelloWorldBuild Target: Android 2.1Properties: Application Name: HelloWorld Package Name: org.gtugs.bsas Create Activity: HelloActivity
  13. 13. src/com/example/HelloActivity.java- onCreate()- Bundle savedInstanceState- setContentView(R.layout.main);
  14. 14. res/layout/main.xmlDefine el layout de la Activity
  15. 15. res/layout/main.xmlLinearLayout
  16. 16. 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
  17. 17. res/values/strings.xmlCadenas de caracteres de la aplicación
  18. 18. Prueba Project -> Run(Ctrl + Shift + F11)
  19. 19. Esto es una Activity
  20. 20. Upgrade: Una lista
  21. 21. Crear res/layout/list_item.xml [1]<?xml version="1.0" encoding="utf-8"?><TextView xmlns: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
  22. 22. Modificar res/layout/main.xml [2]<?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"><ListViewandroid:id="@+id/mylistview"android:layout_width="fill_parent"android:layout_height="fill_parent"/></LinearLayout>
  23. 23. HelloActivity.java [3a]public class HelloActivity extends Activity i { static final String[] COUNTRIES = { "Brazil", "Argentina","Mexico" };@Overridepublic 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));}
  24. 24. Prueba Project -> Run(Ctrl + Shift + F11)
  25. 25. HelloActivity.java [3b]public class HelloActivity extends Activity implements OnItemClickListener { static final String[] COUNTRIES = { "Brazil", "Argentina","Mexico" };@Overridepublic 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();}
  26. 26. Prueba Project -> Run(Ctrl + Shift + F11)
  27. 27. EditText y Botón para Añadir
  28. 28. 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>
  29. 29. Prueba Project -> Run(Ctrl + Shift + F11)
  30. 30. Ahora vamos a implementar...
  31. 31. 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);}...
  32. 32. ... 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();}
  33. 33. Prueba Project -> Run(Ctrl + Shift + F11)
  34. 34. ExperimentoCerrar la aplicación (oprimiendo "Home") Arrancarla nuevamente desde el menú de aplicaciones. ¿Cual es el resultado?
  35. 35. ExperimentoEl contenido se queda en la lista! ¿Por qué pasa eso?
  36. 36. Experimento Porque Android hace "Activity Lifecycle Management"y puede mantener activas o cerrar Activities conforme la necesidad
  37. 37. 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?
  38. 38. Experimento 2 Resultado:El contenido se fué.
  39. 39. ¿Como grabar el contenido de una manera que sea persistente entre sesiones de mi aplicación?
  40. 40. Fácil -> SharedPreferencesCompleto -> Base de datos SQLite
  41. 41. SharedPreferencesSharedPreferences sp =getPreferences(MODE_PRIVATE);Leer:String x = sp.getString("key", "defaultvalue");Grabar:SharedPreferences.Editor spe = sp.edit();spe.putString("key", "value");spe.commit();
  42. 42. 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);}
  43. 43. 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);}
  44. 44. HelloActivity.java [6]public void onClick(View view) { EditText et = (EditText) findViewById(R.id.mytextview); countries.add(et.getText().toString()); adapter.notifyDataSetChanged(); saveData();}
  45. 45. Prueba Project -> Run(Ctrl + Shift + F11)
  46. 46. El "Toast" que aparece cuando se hace click en la lista es aburrido...¿Como se puede implementar un Web Search en lugar del Toast?
  47. 47. ... 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);}
  48. 48. ¿Como seguir?http://developer.android.com/ ¿Preguntas?
  49. 49. Muchas Gracias www.gtug.com.ar @gtugbsas gplus.to/gtugbsas @juanmab gplus.to/juanma @jirungaray gplus.to/jirungaray Google Technology User Group Argentina

×