Académique Documents
Professionnel Documents
Culture Documents
Tecsup
LABORATORIO
Objetivos:
Introduccin:
En la presente sesin se detalla los fundamentos para el diseo de interfaces Web para
mviles.
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
PUESTA EN MARCHA
1) Configuraciones iniciales del proyecto Android
android:theme="@style/AppTheme">
allowBackup: Por defecto est en true. Cuando est en true los datos de la aplicacin
pueden ser copiados para seguridad y luego restaurados. Esto puede traer
consecuencias de seguridad porque si el Smartphone tiene habilitado el USB
Debugging entonces se podr copiar esos datos fuera del dispositivo.
<resources>
<stylename="AppBaseTheme"parent="android:Theme.Light">
<!
ThemecustomizationsavailableinnewerAPIlevelscangoin
res/valuesvXX/styles.xml,whilecustomizationsrelatedto
backwardcompatibilitycangohere.
>
</style>
<!Applicationtheme.>
<stylename="AppTheme"parent="AppBaseTheme">
<!AllcustomizationsthatareNOTspecifictoaparticularAPIlevel
cangohere.>
<itemname="android:layout_width">match_parent</item>
<itemname="android:layout_height">wrap_content</item>
<itemname="android:textColor">#ff0000</item>
<itemname="android:typeface">serif</item>
</style>
</resources>
Pg. 2
Tecsup
<activity
android:name=".MainActivity"
android:label="Bienvenido">
<intentfilter>
<actionandroid:name="android.intent.action.MAIN"/>
<categoryandroid:name="android.intent.category.LAUNCHER"/>
</intentfilter>
</activity>
Pg. 3
Tecsup
3) Clase Activity
El Activity es una Clase de Java subclase de Activity y que controla el ciclo de vida
de la aplicacin.
MainActivity.java
package mod1.lab1;
import
import
import
import
android.app.Activity;
android.os.Bundle;
android.view.Menu;
android.view.MenuItem;
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it
is present.
getMenuInflater().inflate(R.menu.main, 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. 4
Tecsup
4) Archivo /res/layout/activity_main.xml
activity_main.xml
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
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.lab1.MainActivity" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" />
</RelativeLayout>
5) Archivo /res/menu/activity_main.xml
<menuxmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/menu_settings"
android:orderInCategory="100"
android:showAsAction="never"
android:title="@string/menu_settings"/>
</menu>
Pg. 5
Tecsup
Pg. 6
Tecsup
LAYOUTS
En el material terico se detallan los tipos de Layouts:
a)
b)
c)
d)
e)
f)
GridLayout
LinearLayout (vertical y horizontal)
RelativeLayout (Layout usado por defecto en Eclipse)
FrameLayout (Layout contenedor usado por defecto en Eclipse)
TableLayout
Fragment
Pg. 7
Tecsup
GridLayout
GridLayoutActivity.java
package mod1.lab1;
import
import
import
import
android.app.Activity;
android.os.Bundle;
android.view.Menu;
android.view.MenuItem;
Pg. 8
Tecsup
activity_grid_layout.xml
<GridLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/GridLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:columnCount="3"
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.lab1.GridLayoutActivity">
<ImageView
android:id="@+id/imageView1"
android:layout_width="80dp"
android:layout_height="80dp"
android:src="@drawable/baladas" />
<ImageView
android:id="@+id/imageView2"
android:layout_width="80dp"
android:layout_height="80dp"
android:src="@drawable/espiritual" />
<ImageView
android:id="@+id/imageView3"
android:layout_width="80dp"
android:layout_height="80dp"
android:src="@drawable/pop_rock" />
<ImageView
android:id="@+id/imageView4"
android:layout_width="80dp"
android:layout_height="80dp"
android:src="@drawable/pop" />
<ImageView
android:id="@+id/imageView5"
android:layout_width="80dp"
android:layout_height="80dp"
android:src="@drawable/rb" />
<ImageView
android:id="@+id/imageView6"
android:layout_width="80dp"
android:layout_height="80dp"
android:src="@drawable/reggae" />
</GridLayout>
Pg. 9
Tecsup
EJERCICIO
Disear la siguiente pantalla con GridLayout:
Pg. 10
Tecsup
LinearLayout
Disear una pantalla que permita buscar canciones. Configurar los valores de
orientation: vertical y horizontal.
Programar el mtodo de ejecucin del botn.
Pg. 11
Tecsup
LinearLayoutActivity.java
package mod1.lab1;
import
import
import
import
import
android.app.Activity;
android.content.pm.ActivityInfo;
android.os.Bundle;
android.view.Menu;
android.view.MenuItem;
Pg. 12
Tecsup
activity_linear_layout.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.lab1.LinearLayoutActivity" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Buscar cancin"
android:textAppearance="?android:attr/textAppearanceMedium"
/>
<EditText
android:id="@+id/editText1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10" >
<requestFocus />
</EditText>
<Button
android:id="@+id/button1"
android:layout_width="285dp"
android:layout_height="wrap_content"
android:onClick="buscar"
android:text="Buscar" />
</LinearLayout>
Pg. 13
Tecsup
EJERCICIO
Disear las siguientes pantallas:
Pg. 14
Tecsup
TableLayout
TableLayoutActivity.java
package mod1.lab1;
import
import
import
import
android.app.Activity;
android.os.Bundle;
android.view.Menu;
android.view.MenuItem;
Pg. 15
Tecsup
activity_table_layout.xml
<TableLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/TableLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
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.lab1.TableLayoutActivity" >
<TableRow>
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Usuario: " />
<EditText
android:id="@+id/editText1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10" >
<requestFocus />
</EditText>
</TableRow>
<TableRow>
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Clave: " />
<EditText
android:id="@+id/editText2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="textPassword" >
<requestFocus />
</EditText>
</TableRow>
<TableRow>
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
Dpto. de Informtica David Rodrguez - rcondezo@gmail.com
Pg. 16
Tecsup
android:layout_span="2"
android:text="Ingresar" />
</TableRow>
</TableLayout>
Pg. 17
Tecsup
EJERCICIO
Disear la siguiente pantalla:
Pg. 18
Tecsup
Fragment
FragmentsActivity.java
package mod1.lab1;
import
import
import
import
import
import
import
import
android.app.Activity;
android.app.Fragment;
android.app.FragmentManager;
android.app.FragmentTransaction;
android.os.Bundle;
android.view.Menu;
android.view.MenuItem;
android.view.View;
Pg. 19
Tecsup
Pg. 20
Tecsup
activity_fragments.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<Button
android:id="@+id/button1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Fragmento 1"
android:onClick="cambiarFragmento" />
<Button
android:id="@+id/button2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="cambiarFragmento"
android:text="Fragmento 2" />
<fragment
android:name="mod1.lab1.FragmentoUno"
android:id="@+id/fragmento_principal"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
Pg. 21
Tecsup
importandroid.app.Fragment;
importandroid.os.Bundle;
importandroid.view.LayoutInflater;
importandroid.view.View;
importandroid.view.ViewGroup;
importcurso.android.R;
publicclassFragmentoUnoextendsFragment{
@Override
publicViewonCreateView(LayoutInflaterinflater,ViewGroup
container,
BundlesavedInstanceState){
returninflater.inflate(R.layout.fragmento_uno,container,
false);
}
}
packagecurso.android.layouts.fragments;
importandroid.app.Fragment;
importandroid.os.Bundle;
importandroid.view.LayoutInflater;
importandroid.view.View;
importandroid.view.ViewGroup;
importcurso.android.R;
publicclassFragmentoDosextendsFragment{
@Override
publicViewonCreateView(LayoutInflaterinflater,ViewGroup
container,
BundlesavedInstanceState){
returninflater.inflate(R.layout.fragmento_dos,container,
false);
}
}
Pg. 22
Tecsup
<TextView
android:id="@+id/textView1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="EsteeselFragmento1"
android:textStyle="bold"/>
</LinearLayout>
fragmento_dos.xml
<?xmlversion="1.0"encoding="utf8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/textView2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="Esteeselfragmento2"
android:textStyle="bold"/>
</LinearLayout>
Pg. 23
Tecsup
Conclusiones:
En la presente sesin, se detall el entorno para el desarrollo de aplicaciones mviles en
Android.
Pg. 24