• Like
  • Save
ANDROID BOOTCAMP 101: MI PRIMERA APLICACIÓN ANDROID - CÓMO INICIAR UN EMPRENDIMIENTO DE APLICACIONES MÓVILES
Upcoming SlideShare
Loading in...5
×
 

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

on

  • 1,572 views

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 ...

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.

Statistics

Views

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

Actions

Likes
0
Downloads
34
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: MI PRIMERA APLICACIÓN ANDROID - CÓMO INICIAR UN EMPRENDIMIENTO DE APLICACIONES MÓVILES ANDROID BOOTCAMP 101: MI PRIMERA APLICACIÓN ANDROID - CÓMO INICIAR UN EMPRENDIMIENTO DE APLICACIONES MÓVILES Presentation Transcript

    • Android Bootcamp 101:Mi primera Aplicación Android Leo Fishman leo@gtugs.org Buenos Aires GTUG
    • Descarga de ArchivosPor favor, copie la carpeta BOOTCAMP a su escritorio (o para donde prefiera)
    • ¿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 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ó.
    • 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.
    • 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 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.
    • Crear un Virtual DeviceWindow -> AVD Manager -> Virtual Devices->New Name: MyAVD Target: Android 2.1 Skin: HVGA Create AVD Close
    • 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
    • src/com/example/HelloActivity.java - onCreate() - Bundle savedInstanceState - setContentView(R.layout.main);
    • res/layout/main.xmlDefine el layout de la Activity
    • res/layout/main.xml LinearLayout
    • 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"?> <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
    • 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>
    • 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));      }
    • Prueba Project -> Run(Ctrl + Shift + F11)
    • 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(); }
    • 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
    • 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();
    • 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); }
    • ¿Preguntas?
    • 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 )
    • http://bsas.gtugs.org/