Beruflich Dokumente
Kultur Dokumente
Tecsup
LABORATORIO
Objetivos:
Introduccin:
En la presente sesin se detalla los fundamentos para el diseo de interfaces en Android.
Seguridad:
Preparacin:
Durante el desarrollo de los temas de clase se tendrn ejercicios explicativos en
cada uno de los puntos, ello le dar a la sesin una interaccin de la teora y la
parte prctica, ya que en todo el momento el alumno podr comprobar en su
propia PC, todos los tems del manual.
Procedimiento y Resultados:
Pg. 1
Tecsup
TextView
Revisar el video: Lab2_TextView
android.app.Activity;
android.os.Bundle;
android.view.Menu;
android.view.MenuItem;
Pg. 2
Tecsup
long
/>
/>
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Large Text"
android:textAppearance="?android:attr/textAppearanceLarge"
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Medium Text"
android:textAppearance="?android:attr/textAppearanceMedium"
Pg. 3
Tecsup
<TextView
android:id="@+id/textView4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Small Text"
android:textAppearance="?android:attr/textAppearanceSmall"
/>
</LinearLayout>
Pg. 4
Tecsup
Button
android.app.Activity;
android.os.Bundle;
android.view.Menu;
android.view.MenuItem;
android.view.View;
android.widget.Toast;
android.widget.ToggleButton;
Pg. 5
Tecsup
will
long
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar
// automatically handle clicks on the Home/Up button, so
Pg. 6
Tecsup
android:id="@+id/toggleButton1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textOn="Activo"
android:textOf="Inactivo"
android:onClick="cambiarEstado"
/>
<ImageButton
android:id="@+id/imageButton1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="Descripcin"
android:src="@drawable/ic_launcher"
android:onClick="procesar"
/>
</LinearLayout>
Pg. 7
Tecsup
ImageView y ScrollView
Revisar el video: Lab2_ImageView_ScrollView
android.app.Activity;
android.os.Bundle;
android.view.Menu;
android.view.MenuItem;
Pg. 8
Tecsup
will
long
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar
// automatically handle clicks on the Home/Up button, so
Pg. 9
Tecsup
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#dfdfdf"
android:textColor="#121212"
android:textSize="26dp"
android:text="Nombres"
android:layout_gravity="left"/>
<EditText
android:id="@+id/editText2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="text">
</EditText>
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#dfdfdf"
android:textColor="#121212"
android:textSize="26dp"
android:text="Correo"
android:layout_gravity="left"/>
<EditText
android:id="@+id/editText3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="textEmailAddress">
</EditText>
<TextView
android:id="@+id/textView4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#dfdfdf"
android:textColor="#121212"
android:textSize="26dp"
android:text="Celular"
android:layout_gravity="left"/>
<EditText
android:id="@+id/editText4"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="phone">
</EditText>
<TextView
android:id="@+id/textView6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
Dpto. de Informtica David Rodrguez - rcondezo@gmail.com
Pg. 10
Tecsup
android:background="#dfdfdf"
android:textColor="#121212"
android:textSize="26dp"
android:text="Correo alterno"
android:layout_gravity="left"/>
<EditText
android:id="@+id/editText6"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="textEmailAddress">
</EditText>
<Button
android:id="@+id/button1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Enviar" />
</LinearLayout>
</ScrollView>
Pg. 11
Tecsup
EditText
android.app.Activity;
android.os.Bundle;
android.view.Menu;
android.view.MenuItem;
Pg. 12
Tecsup
will
long
Pg. 13
Tecsup
Pg. 14
Tecsup
AutoCompleteTextView
Revisar el video: Lab2_AutoCompleteTextView
android.app.Activity;
android.os.Bundle;
android.text.Editable;
android.text.TextWatcher;
android.util.Log;
android.view.Menu;
android.view.MenuItem;
android.view.View;
android.widget.ArrayAdapter;
android.widget.AutoCompleteTextView;
Pg. 15
Tecsup
AutoCompleteTextView myAutoComplete =
(AutoCompleteTextView) findViewById(R.id.autoCompleteTextView1);
myAutoComplete.addTextChangedListener(this);
myAutoComplete.setAdapter(new ArrayAdapter<String>(this,
android.R.layout.simple_dropdown_item_1line, zonas));
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if
it is present.
getMenuInflater().inflate(R.menu.auto_completar, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar
will
long
Pg. 16
Tecsup
}
Modificamos el layout asociado al Activity:
activity_auto_completar.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/LinearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<AutoCompleteTextView
android:id="@+id/autoCompleteTextView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:completionThreshold="1"
android:ems="10"
android:hint="Escriba aqu" />
<Button
android:id="@+id/button1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="enviar"
android:text="Enviar" />
</LinearLayout>
Pg. 17
Tecsup
CheckBox y RadioButton
android.app.Activity;
android.os.Bundle;
android.view.Menu;
android.view.MenuItem;
android.view.View;
android.widget.CheckBox;
android.widget.RadioButton;
android.widget.Toast;
Pg. 18
Tecsup
getMenuInflater().inflate(R.menu.check_box_radio_group,
menu);
return true;
will
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar
// automatically handle clicks on the Home/Up button, so
long
Pg. 19
Tecsup
Pg. 20
Tecsup
android:id="@+id/radioGroup1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<RadioButton
android:id="@+id/radio0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:text="Masculino" />
<RadioButton
android:id="@+id/radio1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Femenino" />
</RadioGroup>
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="Enviar"
android:onClick="enviar" />
</LinearLayout>
Pg. 21
Tecsup
ProgressBar
android.app.Activity;
android.app.ProgressDialog;
android.os.Bundle;
android.os.Handler;
android.view.Menu;
android.view.MenuItem;
android.view.View;
Pg. 22
Tecsup
will
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar
// automatically handle clicks on the Home/Up button, so
long
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
// Actualizar el progress bar
progressBarHandler.post(new Runnable() {
public void run() {
progressBar.setProgress(progressBarStatus);
}
});
}
Dpto. de Informtica David Rodrguez - rcondezo@gmail.com
Pg. 23
Tecsup
}
}).start();
Pg. 24
Tecsup
android:layout_height="wrap_content"
android:onClick="lanzar2"
android:text="ProgressBar" />
</LinearLayout>
Pg. 25
Tecsup
SeekBar
android.app.Activity;
android.os.Bundle;
android.view.Menu;
android.view.MenuItem;
android.widget.EditText;
android.widget.SeekBar;
Pg. 26
Tecsup
});
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if
it is present.
getMenuInflater().inflate(R.menu.seek_bar, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar
will
long
Pg. 27
Tecsup
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Nmero de entradas a comprar:"
android:textAppearance="?android:attr/textAppearanceMedium"
/>
<SeekBar
android:id="@+id/seekBar1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:max="5" />
<EditText
android:id="@+id/editText1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="number" >
<requestFocus />
</EditText>
</LinearLayout>
Pg. 28
Tecsup
android.app.Activity;
android.os.Bundle;
android.util.Log;
android.view.Menu;
android.view.MenuItem;
android.view.View;
android.widget.AdapterView;
android.widget.ArrayAdapter;
android.widget.Spinner;
android.widget.Toast;
Pg. 29
Tecsup
ha seleccionado",
}
});
Toast.makeText(ArrayAdapterActivity.this, "No
Toast.LENGTH_LONG).show();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if
it is present.
getMenuInflater().inflate(R.menu.array_adapter, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar
will
long
Pg. 30
Tecsup
Spinner s =
(Spinner)findViewById(R.id.desplegable_cursos);
Log.i("==>", s.getSelectedItem().toString());
}
}
Pg. 31
Tecsup
ArrayAdapter2Activity.java
package cursoandroid.lab02;
import
import
import
import
import
import
import
import
android.app.Activity;
android.os.Bundle;
android.view.Menu;
android.view.MenuItem;
android.widget.AdapterView;
android.widget.ArrayAdapter;
android.widget.GridView;
android.widget.Toast;
Pg. 32
Tecsup
});
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if
it is present.
getMenuInflater().inflate(R.menu.array_adapter2, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar
will
long
Pg. 33
Tecsup
activity_array_adapter2.xml
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/LinearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<GridView
android:id="@+id/grilla_opciones"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:columnWidth="80dip"
android:horizontalSpacing="5dp"
android:numColumns="auto_fit"
android:stretchMode="columnWidth"
android:verticalSpacing="10dp" />
</LinearLayout>
Pg. 34
Tecsup
SimpleAdapter ListView
Revisar el video: Lab2_SimpleAdapter_ListView
android.app.Activity;
android.os.Bundle;
android.view.Menu;
android.view.MenuItem;
android.widget.ListView;
android.widget.SimpleAdapter;
Pg. 35
Tecsup
setContentView(R.layout.activity_simple_adapter);
String[] from = new String[] { "Time", "Name", "Desc" };
int[] to = new int[] { R.id.hora, R.id.nombre, R.id.desc1
};
lista.add(evento1);
lista.add(evento2);
lista.add(evento3);
ArrayList<HashMap<String, String>> eventos = new
ArrayList<HashMap<String, String>>();
for (String[] evento : lista) {
HashMap<String, String> datosEvento = new
HashMap<String, String>();
datosEvento.put("Time", evento[0]);
datosEvento.put("Name", evento[1]);
datosEvento.put("Desc", evento[2]);
datosEvento.put("id", evento[3]);
}
eventos.add(datosEvento);
will
long
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar
// automatically handle clicks on the Home/Up button, so
Pg. 36
Tecsup
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
Pg. 37
Tecsup
/>
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingBottom="5dp">
<TextView android:id="@+id/nombre"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20dp"
/>
<TextView android:id="@+id/desc1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="14dp"
/>
</LinearLayout>
</LinearLayout>
Pg. 38
Tecsup
SimpleCursorAdapter - ListView
android.app.Activity;
android.database.Cursor;
android.database.MatrixCursor;
android.os.Bundle;
android.view.Menu;
android.view.MenuItem;
android.widget.ListView;
android.widget.SimpleCursorAdapter;
Pg. 39
Tecsup
long
Pg. 40
Tecsup
Pg. 41
Tecsup
<TextView
android:id="@+id/codigo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView" />
</TableRow>
<TableRow
android:id="@+id/tableRow2"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Nombre: "
android:textAppearance="?
android:attr/textAppearanceMedium" />
<TextView
android:id="@+id/nombre"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView" />
</TableRow>
<TableRow
android:id="@+id/tableRow3"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView2"
android:layout_below="@+id/textView2"
android:text="Continente: "
android:textAppearance="?
android:attr/textAppearanceMedium" />
<TextView
android:id="@+id/continente"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView" />
</TableRow>
<TableRow
android:id="@+id/tableRow4"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/textView4"
Dpto. de Informtica David Rodrguez - rcondezo@gmail.com
Pg. 42
Tecsup
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Regin: "
android:textAppearance="?
android:attr/textAppearanceMedium" />
<TextView
android:id="@+id/region"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView" />
</TableRow>
</TableLayout>
</LinearLayout>
Pg. 43
Tecsup
Adaptador Personalizado
android.app.Activity;
android.os.Bundle;
android.util.SparseArray;
android.view.Menu;
android.view.MenuItem;
android.widget.ExpandableListView;
Pg. 44
Tecsup
ampliableVista.setAdapter(adapter);
}
public void cargarDatos() {
for (int j = 0; j < 5; j++) {
AmpliableGrupo grupo = new AmpliableGrupo("Categora
" + j);
for (int i = 0; i < 3; i++) {
grupo.children.add("Sub Categora " + i);
}
grupos.append(j, grupo);
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if
it is present.
getMenuInflater().inflate(R.menu.adaptador_personalizado,
menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar
will
long
Pg. 45
Tecsup
<ExpandableListView
android:id="@+id/listaAmpliable"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</ExpandableListView>
</LinearLayout>
Pg. 46
Tecsup
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@android:color/black" />
</LinearLayout>
Nota: Agregar una nueva Clase Java llamada AmpliableGrupo.java en el paquete de
clases.
AmpliableGrupo.java
package cursoandroid.lab02;
import java.util.ArrayList;
import java.util.List;
public class AmpliableGrupo {
public String titulo;
public final List<String> children = new ArrayList<String>();
public AmpliableGrupo(String titulo) {
this.titulo = titulo;
}
}
Nota: Agregar una nueva Clase Java llamada AmpliableAdapter.java en el paquete de
clases.
AmpliableAdapter.java
package cursoandroid.lab02;
import
import
import
import
import
import
import
import
import
import
android.app.Activity;
android.util.SparseArray;
android.view.LayoutInflater;
android.view.View;
android.view.View.OnClickListener;
android.view.ViewGroup;
android.widget.BaseExpandableListAdapter;
android.widget.CheckedTextView;
android.widget.TextView;
android.widget.Toast;
Pg. 47
Tecsup
inflater = act.getLayoutInflater();
}
@Override
public Object getChild(int groupPosition, int childPosition) {
return
grupos.get(groupPosition).children.get(childPosition);
}
@Override
public long getChildId(int groupPosition, int childPosition) {
return 0;
}
@Override
public View getChildView(int groupPosition, final int
childPosition,
boolean isLastChild, View convertView, ViewGroup
parent) {
final String children = (String) getChild(groupPosition,
childPosition);
TextView text = null;
if (convertView == null) {
convertView =
inflater.inflate(R.layout.ampliable_grupo, null);
}
text = (TextView)
convertView.findViewById(R.id.textView1);
text.setText(children);
convertView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(activity, children,
Toast.LENGTH_SHORT).show();
}
});
return convertView;
}
@Override
public int getChildrenCount(int groupPosition) {
return grupos.get(groupPosition).children.size();
}
@Override
public Object getGroup(int groupPosition) {
return grupos.get(groupPosition);
}
@Override
public int getGroupCount() {
return grupos.size();
}
@Override
public void onGroupCollapsed(int groupPosition) {
super.onGroupCollapsed(groupPosition);
Dpto. de Informtica David Rodrguez - rcondezo@gmail.com
Pg. 48
Tecsup
}
@Override
public void onGroupExpanded(int groupPosition) {
super.onGroupExpanded(groupPosition);
}
@Override
public long getGroupId(int groupPosition) {
return 0;
}
@Override
public View getGroupView(int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
if (convertView == null) {
convertView =
inflater.inflate(R.layout.ampliable_grupo, null);
}
AmpliableGrupo grupo = (AmpliableGrupo)
getGroup(groupPosition);
((CheckedTextView) convertView).setText(grupo.titulo);
((CheckedTextView) convertView).setChecked(isExpanded);
return convertView;
}
@Override
public boolean hasStableIds() {
return false;
}
@Override
public boolean isChildSelectable(int groupPosition, int
childPosition) {
return false;
}
}
Pg. 49
Tecsup
Ejercicios Propuestos
Disear las siguientes pantallas en Android:
Pg. 50
Tecsup
Pestaas
android.app.Activity;
android.os.Bundle;
android.view.Menu;
android.view.MenuItem;
android.widget.TabHost;
Pg. 51
Tecsup
spec.setContent(R.id.pestania2);
spec.setIndicator("Servicios");
tabs.addTab(spec);
spec=tabs.newTabSpec("pes3");
spec.setContent(R.id.pestania3);
spec.setIndicator("Contacto");
tabs.addTab(spec);
tabs.setCurrentTab(0);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if
it is present.
getMenuInflater().inflate(R.menu.tabs, menu);
return true;
}
will
long
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar
// automatically handle clicks on the Home/Up button, so
Pg. 52
Tecsup
android:orientation="vertical" >
<TabWidget
android:id="@android:id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<LinearLayout
android:id="@+id/pestania1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
</LinearLayout>
<LinearLayout
android:id="@+id/pestania2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
</LinearLayout>
<LinearLayout
android:id="@+id/pestania3"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
</LinearLayout>
</FrameLayout>
</LinearLayout>
</TabHost>
</LinearLayout>
Pg. 53
Tecsup
ActionBar y Estilos
Revisar el video: Lab2_ActionBar_Estilos
android.support.v7.app.ActionBarActivity;
android.os.Bundle;
android.view.Menu;
android.view.MenuItem;
android.widget.Toast;
Pg. 54
Tecsup
Pg. 55
Tecsup
Pg. 56
Tecsup
Pg. 57
Tecsup
Men Contextual
android.app.Activity;
android.os.Bundle;
android.view.ContextMenu;
android.view.ContextMenu.ContextMenuInfo;
android.view.Menu;
android.view.MenuInflater;
android.view.MenuItem;
android.view.View;
android.widget.TextView;
Pg. 58
Tecsup
will
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar
// automatically handle clicks on the Home/Up button, so
long
switch (item.getItemId()) {
case R.id.CtxLblOpc1:
lblMensaje.setText("Etiqueta: Opcion 1 pulsada!");
return true;
case R.id.CtxLblOpc2:
lblMensaje.setText("Etiqueta: Opcion 2 pulsada!");
return true;
default:
return super.onContextItemSelected(item);
}
}
Dpto. de Informtica David Rodrguez - rcondezo@gmail.com
Pg. 59
Tecsup
Pg. 60
Tecsup
android.app.Activity;
android.os.Bundle;
android.view.ContextMenu;
android.view.ContextMenu.ContextMenuInfo;
android.view.Menu;
android.view.MenuInflater;
android.view.MenuItem;
android.view.View;
android.widget.AdapterView;
android.widget.ArrayAdapter;
android.widget.ListView;
android.widget.Toast;
Pg. 61
Tecsup
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_lista_menu_contextual);
lstLista = (ListView) findViewById(R.id.LstLista);
String[] datos = new String[] { "Elem1", "Elem2",
"Elem3", "Elem4",
"Elem5" };
ArrayAdapter<String> adaptador = new
ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,
datos);
lstLista.setAdapter(adaptador);
registerForContextMenu(lstLista);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if
it is present.
getMenuInflater().inflate(R.menu.lista_menu_contextual,
menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar
will
long
Pg. 62
Tecsup
}
Modificamos el layout asociado al Activity:
activity_lista_menu_contextual.xml
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/LinearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<ListView
android:id="@+id/LstLista"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true" >
</ListView>
</LinearLayout>
Nota: Crear el archivo en /res/menu/menu_context_lista.xml:
menu_context_lista.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/CtxLstOpc1"
android:title="OpcLista1">
</item>
<item
android:id="@+id/CtxLstOpc2"
android:title="OpcLista2">
</item>
</menu>
Pg. 63
Tecsup
android.app.ActionBar;
android.app.Activity;
android.app.Fragment;
android.os.Bundle;
android.view.Menu;
android.view.MenuItem;
Pg. 64
Tecsup
will
long
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar
// automatically handle clicks on the Home/Up button, so
Pg. 65
Tecsup
<LinearLayout
android:id="@+id/tabs_contenedor"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="58dp"
android:layout_marginTop="69dp"
android:orientation="vertical" >
</LinearLayout>
</LinearLayout>
Nota: Crear la clase Java en el paquete mod1.lab3:
MiTabListener.java
package cursoandroid.lab2;
import
import
import
import
import
android.app.ActionBar.Tab;
android.app.ActionBar.TabListener;
android.app.Fragment;
android.app.FragmentTransaction;
android.util.Log;
Pg. 66
Tecsup
android.app.Fragment;
android.os.Bundle;
android.view.LayoutInflater;
android.view.View;
android.view.ViewGroup;
android.app.Fragment;
android.os.Bundle;
android.view.LayoutInflater;
android.view.View;
android.view.ViewGroup;
Pg. 67
Tecsup
Pg. 68
Tecsup
Pg. 69
Tecsup
java.util.Calendar;
java.util.GregorianCalendar;
java.util.Timer;
java.util.TimerTask;
import
import
import
import
import
android.app.Service;
android.content.Intent;
android.os.Handler;
android.os.IBinder;
android.widget.Toast;
Pg. 70
Tecsup
GregorianCalendar();
@Override
public void run() {
GregorianCalendar gc = new
Pg. 71
Tecsup
Widget
Revisar el video: Lab2_Widget
android.appwidget.AppWidgetManager;
android.appwidget.AppWidgetProvider;
android.content.ComponentName;
android.content.Context;
android.util.Log;
android.widget.RemoteViews;
context,
AppWidgetManager
Pg. 72
Tecsup
RemoteViews
remoteViews
=
new
RemoteViews(context.getPackageName(), R.layout.widget_saludo);
remoteViews.setTextViewText(R.id.txtMensaje, "Bienvenido
jugador");
appWidgetManager.updateAppWidget(widgetId, remoteViews);
}
Pg. 73
Tecsup
<receiver
android:name=".SaludoWidget"
android:label="Ejemplo de Widget" >
<intent-filter>
<action
android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/menu_widget_saludo" />
</receiver>
Pg. 74
Tecsup
Conclusiones:
En la presente sesin, se detall el diseo de interfaces en Android junto con sus
componentes ms importantes de la tecnologa.
Pg. 75