transparencias de intro a android y el entorno de desarrollo
TRANSCRIPT
Programación en Android
LSUB, GSYC, URJC
Introducción
AndroidStudio
Teléfonoo
Emulador
Introducción
Dalvik JVM
Linux kernel
SQLite WebKit OpenGL...
ActivityMgr
DialerApp!
Dispositivo móvil
Aplicaciones
• Centradas en el interfaz de usuario
• Para múltiples dispositivos
• Básicamente componentes en Java empaquetados con descripciones en XML
Aplicaciones
• Usan las abstracciones de Android
• Activities
• Intents
• Fragments
• ....
• Los veremos al irlos usando
Aplicaciones• Activity: pantalla (UI) y unidad de ejecución
• Fragment: trozo de pantalla, mini-activity
• Service: activity sin interfaz de usuario
• ContentProvider: abstracción de datos
• BroadcastListener: escucha avisos
• Bundle: paquete de datos
• Iremos viendo todos
Ayuda
• Todo lo que necesitas está en el web.
•http://developer.android.com
• Tutoriales
• Javadocs
•http://www.coreservlets.com
•Excelente tutorial
Entorno de desarrollo
• Java 8 (en muchos sistemas jre incluido con el Android Studio)
• Android Studio
• Emuladores
• Sobre HW.
Entorno de desarrollo
• Instalación: Paso 1.
• Actualiza tu Java a Java 8 si no lo está ya (puede no ser necesario, hacer en demanda)
• Paso 2: Instalar Android Studio
Entorno de desarrollohttp://developer.android.com/sdk/index.html
Entorno de desarrollo
Hola mundo
• En Android Studio...
• Start a new Android Studio project
Hola mundo
Hola mundo
• Application Name:
• nombre que se verá en el launcher
• Project Location:
• directorio del proyecto
• Company Domain, dominio:
• para nombre del paquete Java (Package name)
Hola mundo
• Package Name:
• nombre del paquete Java
• dominio invertido.nombre:
•org.lsub.nombre
Hola mundo
Hola mundo➜ Help me choose
Hola mundo
• Minimum SDK
• versión mínima que soportamos
• 4.2 para la mayoría
• 5.0 es una reciente
• Help me choose nos da una idea, compromiso
• Funcionalidad, vs.
• Población que lo tiene instalado
Hola mundo
• Create activity:
• Vamos a programar el código para lo que Android llama Activity
• Una aplicación son una o más “activities”
• Una de las cosas que hace el usuario (una “pantalla”).
Hola mundo
• Seguirle dando a “next”....
• Y en “Create Activity” seleccionar
• BlankActivity
Hola mundo
Hola mundo
• Activity Name:
• El nombre de nuestra clase “Activity”
• El “punto de entrada” para nuestra aplicación
• Layout name/Menu resource name, nombre del ficheros xml (de momento automático)
• Title: título de la activity (se muestra en launcher)
• ... Y luego “Finish”
Hola mundoProyecto
Código Java aquí
Iconos...
Layout de nuestra “activity”
Config: punto de entrada, etc.
Gradle, como makefilehttp://gradle.org
Mipmap
• Gráficos vectoriales vs. Raster Graphics
• Inkscape vs. Gimp ó Illustrator vs. Photoshop
Raster
Vector
<svg width="100" height="100">
<circle cx="50" cy="50" r="40" stroke="green" stroke-width=“4" fill="yellow" />
</svg>
Mipmap
• Multum in parvo (mucho en poco)
• Lo óptimo, usar vectores, pero caro
• Se usa raster, pero es caro, solución, mipmap
Mipmap
Mipmap
• Se busca la más cercana y se interpola
• Barato (y ocupa razonablemente)
• En general, para crear iconos a diferentes resoluciones, mipmaps, etc. Android asset studio:
• https://romannurik.github.io/AndroidAssetStudio/
• https://androidbycode.wordpress.com/2015/02/14/goodbye-launcher-drawables-hello-mipmaps/
Nota sobre recursos
Iconos normales
Iconos alta
Iconos muy muy alta
Layout por defecto
Valores por defecto
…
Nota sobre recursos
• Para crear un fichero de layout en landscape
• Luego veremos para qué sirve
Notas sobre recursos
Nota sobre recursos
• Normalmente se usan los directorios normales y....
• Se redefinen los que queramos en las versiones específicas (para UK, para landscape, etc.)
Nota sobre recursos
Nota sobre recursos$ pwd /Users/paurea/AndroidStudioProjects/MyApp/app/src/main/res $ du -a 0 ./drawable8 ./mipmap-hdpi/ic_launcher.png 8 ./mipmap-hdpi 8 ./mipmap-mdpi/ic_launcher.png 8 ./mipmap-mdpi 16 ./mipmap-xhdpi/ic_launcher.png 16 ./mipmap-xhdpi 16 ./mipmap-xxhdpi/ic_launcher.png 16 ./mipmap-xxhdpi 24 ./mipmap-xxxhdpi/ic_launcher.png 24 ./mipmap-xxxhdpi 24 ./drawable-hdpi/z.png 24 ./drawable-hdpi 16 ./drawable-mdpi/z.png 16 ./drawable-mdpi 32 ./drawable-xhdpi/z.png 32 ./drawable-xhdpi 40 ./drawable-xxhdpi/z.png 40 ./drawable-xxhdpi 8 ./layout/activity_main.xml 8 ./layout 8 ./layout-port/activity_main.xml 8 ./layout-port 8 ./menu/menu_main.xml 8 ./menu 8 ./values/dimens.xml 8 ./values/strings.xml 8 ./values/styles.xml
Hola mundopackage org.lsub.app1;
import android.os.Bundle;import android.app.Activity;import android.view.Menu;
public class MainActivity extends Activity {
@Overrideprotected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);
}
@Overridepublic boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.activity_main, menu);return true;
}
}
listo para ejecutar...
Crear un dispositivo...
Android Virtual Device Manager
Hola mundo
• Creamos un dispositivo virtual
• Elegimos el dispositivo a emular
• La versión de Android
• Resolución
• HW. Cámara, Memoria, SD Card, ...
Hola mundoY de vuelta a Android Studio....
Hola mundo• En Android Studio tenemos la consola
con el diálogo con el emulador
• Y podemos hacer click en “LogCat” para ver los mensajes del emulador
• En LogCat...
• podemos filtrar por tipo de mensaje
• Y buscando el nombre de muestro paquete, filtrar por aplicación
• Básico si la aplicación falla, para ver la causa (el mensaje de error o excepción)
Depuración
• Podemos simular todo el teléfono o tablet
• Ejemplo: Control-F11 cambia orientación
• En mac Control-Fn-F11
• Ahora hay botones
Emulador