Clase 1 Programacion Android
-
Upload
ernesto-freyre-gonzalez -
Category
Education
-
view
1.006 -
download
1
description
Transcript of Clase 1 Programacion Android
Clase 1/2
¡ Introduccion ¡ Herramientas ¡ Hola Mundo ¡ Interfaces de Usuario ¡ Views, Layouts, Adapters ¡ Intents, Actions ¡ Toast, Dialogs, Status Bar ¡ Options, Context Menu
¡ Sistema Operativo Movil ¡ Basado en Linux ¡ Open Handset Alliance ¡ Google principal empresa detrás de su desarrollo.
¡ +50% cuota mercado mundial smartphones
¡ Java JDK 1.6+ ¡ IDE Eclipse ¡ Android SDK ¡ AVD Manager ¡ Android Development Tools
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>
¡ View, ViewGroup, Layout, Adapter ¡ Intent, Action, Activity ¡ Toast, Dialog ¡ Options, Context Menu
¡ Definir todas nuestras interfaces en XML. § Layouts, Colores, Fondos, Menús, Textos, Estados
¡ Enlazarlo en el código
¡ Linear Layout ¡ Vertical Layout ¡ Relative Layout ¡ Table Layout ¡ ScrollView ¡ Etc….
¡ Drawables § Imágenes, Selectores, Colores, 9 -‐ Patch
¡ Texto, Arreglos de Texto ¡ Selectores ¡ Menús
<?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>
<?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>
<?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>
¡ 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);
¡ La mejor forma de mostrar listas de datos. ¡ Componente ListView ¡ Crearemos un ListAdapter personalizado
<?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"})); }}
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;}
@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;}
@Overridepublic void registerDataSetObserver(DataSetObserver arg0) { }
@Overridepublic void unregisterDataSetObserver(DataSetObserver arg0) { }
@Overridepublic boolean areAllItemsEnabled() { return true;}
@Overridepublic boolean isEnabled(int arg0) { return true;}
}
¡ Es una API para instanciar individualmente los layouts
¡ Podemos crear Items de listas a nuestra medida
<?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>
@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;
}
¡ También definidos como Recursos XML ¡ Menús de Opciones y Contextuales
@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;}
¡ Registrar para el Long Click ¡ Discriminar por ID de View
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;
}
¡ 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.
startActivity(new Intent(this, MensajeActivity.class));startActivityForResult(
new Intent(this, MensajeActivity.class), 13);@Overrideprotected void onActivityResult(int requestCode,
int resultCode, Intent data) {// ...
}
¡ Permite definir cuales Activities puedes ser llamadas para realizar una operación.
¡ Permite integración entre aplicaciones. ¡ Incluso intra-‐aplicación.
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); }
}}
¡ 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.
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();
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();