SlideShare una empresa de Scribd logo
1 de 35
Descargar para leer sin conexión
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();	
  

Más contenido relacionado

Destacado

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
 

Destacado (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
 

Similar a 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
 

Similar a 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
 

Más de 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
 

Último

6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria
Wilian24
 
RESULTADOS DE LA EVALUACIÓN DIAGNÓSTICA 2024 - ACTUALIZADA.pptx
RESULTADOS DE LA EVALUACIÓN DIAGNÓSTICA 2024 - ACTUALIZADA.pptxRESULTADOS DE LA EVALUACIÓN DIAGNÓSTICA 2024 - ACTUALIZADA.pptx
RESULTADOS DE LA EVALUACIÓN DIAGNÓSTICA 2024 - ACTUALIZADA.pptx
pvtablets2023
 
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
RigoTito
 
TALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docx
TALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docxTALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docx
TALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docx
NadiaMartnez11
 
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
jlorentemartos
 
Concepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxConcepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptx
Fernando Solis
 

Último (20)

Prueba libre de Geografía para obtención título Bachillerato - 2024
Prueba libre de Geografía para obtención título Bachillerato - 2024Prueba libre de Geografía para obtención título Bachillerato - 2024
Prueba libre de Geografía para obtención título Bachillerato - 2024
 
6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria
 
La Sostenibilidad Corporativa. Administración Ambiental
La Sostenibilidad Corporativa. Administración AmbientalLa Sostenibilidad Corporativa. Administración Ambiental
La Sostenibilidad Corporativa. Administración Ambiental
 
Biografía de Charles Coulomb física .pdf
Biografía de Charles Coulomb física .pdfBiografía de Charles Coulomb física .pdf
Biografía de Charles Coulomb física .pdf
 
Sesión de clase: Fe contra todo pronóstico
Sesión de clase: Fe contra todo pronósticoSesión de clase: Fe contra todo pronóstico
Sesión de clase: Fe contra todo pronóstico
 
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptxCONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
 
RESULTADOS DE LA EVALUACIÓN DIAGNÓSTICA 2024 - ACTUALIZADA.pptx
RESULTADOS DE LA EVALUACIÓN DIAGNÓSTICA 2024 - ACTUALIZADA.pptxRESULTADOS DE LA EVALUACIÓN DIAGNÓSTICA 2024 - ACTUALIZADA.pptx
RESULTADOS DE LA EVALUACIÓN DIAGNÓSTICA 2024 - ACTUALIZADA.pptx
 
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
 
Power Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptxPower Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptx
 
TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPC
TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPCTRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPC
TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPC
 
Revista Apuntes de Historia. Mayo 2024.pdf
Revista Apuntes de Historia. Mayo 2024.pdfRevista Apuntes de Historia. Mayo 2024.pdf
Revista Apuntes de Historia. Mayo 2024.pdf
 
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).pptPINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
 
TALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docx
TALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docxTALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docx
TALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docx
 
Interpretación de cortes geológicos 2024
Interpretación de cortes geológicos 2024Interpretación de cortes geológicos 2024
Interpretación de cortes geológicos 2024
 
semana 4 9NO Estudios sociales.pptxnnnn
semana 4  9NO Estudios sociales.pptxnnnnsemana 4  9NO Estudios sociales.pptxnnnn
semana 4 9NO Estudios sociales.pptxnnnn
 
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
 
Lecciones 06 Esc. Sabática. Los dos testigos
Lecciones 06 Esc. Sabática. Los dos testigosLecciones 06 Esc. Sabática. Los dos testigos
Lecciones 06 Esc. Sabática. Los dos testigos
 
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLAACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
 
Concepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxConcepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptx
 
Usos y desusos de la inteligencia artificial en revistas científicas
Usos y desusos de la inteligencia artificial en revistas científicasUsos y desusos de la inteligencia artificial en revistas científicas
Usos y desusos de la inteligencia artificial en revistas científicas
 

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();