Clase 1 Programacion Android
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
1,310
On Slideshare
1,310
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
39
Comments
0
Likes
1

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Clase  1/2  
  • 2. ¡  Introduccion  ¡  Herramientas  ¡  Hola  Mundo  ¡  Interfaces  de  Usuario  ¡  Views,  Layouts,  Adapters  ¡  Intents,  Actions  ¡  Toast,  Dialogs,  Status  Bar  ¡   Options,  Context  Menu  
  • 3. ¡  Sistema  Operativo  Movil    ¡  Basado  en  Linux  ¡  Open  Handset  Alliance  ¡  Google  principal  empresa  detrás  de  su   desarrollo.  ¡  +50%  cuota  mercado  mundial  smartphones    
  • 4. ¡  Java  JDK  1.6+  ¡  IDE  Eclipse    ¡  Android  SDK  ¡  AVD  Manager  ¡  Android  Development  Tools  
  • 5. public class HolaMundoActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } }  <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> </LinearLayout>  <?xml version="1.0" encoding="utf-8"?> <resources> <string name="hello">Hello World, HolaMundoActivity!</string> <string name="app_name">HolaMundo</string> </resources>  
  • 6. ¡  View,  ViewGroup,  Layout,  Adapter  ¡  Intent,  Action,  Activity  ¡  Toast,  Dialog  ¡  Options,  Context  Menu  
  • 7. ¡  Definir  todas  nuestras  interfaces  en  XML.   §  Layouts,  Colores,  Fondos,  Menús,  Textos,  Estados  ¡  Enlazarlo  en  el  código  
  • 8. ¡  Linear  Layout  ¡  Vertical  Layout  ¡  Relative  Layout  ¡  Table  Layout  ¡  ScrollView  ¡  Etc….  
  • 9. ¡  Drawables   §  Imágenes,  Selectores,  Colores,  9  -­‐  Patch  ¡  Texto,  Arreglos  de  Texto  ¡  Selectores  ¡  Menús  
  • 10. <?xml version="1.0" encoding="utf-8"?> <resources> <color name="primario">#007dff</color> <color name="secundario">#00237d</color> </resources> <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android" > <item android:state_pressed="true" android:drawable="@color/primario"/> <item android:state_pressed="false" android:drawable="@color/secundario"/> </selector>  
  • 11. <?xml version="1.0" encoding="utf-8"?> <resources> <string-array name="sexos"> <item >Masculino</item> <item >Femenino</item> </string-array> </resources> <resources> <string name="hello">Hola Mundo Android!</string> <string name="app_name">HolaMundo</string> </resources>  
  • 12. <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@+id/opcion1" android:title="Opcion 1"></item> <item android:id="@+id/opcion2" android:title="Opcion 2"></item> </menu>  
  • 13. ¡  AdapterView:  Elemento  ViewGroup  cuyas   Views  internas  estan  definidas  por  un  Adapter   ¡  Adapter:  Clase  que  define  Vistas  a  partir  de  un   estructura  de  Datos.   ¡  ArrayAdapter:  Spinners  ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item); adapter.setDropDownViewResource( android.R.layout.simple_spinner_dropdown_item); adapter.add(“Masculino"); adapter.add(“Femenino"); spinner.setAdapter(adapter);  
  • 14. ¡  La  mejor  forma  de  mostrar  listas  de  datos.  ¡  Componente  ListView  ¡  Crearemos  un  ListAdapter  personalizado  
  • 15. <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <ListView android:id="@+id/lista" android:layout_width="fill_parent" android:layout_height="fill_parent"> </ListView> </LinearLayout> public class HolaMundoActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); ListView lista = (ListView)findViewById(R.id.lista); lista.setAdapter(new MiListaAdapter(this, new String[] {"Juan", "Maria"})); } }  
  • 16. public class MiListaAdapter implements ListAdapter { private Context context; private String[] strings; public MiListaAdapter(Context context, String[] strings) { this.context = context; this.strings = strings; } @Override public int getCount() { return strings.length; } @Override public Object getItem(int arg0) { return strings[arg0]; } @Override public long getItemId(int arg0) { return 0; }  
  • 17. @Override public int getItemViewType(int arg0) { return 0; } @Override public View getView(int arg0, View arg1, ViewGroup arg2) { TextView c = new TextView(context); c.setText(strings[arg0]); return c; } @Override public int getViewTypeCount() { return 1; } @Override public boolean hasStableIds() { return false; } @Override public boolean isEmpty() { return strings.length==0; }  
  • 18. @Override public void registerDataSetObserver(DataSetObserver arg0) { } @Override public void unregisterDataSetObserver(DataSetObserver arg0) { } @Override public boolean areAllItemsEnabled() { return true; } @Override public boolean isEnabled(int arg0) { return true; } }  
  • 19. ¡  Es  una  API  para  instanciar  individualmente   los  layouts  ¡  Podemos  crear  Items  de  listas  a  nuestra   medida  
  • 20. <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="40dp" android:background="#f0f0f0" android:orientation="vertical" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceMedium" android:textColor="@color/secundario" /> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="@color/primario" /> </LinearLayout>  
  • 21. @Override public View getView(int arg0, View arg1, ViewGroup arg2) { LayoutInflater inflater = (LayoutInflater)context.getSystemService( Context.LAYOUT_INFLATER_SERVICE); View itemView = inflater.inflate(R.layout.item, null); TextView c = (TextView)itemView.findViewById(R.id.textView1); c.setText(strings[arg0]); TextView c2 = (TextView)itemView.findViewById(R.id.textView2); c2.setText(Integer.toString(strings[arg0].length())); return itemView; }  
  • 22. ¡  También  definidos  como  Recursos  XML  ¡  Menús  de  Opciones  y  Contextuales  
  • 23. @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.hola, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch(item.getItemId()) { case R.id.opcion1: { break; } case R.id.opcion2: { break; } } return true; }  
  • 24. ¡  Registrar  para  el  Long  Click  ¡  Discriminar  por  ID  de  View  
  • 25. registerForContextMenu(lista); @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { if (v.getId()==R.id.lista) { AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)menuInfo; String valor = (String)lista.getAdapter().getItem(info.position); menu.setHeaderTitle(valor); menu.add(Menu.NONE, 0, 0, "Ver Detalle"); menu.add(Menu.NONE, 1, 1, "Eliminar"); } }  @Override public boolean onContextItemSelected(MenuItem item) { AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)item.getMenuInfo(); switch (item.getItemId()) { case 0: { // Hacer opcion 1 break; } } return true; }  
  • 26. ¡  Activity  son  la  base  de  las  Interfaces  de   Usuario.  ¡  Estas  pueden  apilarse.    ¡  Al  cerrarse  la  ultima  se  cierra  la  Aplicación.  ¡  Son  llamadas  a  traves  de  Intents  ¡  Intent:  Descripcion  de  una  operación  a   realizarse.   §  Explicita  o  Implicita.   §  Acccion  y  Datos.  
  • 27. startActivity(new Intent(this, MensajeActivity.class)); startActivityForResult( new Intent(this, MensajeActivity.class), 13); @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { // ... }  
  • 28. ¡  Permite  definir  cuales  Activities  puedes  ser   llamadas  para  realizar  una  operación.  ¡  Permite  integración  entre  aplicaciones.  ¡  Incluso  intra-­‐aplicación.  
  • 29. private static final int REQUEST_FROM_CAMERA = 0; Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(intent, REQUEST_FROM_CAMERA);  @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode==REQUEST_FROM_CAMERA && resultCode==RESULT_OK) { Bitmap bmp = (Bitmap) data.getExtras().get("data"); ImageView imagen = (ImageView)findViewById(R.id.imagen); imagen.setImageBitmap(bmp); } } }  
  • 30. ¡  Toast  es  un  mensaje  mostrado  en  la  parte   inferior  de  la  pantalla  sobre  todo  el  contenido   §  Texto  simple,  varios  segundos.  ¡  Dialog,  Permite  crear  diálogos  de  Progreso,   De  Pregunta  o  hasta  de  Introducir  Texto.  
  • 31. Toast.makeText(this, "Hola Mundo", 2000).show(); AlertDialog ad = new AlertDialog.Builder(this) .setTitle("Alerta") .setMessage("Esta Seguro?") .setPositiveButton("Si", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }) .setNegativeButton("No", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }).create(); ad.show();
  • 32. AlertDialog.Builder alert = new AlertDialog.Builder(this); alert.setTitle("Configuracion"); alert.setMessage("Server URL"); final EditText input = new EditText(this); input.setText(getServerURL()); alert.setView(input); alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { String value = input.getText().toString(); setServerURL(value); } }); alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { // Canceled. } }); alert.show();