SlideShare uma empresa Scribd logo
1 de 49
Baixar para ler offline
Android Bootcamp 101:
Mi primera Aplicación Android
          Leo Fishman
         leo@gtugs.org
       Buenos Aires GTUG
Descarga de Archivos


Por 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 activan
mediante 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

             Objetivos

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


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




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




Cadenas 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"
                              >
                         <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)
Experimento


Cerrar la aplicación (oprimiendo "Home")


 Arrancarla nuevamente desde el menú
            de aplicaciones.


        ¿Cual es el resultado?
Experimento




El 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 2


Cerrar la aplicación (oprimindo "Home")

 Hacer Force Close a traves del menú
         Menu -> Manage Apps ->
         Hello World -> Force Close

Arrancarla 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 -> SharedPreferences


Completo -> 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.html
http://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/

Mais conteúdo relacionado

Destaque

Tranformational Model of Translational Research that Leverages Educational Te...
Tranformational Model of Translational Research that Leverages Educational Te...Tranformational Model of Translational Research that Leverages Educational Te...
Tranformational Model of Translational Research that Leverages Educational Te...EduSkills OECD
 
Announcements, 5/6/12
Announcements, 5/6/12Announcements, 5/6/12
Announcements, 5/6/12CLADSM
 
The Power of Purpose, 10/2/16
The Power of Purpose, 10/2/16The Power of Purpose, 10/2/16
The Power of Purpose, 10/2/16CLADSM
 
Economics of plutonium recycle 6 nov2015fvh j
Economics of plutonium recycle 6 nov2015fvh jEconomics of plutonium recycle 6 nov2015fvh j
Economics of plutonium recycle 6 nov2015fvh jhkano
 
Pu e asian secu_henry6nov2015_j
Pu e asian secu_henry6nov2015_jPu e asian secu_henry6nov2015_j
Pu e asian secu_henry6nov2015_jhkano
 
Announcements, 11/27/16
Announcements, 11/27/16Announcements, 11/27/16
Announcements, 11/27/16CLADSM
 
A Skills Beyond School Review of Korea
A Skills Beyond School Review of KoreaA Skills Beyond School Review of Korea
A Skills Beyond School Review of KoreaEduSkills OECD
 
Increased productivity with visual c sharp ide
Increased productivity with visual c sharp ideIncreased productivity with visual c sharp ide
Increased productivity with visual c sharp idenkaluva
 
In Visible Fellowship Slides, 11/6/11
In Visible Fellowship Slides, 11/6/11In Visible Fellowship Slides, 11/6/11
In Visible Fellowship Slides, 11/6/11CLADSM
 
Facebook Marketing for Small Business Development Conference
Facebook Marketing for Small Business Development ConferenceFacebook Marketing for Small Business Development Conference
Facebook Marketing for Small Business Development ConferenceMaverick Mav
 
Announcements, 11/6/11
Announcements, 11/6/11Announcements, 11/6/11
Announcements, 11/6/11CLADSM
 
国家戦略特区に関する提案(2013年9月11日 大阪府・大阪市)
国家戦略特区に関する提案(2013年9月11日 大阪府・大阪市)国家戦略特区に関する提案(2013年9月11日 大阪府・大阪市)
国家戦略特区に関する提案(2013年9月11日 大阪府・大阪市)Unreasonable Lab Japan
 
Plutonium recycle gilinsky 6 nov2015_j
Plutonium recycle gilinsky 6 nov2015_jPlutonium recycle gilinsky 6 nov2015_j
Plutonium recycle gilinsky 6 nov2015_jhkano
 
Acts Intro Slides, 5/26/13
Acts Intro Slides, 5/26/13Acts Intro Slides, 5/26/13
Acts Intro Slides, 5/26/13CLADSM
 
Il magico potere dei Network
Il magico potere dei NetworkIl magico potere dei Network
Il magico potere dei NetworkLuca Isabella
 
экспертная компания ооо нпо «руспромэксперт»3
экспертная компания ооо нпо «руспромэксперт»3экспертная компания ооо нпо «руспромэксперт»3
экспертная компания ооо нпо «руспромэксперт»3Dmitryi
 
Announcements, 8/21/11
Announcements, 8/21/11Announcements, 8/21/11
Announcements, 8/21/11CLADSM
 
Types of Quantitative Research in ECEC Oslo, Norway January 25, 2012
Types of Quantitative Research in ECEC Oslo, Norway January 25, 2012Types of Quantitative Research in ECEC Oslo, Norway January 25, 2012
Types of Quantitative Research in ECEC Oslo, Norway January 25, 2012EduSkills OECD
 
Open Source Governance v2.5
Open Source Governance v2.5Open Source Governance v2.5
Open Source Governance v2.5Inria
 
Announcements, 1/19/14
Announcements, 1/19/14Announcements, 1/19/14
Announcements, 1/19/14CLADSM
 

Destaque (20)

Tranformational Model of Translational Research that Leverages Educational Te...
Tranformational Model of Translational Research that Leverages Educational Te...Tranformational Model of Translational Research that Leverages Educational Te...
Tranformational Model of Translational Research that Leverages Educational Te...
 
Announcements, 5/6/12
Announcements, 5/6/12Announcements, 5/6/12
Announcements, 5/6/12
 
The Power of Purpose, 10/2/16
The Power of Purpose, 10/2/16The Power of Purpose, 10/2/16
The Power of Purpose, 10/2/16
 
Economics of plutonium recycle 6 nov2015fvh j
Economics of plutonium recycle 6 nov2015fvh jEconomics of plutonium recycle 6 nov2015fvh j
Economics of plutonium recycle 6 nov2015fvh j
 
Pu e asian secu_henry6nov2015_j
Pu e asian secu_henry6nov2015_jPu e asian secu_henry6nov2015_j
Pu e asian secu_henry6nov2015_j
 
Announcements, 11/27/16
Announcements, 11/27/16Announcements, 11/27/16
Announcements, 11/27/16
 
A Skills Beyond School Review of Korea
A Skills Beyond School Review of KoreaA Skills Beyond School Review of Korea
A Skills Beyond School Review of Korea
 
Increased productivity with visual c sharp ide
Increased productivity with visual c sharp ideIncreased productivity with visual c sharp ide
Increased productivity with visual c sharp ide
 
In Visible Fellowship Slides, 11/6/11
In Visible Fellowship Slides, 11/6/11In Visible Fellowship Slides, 11/6/11
In Visible Fellowship Slides, 11/6/11
 
Facebook Marketing for Small Business Development Conference
Facebook Marketing for Small Business Development ConferenceFacebook Marketing for Small Business Development Conference
Facebook Marketing for Small Business Development Conference
 
Announcements, 11/6/11
Announcements, 11/6/11Announcements, 11/6/11
Announcements, 11/6/11
 
国家戦略特区に関する提案(2013年9月11日 大阪府・大阪市)
国家戦略特区に関する提案(2013年9月11日 大阪府・大阪市)国家戦略特区に関する提案(2013年9月11日 大阪府・大阪市)
国家戦略特区に関する提案(2013年9月11日 大阪府・大阪市)
 
Plutonium recycle gilinsky 6 nov2015_j
Plutonium recycle gilinsky 6 nov2015_jPlutonium recycle gilinsky 6 nov2015_j
Plutonium recycle gilinsky 6 nov2015_j
 
Acts Intro Slides, 5/26/13
Acts Intro Slides, 5/26/13Acts Intro Slides, 5/26/13
Acts Intro Slides, 5/26/13
 
Il magico potere dei Network
Il magico potere dei NetworkIl magico potere dei Network
Il magico potere dei Network
 
экспертная компания ооо нпо «руспромэксперт»3
экспертная компания ооо нпо «руспромэксперт»3экспертная компания ооо нпо «руспромэксперт»3
экспертная компания ооо нпо «руспромэксперт»3
 
Announcements, 8/21/11
Announcements, 8/21/11Announcements, 8/21/11
Announcements, 8/21/11
 
Types of Quantitative Research in ECEC Oslo, Norway January 25, 2012
Types of Quantitative Research in ECEC Oslo, Norway January 25, 2012Types of Quantitative Research in ECEC Oslo, Norway January 25, 2012
Types of Quantitative Research in ECEC Oslo, Norway January 25, 2012
 
Open Source Governance v2.5
Open Source Governance v2.5Open Source Governance v2.5
Open Source Governance v2.5
 
Announcements, 1/19/14
Announcements, 1/19/14Announcements, 1/19/14
Announcements, 1/19/14
 

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

Tutorial Nro. 2 de Desarollo de Aplicaciones Móviles con Android
Tutorial Nro. 2 de Desarollo de Aplicaciones Móviles con AndroidTutorial Nro. 2 de Desarollo de Aplicaciones Móviles con Android
Tutorial Nro. 2 de Desarollo de Aplicaciones Móviles con AndroidLuis Ernesto Castillo Alfaro
 
Android Bootcamp - GTUG Uruguay
Android Bootcamp - GTUG UruguayAndroid Bootcamp - GTUG Uruguay
Android Bootcamp - GTUG Uruguaygtuguruguay
 
Aplicaciones moviles clase9 listas
Aplicaciones moviles clase9 listasAplicaciones moviles clase9 listas
Aplicaciones moviles clase9 listasJohan Silva Cueva
 
Instrucciones y estructuras
Instrucciones y estructurasInstrucciones y estructuras
Instrucciones y estructurasFernand Bernowly
 
Carlos blanco resumen mm android controles 10pag v5
Carlos blanco resumen mm android controles 10pag v5Carlos blanco resumen mm android controles 10pag v5
Carlos blanco resumen mm android controles 10pag v5Carlos Blanco
 
Reportes de aplicaciones
Reportes de aplicacionesReportes de aplicaciones
Reportes de aplicacionesADZM
 
Intro. a Android Instituto Bosc de la Coma en Olot
Intro. a Android Instituto Bosc de la Coma en OlotIntro. a Android Instituto Bosc de la Coma en Olot
Intro. a Android Instituto Bosc de la Coma en Olothojalataverde
 
Reconnect(); Sevilla - Universal Windows Platform
Reconnect(); Sevilla - Universal Windows PlatformReconnect(); Sevilla - Universal Windows Platform
Reconnect(); Sevilla - Universal Windows PlatformJavier Suárez Ruiz
 
Controles Básicos de Interfaz en Android
Controles Básicos de Interfaz en AndroidControles Básicos de Interfaz en Android
Controles Básicos de Interfaz en AndroidEmerson Garay
 
Tutorial Nro 1 de Desarrollo de Aplicaciones Móviles con Android
Tutorial Nro 1 de Desarrollo de Aplicaciones Móviles con AndroidTutorial Nro 1 de Desarrollo de Aplicaciones Móviles con Android
Tutorial Nro 1 de Desarrollo de Aplicaciones Móviles con AndroidLuis Ernesto Castillo Alfaro
 
Aplicaciones android
Aplicaciones androidAplicaciones android
Aplicaciones androidedwin
 

Semelhante a ANDROID BOOTCAMP 101: MI PRIMERA APLICACIÓN ANDROID - CÓMO INICIAR UN EMPRENDIMIENTO DE APLICACIONES MÓVILES (20)

Clase 1 Programacion Android
Clase 1 Programacion AndroidClase 1 Programacion Android
Clase 1 Programacion Android
 
Tutorial Nro. 2 de Desarollo de Aplicaciones Móviles con Android
Tutorial Nro. 2 de Desarollo de Aplicaciones Móviles con AndroidTutorial Nro. 2 de Desarollo de Aplicaciones Móviles con Android
Tutorial Nro. 2 de Desarollo de Aplicaciones Móviles con Android
 
Preguntasviri
PreguntasviriPreguntasviri
Preguntasviri
 
Actividad 11
Actividad 11Actividad 11
Actividad 11
 
Android Bootcamp - GTUG Uruguay
Android Bootcamp - GTUG UruguayAndroid Bootcamp - GTUG Uruguay
Android Bootcamp - GTUG Uruguay
 
Actividad 11
Actividad 11Actividad 11
Actividad 11
 
Aplicaciones moviles clase9 listas
Aplicaciones moviles clase9 listasAplicaciones moviles clase9 listas
Aplicaciones moviles clase9 listas
 
Instrucciones y estructuras
Instrucciones y estructurasInstrucciones y estructuras
Instrucciones y estructuras
 
Carlos blanco resumen mm android controles 10pag v5
Carlos blanco resumen mm android controles 10pag v5Carlos blanco resumen mm android controles 10pag v5
Carlos blanco resumen mm android controles 10pag v5
 
Clases de Programación Android
Clases de Programación AndroidClases de Programación Android
Clases de Programación Android
 
Reportes de aplicaciones
Reportes de aplicacionesReportes de aplicaciones
Reportes de aplicaciones
 
Android
AndroidAndroid
Android
 
Intro. a Android Instituto Bosc de la Coma en Olot
Intro. a Android Instituto Bosc de la Coma en OlotIntro. a Android Instituto Bosc de la Coma en Olot
Intro. a Android Instituto Bosc de la Coma en Olot
 
Reconnect(); Sevilla - Universal Windows Platform
Reconnect(); Sevilla - Universal Windows PlatformReconnect(); Sevilla - Universal Windows Platform
Reconnect(); Sevilla - Universal Windows Platform
 
Controles Básicos de Interfaz en Android
Controles Básicos de Interfaz en AndroidControles Básicos de Interfaz en Android
Controles Básicos de Interfaz en Android
 
Iniciación a Android
Iniciación a AndroidIniciación a Android
Iniciación a Android
 
Tutorial Nro 1 de Desarrollo de Aplicaciones Móviles con Android
Tutorial Nro 1 de Desarrollo de Aplicaciones Móviles con AndroidTutorial Nro 1 de Desarrollo de Aplicaciones Móviles con Android
Tutorial Nro 1 de Desarrollo de Aplicaciones Móviles con Android
 
Aplicaciones android
Aplicaciones androidAplicaciones android
Aplicaciones android
 
Preguntas de android
Preguntas  de androidPreguntas  de android
Preguntas de android
 
Preguntas de android
Preguntas  de androidPreguntas  de android
Preguntas de android
 

Último

Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfJulian Lamprea
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 

Último (10)

Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 

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

  • 1. Android Bootcamp 101: Mi primera Aplicación Android Leo Fishman leo@gtugs.org Buenos Aires GTUG
  • 2. Descarga de Archivos Por favor, copie la carpeta BOOTCAMP a su escritorio (o para donde prefiera)
  • 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 activan mediante 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.
  • 8. Objetivos 1.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 Device Window -> 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);
  • 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
  • 17. Prueba Project -> Run (Ctrl + Shift + F11)
  • 18. Esto es una Activity
  • 20. 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
  • 21. 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" > <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. Experimento Cerrar la aplicación (oprimiendo "Home") Arrancarla nuevamente desde el menú de aplicaciones. ¿Cual es el resultado?
  • 34. Experimento El 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 2 Cerrar la aplicación (oprimindo "Home") Hacer Force Close a traves del menú Menu -> Manage Apps -> Hello World -> Force Close Arrancarla 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 -> SharedPreferences Completo -> 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); }
  • 48. Referencias: 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 Para mas información http://developer.android.com/index.html Android Bootcamp 102 ( próximamente )