clase 1 programacion android
DESCRIPTION
Clase 1 de 2Curso de Programacion AndroidTechTrainingEcuadorTRANSCRIPT
![Page 1: Clase 1 Programacion Android](https://reader034.vdocuments.site/reader034/viewer/2022042614/5551172cb4c905b1138b4ce5/html5/thumbnails/1.jpg)
Clase 1/2
![Page 2: Clase 1 Programacion Android](https://reader034.vdocuments.site/reader034/viewer/2022042614/5551172cb4c905b1138b4ce5/html5/thumbnails/2.jpg)
¡ 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](https://reader034.vdocuments.site/reader034/viewer/2022042614/5551172cb4c905b1138b4ce5/html5/thumbnails/3.jpg)
¡ 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](https://reader034.vdocuments.site/reader034/viewer/2022042614/5551172cb4c905b1138b4ce5/html5/thumbnails/4.jpg)
![Page 5: Clase 1 Programacion Android](https://reader034.vdocuments.site/reader034/viewer/2022042614/5551172cb4c905b1138b4ce5/html5/thumbnails/5.jpg)
![Page 6: Clase 1 Programacion Android](https://reader034.vdocuments.site/reader034/viewer/2022042614/5551172cb4c905b1138b4ce5/html5/thumbnails/6.jpg)
¡ Java JDK 1.6+ ¡ IDE Eclipse ¡ Android SDK ¡ AVD Manager ¡ Android Development Tools
![Page 7: Clase 1 Programacion Android](https://reader034.vdocuments.site/reader034/viewer/2022042614/5551172cb4c905b1138b4ce5/html5/thumbnails/7.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042614/5551172cb4c905b1138b4ce5/html5/thumbnails/8.jpg)
¡ View, ViewGroup, Layout, Adapter ¡ Intent, Action, Activity ¡ Toast, Dialog ¡ Options, Context Menu
![Page 9: Clase 1 Programacion Android](https://reader034.vdocuments.site/reader034/viewer/2022042614/5551172cb4c905b1138b4ce5/html5/thumbnails/9.jpg)
¡ Definir todas nuestras interfaces en XML. § Layouts, Colores, Fondos, Menús, Textos, Estados
¡ Enlazarlo en el código
![Page 10: Clase 1 Programacion Android](https://reader034.vdocuments.site/reader034/viewer/2022042614/5551172cb4c905b1138b4ce5/html5/thumbnails/10.jpg)
¡ Linear Layout ¡ Vertical Layout ¡ Relative Layout ¡ Table Layout ¡ ScrollView ¡ Etc….
![Page 11: Clase 1 Programacion Android](https://reader034.vdocuments.site/reader034/viewer/2022042614/5551172cb4c905b1138b4ce5/html5/thumbnails/11.jpg)
¡ Drawables § Imágenes, Selectores, Colores, 9 -‐ Patch
¡ Texto, Arreglos de Texto ¡ Selectores ¡ Menús
![Page 12: Clase 1 Programacion Android](https://reader034.vdocuments.site/reader034/viewer/2022042614/5551172cb4c905b1138b4ce5/html5/thumbnails/12.jpg)
![Page 13: Clase 1 Programacion Android](https://reader034.vdocuments.site/reader034/viewer/2022042614/5551172cb4c905b1138b4ce5/html5/thumbnails/13.jpg)
<?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](https://reader034.vdocuments.site/reader034/viewer/2022042614/5551172cb4c905b1138b4ce5/html5/thumbnails/14.jpg)
<?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](https://reader034.vdocuments.site/reader034/viewer/2022042614/5551172cb4c905b1138b4ce5/html5/thumbnails/15.jpg)
<?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](https://reader034.vdocuments.site/reader034/viewer/2022042614/5551172cb4c905b1138b4ce5/html5/thumbnails/16.jpg)
¡ 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](https://reader034.vdocuments.site/reader034/viewer/2022042614/5551172cb4c905b1138b4ce5/html5/thumbnails/17.jpg)
¡ La mejor forma de mostrar listas de datos. ¡ Componente ListView ¡ Crearemos un ListAdapter personalizado
![Page 18: Clase 1 Programacion Android](https://reader034.vdocuments.site/reader034/viewer/2022042614/5551172cb4c905b1138b4ce5/html5/thumbnails/18.jpg)
<?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](https://reader034.vdocuments.site/reader034/viewer/2022042614/5551172cb4c905b1138b4ce5/html5/thumbnails/19.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042614/5551172cb4c905b1138b4ce5/html5/thumbnails/20.jpg)
@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](https://reader034.vdocuments.site/reader034/viewer/2022042614/5551172cb4c905b1138b4ce5/html5/thumbnails/21.jpg)
@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](https://reader034.vdocuments.site/reader034/viewer/2022042614/5551172cb4c905b1138b4ce5/html5/thumbnails/22.jpg)
¡ Es una API para instanciar individualmente los layouts
¡ Podemos crear Items de listas a nuestra medida
![Page 23: Clase 1 Programacion Android](https://reader034.vdocuments.site/reader034/viewer/2022042614/5551172cb4c905b1138b4ce5/html5/thumbnails/23.jpg)
<?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](https://reader034.vdocuments.site/reader034/viewer/2022042614/5551172cb4c905b1138b4ce5/html5/thumbnails/24.jpg)
@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](https://reader034.vdocuments.site/reader034/viewer/2022042614/5551172cb4c905b1138b4ce5/html5/thumbnails/25.jpg)
¡ También definidos como Recursos XML ¡ Menús de Opciones y Contextuales
![Page 26: Clase 1 Programacion Android](https://reader034.vdocuments.site/reader034/viewer/2022042614/5551172cb4c905b1138b4ce5/html5/thumbnails/26.jpg)
@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](https://reader034.vdocuments.site/reader034/viewer/2022042614/5551172cb4c905b1138b4ce5/html5/thumbnails/27.jpg)
¡ Registrar para el Long Click ¡ Discriminar por ID de View
![Page 28: Clase 1 Programacion Android](https://reader034.vdocuments.site/reader034/viewer/2022042614/5551172cb4c905b1138b4ce5/html5/thumbnails/28.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042614/5551172cb4c905b1138b4ce5/html5/thumbnails/29.jpg)
¡ 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](https://reader034.vdocuments.site/reader034/viewer/2022042614/5551172cb4c905b1138b4ce5/html5/thumbnails/30.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042614/5551172cb4c905b1138b4ce5/html5/thumbnails/31.jpg)
¡ 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](https://reader034.vdocuments.site/reader034/viewer/2022042614/5551172cb4c905b1138b4ce5/html5/thumbnails/32.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042614/5551172cb4c905b1138b4ce5/html5/thumbnails/33.jpg)
¡ 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](https://reader034.vdocuments.site/reader034/viewer/2022042614/5551172cb4c905b1138b4ce5/html5/thumbnails/34.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042614/5551172cb4c905b1138b4ce5/html5/thumbnails/35.jpg)
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();