Clase 1 Programacion Android

35
Clase 1/2

description

Clase 1 de 2Curso de Programacion AndroidTechTrainingEcuador

Transcript of Clase 1 Programacion Android

Page 1: Clase 1 Programacion Android

Clase  1/2  

Page 2: Clase 1 Programacion Android

¡  Introduccion  ¡  Herramientas  ¡  Hola  Mundo  ¡  Interfaces  de  Usuario  ¡  Views,  Layouts,  Adapters  ¡  Intents,  Actions  ¡  Toast,  Dialogs,  Status  Bar  ¡   Options,  Context  Menu  

Page 3: Clase 1 Programacion Android

¡  Sistema  Operativo  Movil    ¡  Basado  en  Linux  ¡  Open  Handset  Alliance  ¡  Google  principal  empresa  detrás  de  su  desarrollo.  

¡  +50%  cuota  mercado  mundial  smartphones  

 

Page 4: Clase 1 Programacion Android
Page 5: Clase 1 Programacion Android
Page 6: Clase 1 Programacion Android

¡  Java  JDK  1.6+  ¡  IDE  Eclipse    ¡  Android  SDK  ¡  AVD  Manager  ¡  Android  Development  Tools  

Page 7: Clase 1 Programacion Android

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>  

Page 8: Clase 1 Programacion Android

¡  View,  ViewGroup,  Layout,  Adapter  ¡  Intent,  Action,  Activity  ¡  Toast,  Dialog  ¡  Options,  Context  Menu  

Page 9: Clase 1 Programacion Android

¡  Definir  todas  nuestras  interfaces  en  XML.  §  Layouts,  Colores,  Fondos,  Menús,  Textos,  Estados  

¡  Enlazarlo  en  el  código  

Page 10: Clase 1 Programacion Android

¡  Linear  Layout  ¡  Vertical  Layout  ¡  Relative  Layout  ¡  Table  Layout  ¡  ScrollView  ¡  Etc….  

Page 11: Clase 1 Programacion Android

¡  Drawables  §  Imágenes,  Selectores,  Colores,  9  -­‐  Patch  

¡  Texto,  Arreglos  de  Texto  ¡  Selectores  ¡ Menús  

Page 12: Clase 1 Programacion Android
Page 13: Clase 1 Programacion Android

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

Page 14: Clase 1 Programacion Android

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

Page 15: Clase 1 Programacion Android

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

Page 16: Clase 1 Programacion Android

¡  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);  

Page 17: Clase 1 Programacion Android

¡  La  mejor  forma  de  mostrar  listas  de  datos.  ¡  Componente  ListView  ¡  Crearemos  un  ListAdapter  personalizado  

Page 18: Clase 1 Programacion Android

<?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"})); }}  

Page 19: Clase 1 Programacion Android

public class MiListaAdapter implements ListAdapter {

private Context context;private String[] strings;

public MiListaAdapter(Context context, String[] strings) { this.context = context; this.strings = strings;}

@Overridepublic int getCount() { return strings.length;}

@Overridepublic Object getItem(int arg0) { return strings[arg0];}

@Overridepublic long getItemId(int arg0) { return 0;}

 

Page 20: Clase 1 Programacion Android

@Overridepublic int getItemViewType(int arg0) { return 0;}@Overridepublic View getView(int arg0, View arg1, ViewGroup arg2) { TextView c = new TextView(context); c.setText(strings[arg0]); return c;}

@Overridepublic int getViewTypeCount() { return 1;}

@Overridepublic boolean hasStableIds() { return false;}

@Overridepublic boolean isEmpty() { return strings.length==0;}  

Page 21: Clase 1 Programacion Android

@Overridepublic void registerDataSetObserver(DataSetObserver arg0) { }

@Overridepublic void unregisterDataSetObserver(DataSetObserver arg0) { }

@Overridepublic boolean areAllItemsEnabled() { return true;}

@Overridepublic boolean isEnabled(int arg0) { return true;}

}  

Page 22: Clase 1 Programacion Android

¡  Es  una  API  para  instanciar  individualmente  los  layouts  

¡  Podemos  crear  Items  de  listas  a  nuestra  medida  

Page 23: Clase 1 Programacion Android

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

Page 24: Clase 1 Programacion Android

@Overridepublic 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;

}  

Page 25: Clase 1 Programacion Android

¡  También  definidos  como  Recursos  XML  ¡ Menús  de  Opciones  y  Contextuales  

Page 26: Clase 1 Programacion Android

@Overridepublic boolean onCreateOptionsMenu(Menu menu) {

MenuInflater inflater = getMenuInflater();inflater.inflate(R.menu.hola, menu);return true;

}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {

switch(item.getItemId()) { case R.id.opcion1: { break; } case R.id.opcion2: { break; }}

return true;}  

Page 27: Clase 1 Programacion Android

¡  Registrar  para  el  Long  Click  ¡  Discriminar  por  ID  de  View  

Page 28: Clase 1 Programacion Android

registerForContextMenu(lista);@Overridepublic 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");}

}  @Overridepublic boolean onContextItemSelected(MenuItem item) {

AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)item.getMenuInfo();switch (item.getItemId()) { case 0: { // Hacer opcion 1 break; }}return true;

}  

Page 29: Clase 1 Programacion Android

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

Page 30: Clase 1 Programacion Android

startActivity(new Intent(this, MensajeActivity.class));startActivityForResult(

new Intent(this, MensajeActivity.class), 13);@Overrideprotected void onActivityResult(int requestCode,

int resultCode, Intent data) {// ...

}  

Page 31: Clase 1 Programacion Android

¡  Permite  definir  cuales  Activities  puedes  ser  llamadas  para  realizar  una  operación.  

¡  Permite  integración  entre  aplicaciones.  ¡  Incluso  intra-­‐aplicación.  

Page 32: Clase 1 Programacion Android

private static final int REQUEST_FROM_CAMERA = 0;

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);startActivityForResult(intent, REQUEST_FROM_CAMERA);  @Overrideprotected 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); }

}}  

Page 33: Clase 1 Programacion Android

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

Page 34: Clase 1 Programacion Android

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();

Page 35: Clase 1 Programacion Android

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();