SlideShare una empresa de Scribd logo
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	
  

	
  
Clase 1 Programacion Android
Clase 1 Programacion Android
¡  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	
  
Clase 1 Programacion Android
<?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;	
      	}	
	
      	@Override	
      	public int getCount() {	
      	       	return strings.length;	
      	}	
	
      	@Override	
      	public Object getItem(int arg0) {	
      	       	return strings[arg0];	
      	}	
	
      	@Override	
      	public long getItemId(int arg0) {	
      	       	return 0;	
      	}	
	
      		
  
@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;	
    	}	
  
@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;	
        	}	
	
}	
  
¡  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>	
  
@Override	
public 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	
  
@Override	
public boolean onCreateOptionsMenu(Menu menu) {	
      	MenuInflater inflater = getMenuInflater();	
      	inflater.inflate(R.menu.hola, menu);	
      	return true;	
}	
	
@Override	
public 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);	
	
@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;	
}	
  
¡  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);	
	
	
@Override	
protected 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);	
	
	
  
@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);	
      	    }	
      	}	
}	
  
¡  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();	
  

Más contenido relacionado

PDF
Carlos blanco resumen mm android controles 10pag v5
DOCX
Php excel
PPT
RTF
Wp config.php
PDF
Manual de programador sistema experto bovino online
PDF
Doctrine2 sf2Vigo
PDF
Customizer: configurando un sitio en tiempo real
PDF
Documentacion
Carlos blanco resumen mm android controles 10pag v5
Php excel
Wp config.php
Manual de programador sistema experto bovino online
Doctrine2 sf2Vigo
Customizer: configurando un sitio en tiempo real
Documentacion

Destacado (20)

PPTX
Megan Summers Foundation Portfolio Evaluation
PPS
106 Tombelaneige adamo
PPT
Blacklock Associates Ltd
PDF
How to sai
PDF
Hong kong and Macaywww.Tripmart.com
PPTX
Evaluating music magazine q6pptxjz new
PPTX
Media evaluation music mag ew
PPTX
Matilde's civilization project 5M
PPSX
Consumer Basics for Renewable Energy
PPT
Määramatus 4
PPT
KEY
Evaluation question 6
PDF
Creating Brand Advocates
PDF
Thesis presentation
PPT
ьрплплбплр
PDF
ใบงานที่ 7 เรื่อง โครงงานประเภท
ODS
Trabajos de mates
PPTX
беслан
DOCX
Newspaper analysis 3
PPT
собрание егэ 2014
Megan Summers Foundation Portfolio Evaluation
106 Tombelaneige adamo
Blacklock Associates Ltd
How to sai
Hong kong and Macaywww.Tripmart.com
Evaluating music magazine q6pptxjz new
Media evaluation music mag ew
Matilde's civilization project 5M
Consumer Basics for Renewable Energy
Määramatus 4
Evaluation question 6
Creating Brand Advocates
Thesis presentation
ьрплплбплр
ใบงานที่ 7 เรื่อง โครงงานประเภท
Trabajos de mates
беслан
Newspaper analysis 3
собрание егэ 2014
Publicidad

Similar a Clase 1 Programacion Android (20)

PDF
ANDROID BOOTCAMP 101: MI PRIMERA APLICACIÓN ANDROID - CÓMO INICIAR UN EMPREND...
PDF
Android bootcamp 101 v2.0
DOCX
Tutorial Nro. 2 de Desarollo de Aplicaciones Móviles con Android
PPT
Android Bootcamp - GTUG Uruguay
DOCX
Aplicaciones moviles clase9 listas
DOCX
Hola mundo1
PDF
LabAndroid: Taller "Mi Primera Aplicación Android"
DOCX
Parte II. Notas Rapidas (sticky notes) App W8: MVVM y SQLite.
DOCX
Documento de eloy
DOCX
Tutorial Nro 1 de Desarrollo de Aplicaciones Móviles con Android
PPTX
Las aplicasiones de androi ddd
PDF
Preguntasviri
PPSX
PDF
Aplicación móvil con acceso a datos
PDF
REPORTES JASPERREPORT E IREPORT SIN CONEXIÓN A UNA BBDD
PPT
Introduccion a Android
PDF
Modelo vista controlador
PPTX
3A Android Controls aprende a programar
PDF
Codemotion 2017 - Taller de JHipster
DOCX
Practicas android studio efrain (1)
ANDROID BOOTCAMP 101: MI PRIMERA APLICACIÓN ANDROID - CÓMO INICIAR UN EMPREND...
Android bootcamp 101 v2.0
Tutorial Nro. 2 de Desarollo de Aplicaciones Móviles con Android
Android Bootcamp - GTUG Uruguay
Aplicaciones moviles clase9 listas
Hola mundo1
LabAndroid: Taller "Mi Primera Aplicación Android"
Parte II. Notas Rapidas (sticky notes) App W8: MVVM y SQLite.
Documento de eloy
Tutorial Nro 1 de Desarrollo de Aplicaciones Móviles con Android
Las aplicasiones de androi ddd
Preguntasviri
Aplicación móvil con acceso a datos
REPORTES JASPERREPORT E IREPORT SIN CONEXIÓN A UNA BBDD
Introduccion a Android
Modelo vista controlador
3A Android Controls aprende a programar
Codemotion 2017 - Taller de JHipster
Practicas android studio efrain (1)
Publicidad

Más de Ernesto Freyre Gonzalez (10)

PDF
Introduccion a Python. Clase 2
PDF
Introduccion a Python. Clase 3
PDF
Introduccion a Python. Clase 4
PDF
Introduccion a Python. Clase 5
PDF
Introduccion a Python. Clase 7
PDF
Introduccion a Python. Clase 9
PDF
Introduccion a Python. Clase 10
PDF
Introduccion a Python. Clase 1
PDF
Bluetooth Low Energy y Moviles
PDF
Presentación ACADEMIC-OK
Introduccion a Python. Clase 2
Introduccion a Python. Clase 3
Introduccion a Python. Clase 4
Introduccion a Python. Clase 5
Introduccion a Python. Clase 7
Introduccion a Python. Clase 9
Introduccion a Python. Clase 10
Introduccion a Python. Clase 1
Bluetooth Low Energy y Moviles
Presentación ACADEMIC-OK

Último (20)

PDF
Escuelas Desarmando una mirada subjetiva a la educación
PDF
Educación Artística y Desarrollo Humano - Howard Gardner Ccesa007.pdf
PDF
Escuela de Negocios - Robert kiyosaki Ccesa007.pdf
PDF
Cronograma de clases de Práctica Profesional 2 2025 UDE.pdf
PDF
Híper Mega Repaso Histológico Bloque 3.pdf
PDF
Fundamentos_Educacion_a_Distancia_ABC.pdf
PDF
Conecta con la Motivacion - Brian Tracy Ccesa007.pdf
PDF
SESION 12 INMUNIZACIONES - CADENA DE FRÍO- SALUD FAMILIAR - PUEBLOS INDIGENAS...
PDF
Guia de Tesis y Proyectos de Investigacion FS4 Ccesa007.pdf
PDF
benveniste-problemas-de-linguistica-general-i-cap-6 (1)_compressed.pdf
PDF
CONFERENCIA-Deep Research en el aula universitaria-UPeU-EduTech360.pdf
PDF
PFB-MANUAL-PRUEBA-FUNCIONES-BASICAS-pdf.pdf
DOCX
III Ciclo _ Plan Anual 2025.docx PARA ESTUDIANTES DE PRIMARIA
PDF
DI, TEA, TDAH.pdf guía se secuencias didacticas
PDF
ciencias-1.pdf libro cuarto basico niños
DOCX
V UNIDAD - PRIMER GRADO. del mes de agosto
PDF
Breve historia de los Incas -- Patricia Temoche [Temoche, Patricia] -- Breve ...
DOCX
Tarea De El Colegio Coding For Kids 1 y 2
PDF
Escuela Sabática 6. A través del Mar Rojo.pdf
PDF
Salcedo, J. et al. - Recomendaciones para la utilización del lenguaje inclusi...
Escuelas Desarmando una mirada subjetiva a la educación
Educación Artística y Desarrollo Humano - Howard Gardner Ccesa007.pdf
Escuela de Negocios - Robert kiyosaki Ccesa007.pdf
Cronograma de clases de Práctica Profesional 2 2025 UDE.pdf
Híper Mega Repaso Histológico Bloque 3.pdf
Fundamentos_Educacion_a_Distancia_ABC.pdf
Conecta con la Motivacion - Brian Tracy Ccesa007.pdf
SESION 12 INMUNIZACIONES - CADENA DE FRÍO- SALUD FAMILIAR - PUEBLOS INDIGENAS...
Guia de Tesis y Proyectos de Investigacion FS4 Ccesa007.pdf
benveniste-problemas-de-linguistica-general-i-cap-6 (1)_compressed.pdf
CONFERENCIA-Deep Research en el aula universitaria-UPeU-EduTech360.pdf
PFB-MANUAL-PRUEBA-FUNCIONES-BASICAS-pdf.pdf
III Ciclo _ Plan Anual 2025.docx PARA ESTUDIANTES DE PRIMARIA
DI, TEA, TDAH.pdf guía se secuencias didacticas
ciencias-1.pdf libro cuarto basico niños
V UNIDAD - PRIMER GRADO. del mes de agosto
Breve historia de los Incas -- Patricia Temoche [Temoche, Patricia] -- Breve ...
Tarea De El Colegio Coding For Kids 1 y 2
Escuela Sabática 6. A través del Mar Rojo.pdf
Salcedo, J. et al. - Recomendaciones para la utilización del lenguaje inclusi...

Clase 1 Programacion Android

  • 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    
  • 6. ¡  Java  JDK  1.6+   ¡  IDE  Eclipse     ¡  Android  SDK   ¡  AVD  Manager   ¡  Android  Development  Tools  
  • 7. 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>  
  • 8. ¡  View,  ViewGroup,  Layout,  Adapter   ¡  Intent,  Action,  Activity   ¡  Toast,  Dialog   ¡  Options,  Context  Menu  
  • 9. ¡  Definir  todas  nuestras  interfaces  en  XML.   §  Layouts,  Colores,  Fondos,  Menús,  Textos,  Estados   ¡  Enlazarlo  en  el  código  
  • 10. ¡  Linear  Layout   ¡  Vertical  Layout   ¡  Relative  Layout   ¡  Table  Layout   ¡  ScrollView   ¡  Etc….  
  • 11. ¡  Drawables   §  Imágenes,  Selectores,  Colores,  9  -­‐  Patch   ¡  Texto,  Arreglos  de  Texto   ¡  Selectores   ¡  Menús  
  • 13. <?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>  
  • 14. <?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>  
  • 15. <?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>  
  • 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  
  • 23. <?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>  
  • 24. @Override public 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; }  
  • 25. ¡  También  definidos  como  Recursos  XML   ¡  Menús  de  Opciones  y  Contextuales  
  • 26. @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.hola, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch(item.getItemId()) { case R.id.opcion1: { break; } case R.id.opcion2: { break; } } return true; }  
  • 27. ¡  Registrar  para  el  Long  Click   ¡  Discriminar  por  ID  de  View  
  • 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.  
  • 30. startActivity(new Intent(this, MensajeActivity.class)); startActivityForResult( new Intent(this, MensajeActivity.class), 13); @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { // ... }  
  • 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();