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.
5.
6. ¡ Java
JDK
1.6+
¡ IDE
Eclipse
¡ Android
SDK
¡ AVD
Manager
¡ Android
Development
Tools
16. ¡ 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);
17. ¡ La
mejor
forma
de
mostrar
listas
de
datos.
¡ Componente
ListView
¡ Crearemos
un
ListAdapter
personalizado
18. <?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"}));
}
}
19. 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;
}
20. @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;
}
21. @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;
}
}
22. ¡ Es
una
API
para
instanciar
individualmente
los
layouts
¡ Podemos
crear
Items
de
listas
a
nuestra
medida
28. 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;
}
29. ¡ 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.
31. ¡ Permite
definir
cuales
Activities
puedes
ser
llamadas
para
realizar
una
operación.
¡ Permite
integración
entre
aplicaciones.
¡ Incluso
intra-‐aplicación.
32. 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);
}
}
}
33. ¡ 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.
34. 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();
35. 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();