Académique Documents
Professionnel Documents
Culture Documents
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
Pestaas
TabsActivity.java
package mod1.lab3;
import
import
import
import
import
android.app.Activity;
android.os.Bundle;
android.view.Menu;
android.view.MenuItem;
android.widget.TabHost;
Pg. 2
Tecsup
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;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar
will
// automatically handle clicks on the Home/Up button, so
long
// as you specify a parent activity in
AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
Pg. 3
Tecsup
activity_tabs.java
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TabHost
android:id="@android:id/tabhost"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
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. 4
Tecsup
ActionBar y Estilos
MenuPrincipalActivity.java
package mod1.lab3;
import
import
import
import
import
android.app.Activity;
android.os.Bundle;
android.view.Menu;
android.view.MenuItem;
android.widget.Toast;
Pg. 5
Tecsup
switch (item.getItemId()) {
case android.R.id.home:
Toast.makeText(this, "Seleccionado el cono ",
Toast.LENGTH_SHORT).show();
return true;
case R.id.MnuOpc1:
Toast.makeText(this, "Seleccionado la opcin 1: ",
Toast.LENGTH_SHORT).show();
return true;
case R.id.MnuOpc2:
Toast.makeText(this, "Seleccionado la opcin 2: ",
Toast.LENGTH_SHORT).show();
return true;
case R.id.MnuOpc3:
Toast.makeText(this, "Seleccionado la opcin 3: ",
Toast.LENGTH_SHORT).show();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
}
Pg. 6
Tecsup
activity_menu_principal.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"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="mod1.lab3.MenuPrincipalActivity" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Ver las opciones del Men" />
</LinearLayout>
Pg. 7
Tecsup
Pg. 8
Tecsup
Pg. 9
Tecsup
Men Contextual
MenuContextualActivity.java
package mod1.lab3;
import
import
import
import
import
import
import
import
import
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. 10
Tecsup
registerForContextMenu(lblMensaje);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if
it is present.
getMenuInflater().inflate(R.menu.menu_contextual, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar
will
// automatically handle clicks on the Home/Up button, so
long
// as you specify a parent activity in
AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu_context_item, menu);
}
@Override
public boolean onContextItemSelected(MenuItem item) {
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);
}
}
}
Pg. 11
Tecsup
activity_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"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin" >
<TextView
android:id="@+id/LblMensaje"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:text="Men contextual (mantenga presionado aqu)" />
</LinearLayout>
Pg. 12
Tecsup
Pg. 13
Tecsup
ListaMenuContextualActivity.java
package mod1.lab3;
import
import
import
import
import
import
import
import
import
import
import
import
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. 14
Tecsup
Pg. 15
Tecsup
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"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin" >
<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>
Pg. 16
Tecsup
Pg. 17
Tecsup
TabsActionBarActivity.java
package mod1.lab3;
import
import
import
import
import
import
android.app.ActionBar;
android.app.Activity;
android.app.Fragment;
android.os.Bundle;
android.view.Menu;
android.view.MenuItem;
Pg. 18
Tecsup
Pg. 19
Tecsup
activity_tabs_action_bar.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"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin" >
<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>
Pg. 20
Tecsup
android.app.ActionBar.Tab;
android.app.ActionBar.TabListener;
android.app.Fragment;
android.app.FragmentTransaction;
android.util.Log;
Pg. 21
Tecsup
android.app.Fragment;
android.os.Bundle;
android.view.LayoutInflater;
android.view.View;
android.view.ViewGroup;
Pg. 22
Tecsup
android.app.Fragment;
android.os.Bundle;
android.view.LayoutInflater;
android.view.View;
android.view.ViewGroup;
Pg. 23
Tecsup
Pg. 24
Tecsup
Pg. 25
Tecsup
Pg. 26
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. 27
Tecsup
Pg. 28
Tecsup
Widget
android.appwidget.AppWidgetManager;
android.appwidget.AppWidgetProvider;
android.content.ComponentName;
android.content.Context;
android.util.Log;
android.widget.RemoteViews;
Pg. 29
Tecsup
remoteViews.setTextViewText(R.id.txtMensaje, "Bienvenido
jugador");
appWidgetManager.updateAppWidget(widgetId, remoteViews);
}
}
Pg. 30
Tecsup
Pg. 31
Tecsup
<receiver
android:name="mod1.lab3.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="@menu/widget_saludo" />
</receiver>
Conclusiones:
En la presente sesin, se detall el diseo de interfaces en Android.
Pg. 32