Unidad1 Tema1
Unidad1 Tema1
Unidad1 Tema1
Móviles
Apps nativas
Las aplicaciones nativas, “son aquellas que han sido desarrolladas con
el software que ofrece cada sistema operativo a los programadores,
llamado genéricamente Software Development Kit o SDK” (Cuello, J. &
Vittone, J, 2013, p. 20)
Apple iOS Android Windows Phone
Lenguajes Objetive C, C++ .Java ,C, C++. C#, VB.NET
Herramientas XCode Android SDK Visual Studio
Formato archivo .app .apk .xap
Tiendas Apps App Store Google Play Windows Phone
Plataforma Android
Android
• Plataforma de software basada en el
Kernel de Linux.
• Plataforma de código abierto
• Plataforma para abstraer el hardware y
facilitar el desarrollo de aplicaciones para
dispositivos con recursos limitados –
móviles.
• Java, Kotlin, C++
Filosofía de Android
<TextView
android:id="@+id/todo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=“Por realizar"
android:textSize="45sp"
android:padding="20dp"
android:textColor="#DD2C00“/>/>
Ciclo de vida de un activity
IDE
Editor de código, un compilador, un
depurador y un constructor de interfaz
gráfica (GUI).
- Asegura de seguir reglas del
Framework
Nombre que
se mostrará
al usuario en
el launcher
Identificador
único
Buscar el mas
alto
Nombre de Dominio y paquete único en el google Play
Estructura de un
proyecto en
Android
AndroidManifest.xml:
• Proyecto
• Módulos
Gradle Scripts
• compileSdkVersion: es la versión de Android que utilizan las herramientas de compilación
(Gradle) para compilar la aplicación para su lanzamiento, ejecución o depuración.
• applicationId: es el identificador único de la aplicación cuando ésta sea publicada en Google
Play. No pueden existir 2 aplicaciones publicadas con el mismo identificador.
• minSdkVersion: es la versión mínima del sistema operativo Android necesaria para ejecutar la
aplicación. La aplicación no podrá ser instalada en un dispositivo que tenga una versión inferior
a ésta.
• targetSdkVersion: conocida como versión SDK destino, es la versión de Android en la que se
creó la aplicación para que se ejecute. Indica que hemos probado nuestra aplicación hasta la
versión que especificamos en esta propiedad.
• versionCode: es un número que es usado para determinar si una versión es más reciente que
otra. Este numero no es mostrado a los usuarios pero sirve para definir el numero de versión
dentro de la Play Store.
• versionName: es una cadena de texto, su único propósito es mostrar el número de versión de
la aplicación a los usuarios de Google Play.
targetSdkVersion
Para todos los propósitos prácticos, en la mayoría de las aplicaciones
deberemos establecer targetSdkVersion a la última versión de la API. Esto
asegurará que nuestra aplicación se vea lo mejor posible en los dispositivos
Android más recientes. Si no especificamos targetSdkVersion , por defecto es
minSdkVersion .
Debe por tanto cumplirse:
minSdkVersion <= targetSdkVersion <= compileSdkVersion
Lo ideal es:
minSdkVersion (la menor posible) <= targetSdkVersion == compileSdkVersion (la
versión más reciente de SDK)
Layouts
Layouts
• Encontrarás atributos
para el tamaño, la
alineación, padding,
bordes, backgrounds,
etc.
• Identificador de un
view—representa un
identificador único para
cada elemento.
Propiedades esenciales
• Un botón consiste en
un texto o un ícono (o
ambos) que comunica
la acción que ocurrirá
cuando el usuario lo
toque.
Casillas de verificación
https://developer.android.com/guide/topics/ui/controls/checkbox
Botones de selección
Imagina en una sentencia como “el botón estará por debajo del texto” o
“la imagen se encuentra a la derecha de la descripción”.
Atributos :
• columnCount: Cantidad de columnas
• rowCount: Cantidad de filas.
• useDefaultMargins: el valor de true establece
márgenes predeterminadas entre los ítems.
GridLayout
2
colors.xml
<resources>
<style name="AppTheme.BotonTransparente" parent="TextAppearance.AppCompat.Headline">
<item name="android:textColor">@android:color/white</item>
<item name="android:background">?android:selectableItemBackground</item>
<item name="android:textSize">32dp</item>
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
</style>
</resources>
Intents, Listas y Menúes
Intents
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_ejer2);
String mensaje = getIntent().getStringExtra("valorTest");
Log.d("Hola", mensaje);
Toast.makeText(this, mensaje, Toast.LENGTH_SHORT).show();
}
}
Llamar a un activity por un método
• Crear el método
public void muestraEje3(View v){
Intent i = new Intent(this, Ejer3.class);
startActivity(i);
}
• Ventajas:
• Métodos para manejar ItemSelected.
• Acceder a la vista mediante getListView
• Posibilidad de implementar el método: onListItemClicked, para actuar cuando se
escoja alguna opción de la lista.
• Para poblar la lista se debe emplear un Adapter. ListAdapter, encargado de
manejar los datos de la lista. Se debe inicializar en el onCreate y asignado
mediante setListAdapter.
• Adapter transforma los datos internos en Items de la lista con una interface
que se debe especificar con un Layout
RecyclerView
Design Patterns
Adapter: tiene como objetivo convertir la interfaz
de una clase existente en la interfaz esperada por
los clientes también existentes para que puedan
trabajar de forma conjunta.
Ejemplo ListView
public class MainActivity extends AppCompatActivity {
ListView listaTemas;
String[] spacecrafts={"Juno","Hubble","Casini","WMAP","Spitzer","Pioneer","Columbia","Challenger","Apollo","Curiosity"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listaTemas= findViewById(R.id.listaTemas);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, spacecrafts);
listaTemas.setAdapter(adapter);
listaTemas.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(MainActivity.this, spacecrafts[position], Toast.LENGTH_SHORT).show();
}
});
}
}
Listas con LayoutsPersonalizados
public class MainActivity extends AppCompatActivity {
ListView listaTemas;
String[] spacecrafts={"Juno","Hubble","Casini","WMAP","Spitzer","Pioneer","Columbia","Challenger","Apollo","Curiosity"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listaTemas= findViewById(R.id.listaTemas);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.itemlista, R.id.nombre, spacecrafts);
listaTemas.setAdapter(adapter);
listaTemas.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(MainActivity.this, spacecrafts[position], Toast.LENGTH_SHORT).show();
}
});
}
}
Menús
<item android:id="@+id/item2"
android:icon="@drawable/ic_blue"
android:title="Enlazar"
app:showAsAction="always"
></item>
</menu>
Insertar el menú en el ActivityMain
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu1, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()){
case R.id.item1:{
Toast.makeText(this, "Item 1 - Llamar", Toast.LENGTH_SHORT).show();
break;
}
case R.id.item2:{
Toast.makeText(this, "Item 2 - Enlazar", Toast.LENGTH_SHORT).show();
break;
}
}
return super.onOptionsItemSelected(item);
}