• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Android bootcamp 101 v2.0
 

Android bootcamp 101 v2.0

on

  • 1,028 views

Presentación utilizada durante el GTUG Day organizado por GTUG Buenos aires el 15/04/2012

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

Statistics

Views

Total Views
1,028
Views on SlideShare
1,028
Embed Views
0

Actions

Likes
0
Downloads
0
Comments
0

0 Embeds 0

No embeds

Accessibility

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Android bootcamp 101 v2.0 Android bootcamp 101 v2.0 Presentation Transcript

    • 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 dondeprefiera)
    • ¿Que es Android?
    • 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
    • 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ó.
    • 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.
    • Activity Lifecycle
    • 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
    • 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.
    • 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 Name: HelloWorld Package Name: org.gtugs.bsas Create Activity: HelloActivity
    • 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_parent" "wrap_content“ String Resources: en Java: R.string.string_name en XML:@string/string_name
    • 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.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
    • 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>
    • 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));}
    • Prueba Project -> Run(Ctrl + Shift + F11)
    • 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();}
    • 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/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>
    • Prueba Project -> Run(Ctrl + Shift + F11)
    • Ahora vamos a implementar...
    • 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);}...
    • ... 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();}
    • Prueba Project -> Run(Ctrl + Shift + F11)
    • ExperimentoCerrar la aplicación (oprimiendo "Home") Arrancarla nuevamente desde el menú de aplicaciones. ¿Cual es el resultado?
    • 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 la necesidad
    • 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?
    • 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");Grabar:SharedPreferences.Editor spe = sp.edit();spe.putString("key", "value");spe.commit();
    • 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);}
    • 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);}
    • HelloActivity.java [6]public void onClick(View view) { EditText et = (EditText) findViewById(R.id.mytextview); countries.add(et.getText().toString()); adapter.notifyDataSetChanged(); saveData();}
    • 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 lugar del Toast?
    • ... 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);}
    • ¿Como seguir?http://developer.android.com/ ¿Preguntas?
    • Muchas Gracias www.gtug.com.ar @gtugbsas gplus.to/gtugbsas @juanmab gplus.to/juanma @jirungaray gplus.to/jirungaray Google Technology User Group Argentina