SlideShare ist ein Scribd-Unternehmen logo
1 von 35
Downloaden Sie, um offline zu lesen
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	
  

	
  
¡  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	
  
<?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();	
  

Weitere ähnliche Inhalte

Andere mochten auch

Megan Summers Foundation Portfolio Evaluation
Megan Summers Foundation Portfolio Evaluation Megan Summers Foundation Portfolio Evaluation
Megan Summers Foundation Portfolio Evaluation
Barney1995
 
106 Tombelaneige adamo
106 Tombelaneige adamo106 Tombelaneige adamo
106 Tombelaneige adamo
iamthelegend
 
Evaluating music magazine q6pptxjz new
Evaluating music magazine q6pptxjz newEvaluating music magazine q6pptxjz new
Evaluating music magazine q6pptxjz new
carolinebirksatwork
 
Matilde's civilization project 5M
Matilde's civilization project 5MMatilde's civilization project 5M
Matilde's civilization project 5M
gsbSS
 
Evaluation question 6
Evaluation question 6Evaluation question 6
Evaluation question 6
lewisharland
 
ьрплплбплр
ьрплплбплрьрплплбплр
ьрплплбплр
leneth6
 
ใบงานที่ 7 เรื่อง โครงงานประเภท
ใบงานที่ 7 เรื่อง โครงงานประเภทใบงานที่ 7 เรื่อง โครงงานประเภท
ใบงานที่ 7 เรื่อง โครงงานประเภท
Justice MengKing
 
Trabajos de mates
Trabajos de matesTrabajos de mates
Trabajos de mates
idasou
 
собрание егэ 2014
собрание егэ 2014собрание егэ 2014
собрание егэ 2014
killaruns
 

Andere mochten auch (20)

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

Ähnlich wie Clase 1 Programacion Android

Tutorial Nro. 2 de Desarollo de Aplicaciones Móviles con Android
Tutorial Nro. 2 de Desarollo de Aplicaciones Móviles con AndroidTutorial Nro. 2 de Desarollo de Aplicaciones Móviles con Android
Tutorial Nro. 2 de Desarollo de Aplicaciones Móviles con Android
Luis Ernesto Castillo Alfaro
 
Tutorial Nro 1 de Desarrollo de Aplicaciones Móviles con Android
Tutorial Nro 1 de Desarrollo de Aplicaciones Móviles con AndroidTutorial Nro 1 de Desarrollo de Aplicaciones Móviles con Android
Tutorial Nro 1 de Desarrollo de Aplicaciones Móviles con Android
Luis Ernesto Castillo Alfaro
 
Aplicación móvil con acceso a datos
Aplicación móvil con acceso a datosAplicación móvil con acceso a datos
Aplicación móvil con acceso a datos
Susi Perez Gallegos
 
Modelo vista controlador
Modelo vista controladorModelo vista controlador
Modelo vista controlador
descarga2009
 

Ähnlich wie Clase 1 Programacion Android (20)

ANDROID BOOTCAMP 101: MI PRIMERA APLICACIÓN ANDROID - CÓMO INICIAR UN EMPREND...
ANDROID BOOTCAMP 101: MI PRIMERA APLICACIÓN ANDROID - CÓMO INICIAR UN EMPREND...ANDROID BOOTCAMP 101: MI PRIMERA APLICACIÓN ANDROID - CÓMO INICIAR UN EMPREND...
ANDROID BOOTCAMP 101: MI PRIMERA APLICACIÓN ANDROID - CÓMO INICIAR UN EMPREND...
 
Android bootcamp 101 v2.0
Android bootcamp 101 v2.0Android bootcamp 101 v2.0
Android bootcamp 101 v2.0
 
Tutorial Nro. 2 de Desarollo de Aplicaciones Móviles con Android
Tutorial Nro. 2 de Desarollo de Aplicaciones Móviles con AndroidTutorial Nro. 2 de Desarollo de Aplicaciones Móviles con Android
Tutorial Nro. 2 de Desarollo de Aplicaciones Móviles con Android
 
Android Bootcamp - GTUG Uruguay
Android Bootcamp - GTUG UruguayAndroid Bootcamp - GTUG Uruguay
Android Bootcamp - GTUG Uruguay
 
Aplicaciones moviles clase9 listas
Aplicaciones moviles clase9 listasAplicaciones moviles clase9 listas
Aplicaciones moviles clase9 listas
 
Hola mundo1
Hola mundo1Hola mundo1
Hola mundo1
 
LabAndroid: Taller "Mi Primera Aplicación Android"
LabAndroid: Taller "Mi Primera Aplicación Android"LabAndroid: Taller "Mi Primera Aplicación Android"
LabAndroid: Taller "Mi Primera Aplicación Android"
 
Parte II. Notas Rapidas (sticky notes) App W8: MVVM y SQLite.
Parte II. Notas Rapidas (sticky notes) App W8: MVVM y SQLite.Parte II. Notas Rapidas (sticky notes) App W8: MVVM y SQLite.
Parte II. Notas Rapidas (sticky notes) App W8: MVVM y SQLite.
 
Documento de eloy
Documento de eloyDocumento de eloy
Documento de eloy
 
Tutorial Nro 1 de Desarrollo de Aplicaciones Móviles con Android
Tutorial Nro 1 de Desarrollo de Aplicaciones Móviles con AndroidTutorial Nro 1 de Desarrollo de Aplicaciones Móviles con Android
Tutorial Nro 1 de Desarrollo de Aplicaciones Móviles con Android
 
Las aplicasiones de androi ddd
Las aplicasiones de androi dddLas aplicasiones de androi ddd
Las aplicasiones de androi ddd
 
Preguntasviri
PreguntasviriPreguntasviri
Preguntasviri
 
Android
AndroidAndroid
Android
 
Aplicación móvil con acceso a datos
Aplicación móvil con acceso a datosAplicación móvil con acceso a datos
Aplicación móvil con acceso a datos
 
REPORTES JASPERREPORT E IREPORT SIN CONEXIÓN A UNA BBDD
REPORTES JASPERREPORT E IREPORT SIN CONEXIÓN A UNA BBDDREPORTES JASPERREPORT E IREPORT SIN CONEXIÓN A UNA BBDD
REPORTES JASPERREPORT E IREPORT SIN CONEXIÓN A UNA BBDD
 
Introduccion a Android
Introduccion a AndroidIntroduccion a Android
Introduccion a Android
 
Modelo vista controlador
Modelo vista controladorModelo vista controlador
Modelo vista controlador
 
Codemotion 2017 - Taller de JHipster
Codemotion 2017 - Taller de JHipsterCodemotion 2017 - Taller de JHipster
Codemotion 2017 - Taller de JHipster
 
Practicas android studio efrain (1)
Practicas android studio efrain (1)Practicas android studio efrain (1)
Practicas android studio efrain (1)
 
Un atlas en la palma de la mano
Un atlas en la palma de la manoUn atlas en la palma de la mano
Un atlas en la palma de la mano
 

Mehr von Ernesto Freyre Gonzalez (10)

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

Kürzlich hochgeladen

Proyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdfProyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdf
patriciaines1993
 
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAFORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
El Fortí
 
6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf
6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf
6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf
MiNeyi1
 
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
EliaHernndez7
 

Kürzlich hochgeladen (20)

CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDAD
 
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdfTema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
 
Registro Auxiliar - Primaria 2024 (1).pptx
Registro Auxiliar - Primaria  2024 (1).pptxRegistro Auxiliar - Primaria  2024 (1).pptx
Registro Auxiliar - Primaria 2024 (1).pptx
 
Medición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptxMedición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptx
 
Proyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdfProyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdf
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcción
 
origen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioorigen y desarrollo del ensayo literario
origen y desarrollo del ensayo literario
 
Presentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza MultigradoPresentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza Multigrado
 
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAFORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
 
6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf
6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf
6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf
 
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxSEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
 
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdfGUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
 
LA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptxLA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptx
 
Supuestos_prácticos_funciones.docx
Supuestos_prácticos_funciones.docxSupuestos_prácticos_funciones.docx
Supuestos_prácticos_funciones.docx
 
Qué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativaQué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativa
 
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
 
Programacion Anual Matemática5 MPG 2024 Ccesa007.pdf
Programacion Anual Matemática5    MPG 2024  Ccesa007.pdfProgramacion Anual Matemática5    MPG 2024  Ccesa007.pdf
Programacion Anual Matemática5 MPG 2024 Ccesa007.pdf
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
 
Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...
 
Unidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la InvestigaciónUnidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la Investigación
 

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    
  • 4.
  • 5.
  • 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  
  • 12.
  • 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();