Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

Curso Android Básico

No description
by

Carlos Blanco

on 4 July 2016

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of Curso Android Básico

ANDROID
CREAR NUEVO PROYECTO
Activities
Lo primero es descargar el IDE para poder trabajar en Android.
https://developer.android.com/studio/index.html
Vamos a crear un proyecto que poco a poco iremos ampliando con funcionalidades y con ejemplos para que sirvan de ejemplo en futuras apps. Serán pequeños ejercicios y funcionalidades básicas, puertas hacía un sinfín de posibilidades.
En la siguientes pantallas elegiremos el nombre de la app, del package, y del proyecto. Además elegiremos el mínimo sdk permitido, el sdk Target.
Elegimos el tipo de activity según requisitos del proyecto.
Y sólo falta poner dos nombres, el de la activity principal, y de su layout(archivo xml que controla la parte visual)
Para tener ordenada la app, repartiremos los archivos en packages dentro de la carpeta src. Esto es de elección libre, pero es muy aconsejable.
Ponemos el nombre al package, fijaros sobretodo en la manera que se pone el nombre del mismo.
Y si lo hemos hecho todo bien, quedará de la manera que veréis a continuación. En este momento fijaros que ya podríais ejecutar la app y tendríais vuestro "Hola Mundo" habitual.
Lo siguiente que haremos es añadir otra activity al proyecto para poder ver el comportamiento entre ellas. Esta será la manera que iremos añadiendo funcionalidades al proyecto. Más adelante veremos como trabajar y pasar información entre las dos. Para ello clickaremos con el botón derecho en el package que vayamos a crear la activity, submenú new --> submenú activity
-->tipo de activity.
Pues ya tenemos nuestra primera app montada y lista para complicarla tanto como queramos. Lo primero que haremos será sustituir el hola mundo por un botón. Para ello nos dirigimos al archivo .xml , al abrirlo vamos a la pestaña inferior "design" y del menu lateral elegimos el componente que queremos añadir a la pantalla, en este caso un botón y lo posicionamos en el centro de la pantalla.
Si elegimos la opción de text iremos a la opción de código. Con el tiempo verás que es donde se trabaja realmente.
Lo siguiente que tenemos que hacer es añadir a nuestro java class la funcionalidad del botón. A continucación veremos como hacerlo. Declaramos una variable Button y la relacionamos con el botón, justo después de hacer esto nos da un error señalando "Button" , no te preocupes Android Studio nos ayudará a solucionarlo.
Una vez importado le añadimos un listener para saber cuando se ha usado el botón y poder darle una funcionalidad, en esto el eclipse nos ayudará bastante. Mirar como queda el código al terminar.
Lo que hacemos al clickar en el botón es llamar a la otra Activity que tenemos creada. La palabra clave en este momento es el Intent. Os dejo la definición de la web de google developers:
"Una intención es una descripción abstracta de una operación a ser realizada. Se puede utilizar con startActivity para lanzar una actividad. Un Intención proporciona una instalación para la realización de la unión entre el tiempo de ejecución finales de código en diferentes aplicaciones. Su uso más importante es en la puesta en marcha de las actividades, en las que se puede considerar como la unión entre las actividades. Se trata básicamente de una estructura de datos pasiva sosteniendo una descripción abstracta de una acción a realizar".
Lo mejor es que con tiempo os pasáis por la web y veis la posibilidad de un Intent, aunque poco a poco os las iremos enseñando.
Y ahora vamos a lanzar la app para ver el resultado de todo ese código que hemos puesto. Veamos si nos da algún error.
Una vez hecho esto, vamos a crear un formulario añadiendo todos los elementos típicos. la siguiente imagen os dará un ejemplo de como ha de quedar la activity. Así que tomaros un tiempo para rellenar el layout e invenstigar lo que se puede hacer con los elementos que vais añadiendo.
Como podéis ver, hay un pequeño error con el datepicker, simplemente es que el modo gráfico no lo muestra, pero no os preocupéis que al ejecutar la app en el móvil aparecerá. Ahora os enseñaré como ha quedado el código xml.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<EditText
android:id="@+id/nameText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="30dp"
android:layout_marginTop="37dp"
android:ems="10"
android:hint="@string/hint_name"
android:inputType="textEmailAddress" >

<requestFocus />
</EditText>




<RadioButton
android:id="@+id/radiohombre"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:text="@string/radiobutton_hombre" />

<RadioButton
android:id="@+id/radiomujer"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/radiobutton_mujer" />
</RadioGroup>

<CheckBox
android:id="@+id/checkBox1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/radioGroup2"
android:layout_below="@+id/radioGroup2"
android:text="@string/acceptconditions" />
</RelativeLayout>
<EditText
android:id="@+id/emailText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_marginLeft="30dp"
android:ems="10"
android:layout_below="@+id/nameText"
android:hint="@string/hint_email"
android:inputType="textEmailAddress" >

</EditText>
<EditText
android:id="@+id/passText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/emailText"
android:layout_below="@+id/emailText"
android:ems="10"
android:hint="@string/hint_pass"
android:inputType="textPassword" />

<EditText
android:id="@+id/passRepeatText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/passText"
android:layout_below="@+id/passText"
android:ems="10"
android:hint="@string/hint_pass_repeat"
android:inputType="textPassword" />

<DatePicker
android:id="@+id/datePicker1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/passRepeatText"
android:layout_alignRight="@+id/passRepeatText"
android:layout_below="@+id/passRepeatText"
android:calendarViewShown="false" />

<RadioGroup
android:id="@+id/radioGroup1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/radioButton2" >
</RadioGroup>

<RadioGroup
android:id="@+id/radioGroup2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/datePicker1"
android:layout_below="@+id/datePicker1"
android:orientation="horizontal"
>
Lo siguiente es importar los elementos a la clase java
para poder interactuar con ellos.
Al usar el botón llamamos a un método creado por nosotros mismos que hará las típicas comprobaciones de formulario y se enviara a un servidor. Por ahora simplemente haremos las comprobaciones básicas y pintaremos de rojo las que estén vacías y en caso contrario crearemos un dialog con un mensaje con esos datos.
Sólo falta crear el Dialog para ver el resultado
Y con esto terminamos el formulario, más adelante volveremos a él para enviar los datos a otra Activity o a un servidor externo, que sería lo útil. Pero eso es otra historia.
Jugando con Listas
Preferencias de la app, como crear una clase común a toda la app y pasar datos entre activities
Añadir el nombre en el manifiest de la Clase que crearemos, de esta manera podemos extender de Application.
Recordar que tiene que extender de application
Getters and Setter para acceder a variables que podemos usar desde cualquier parte de la app.
En el onCreate instanciaremos, inicializaremos o llamaremos a cualquier método que queremos que se ejecute cada vez que lancemos la app. Veamos en un Activity cualquiera como guardar y obtener estos datos.
Instanciamos myApp
Creamos una objeto AppBasicaApplication
Creamos el objeto persona con los datos de la lista y los seteamos en myApp para que estén disponibles
Repetimos la operacion, para poder acceder a los datos
Pintamos los datos extrayendolos de myApp
Ya hemos visto como hacerlo mediante la clase que hemos creando sobre Application, ahora veamos el archivo de preferences.
WebView, mostrar una
web o nuestro propio html
Creamos el layout para mostrar la web y una manera de poder ir cambiando de web
Nos traemos los view del xml,y hacemos que el webview lea una web. Ponemos http:// en una constante, es más rápido.
Ya hemos aprendido como cargar una web externa, ahora veremos como cargar nuestro propio html. Para ello necesitamos tener un archivo html en la carpeta Assets
Cambiamos estas lineas para poder usar javascript y poder comunicarnos con el html. Y llamamos al archivo html que contiene el código.
Creamos este objeto interface y nos servirá para comunicarnos con las funciones javascript del html. Fijaros que en las lineas de arribas cuando creamos este objeto ponemos un nombre "AndroidFunction" muy importante ya que es al que llamaremos desde html, lo veremos a continuación.
Llamamos a la función pasarTexto de la interface Androidfunction de la clase java.
Vamos a crear un service que controla una faena que se va repitiendo hasta que apaguemos el servicio.
Añadimos una variables que necesitaremos para controlar desde el service
Creamos un objeto Random al cual luego le pasaremos esta lista
Tag necesario para controlar el bloqueo del service
Importamos el view del fondo, luego veremos para que
Controlamos el estado del ToggleButton
Bloqueamos para que no se apague el servicio aunque se bloquee el telefono
Lanzamos el servicio con los metodos necesarios para ello
Para CERRAR ell servicio y quitar el bloque del telefono
Clase que extiende de Service
Constantes para poder realizar la repetición de nuestra tarea Mientras el servicio está encendido
Poner aqui lo que hay que hacer al cerrar el servicio, en este caso paramos la repetición. Aqui se suelen parar los listener de sensores etc. MUY IMPORTANTE NO OLVIDARSE DE PARAR LOS LISTENERS.
El onCreate funciona casi igual que en la Activity.
Veamos como hacer una foto y enviarla por email
Necesario añadir esta linea para poder usar la cámara
Intent para lanzar la función de la camara
StartActivityForResult espera un resultado al cerrar la activity
Ejemplo de como mostrar nuestra posición en un mapa
Primero de todo importaremos la librería necesaria, es posible que tengáis que acualizar las librerías del sdk y del adt.
Una vez hecho, ahora toca modificar el manifiest con los permisos necesarios para google maps,internet y poner la key conseguida.
Necesarias para
Localizarnos y usar
el gps.
Permisos para los mapas
Es aqui donde hemos de parar para ir a buscar la key que pondremos en value.
https://developers.google.com/maps/documentation/android/start
Y lo que tenéis que ejecutar en la consola msdos...
C:\Users\VUESTROUSER\.android>"C:\Program Files\Java\jdk1.7.0_07\bin\keytool.exe" -list -v -keystore debug.keystore -alias androiddebugkey -storepass android -keypass android

Cuidado con el directorio de vuestro java fijaros en el número que puede ser diferente, poned el vuestro.
Poner en On, y volver a la pestaña API access
Y ahora queda hacer click en create new Android key, y si os preguntáis de donde sacar los datos que os piden lo podéis ver en la siguiente pantalla.
Acceder a este directorio de vuestro usuario y luego lanzar la linea de abajo con comillas incuidas
Los datos están tapados, pero lo que necesitáis se encuentra en la linea que marca la flecha, copiarlo en el popup de la web seguido por ;com.alumno.appbasica que es el package de vuestra app
Ahora ya sólo queda implementar el layout y la activity para mostrar nuestra posición en el mapa y que la camara se centre sobre nosotros con el zoom requerido.
Ojo que esto ya no es una activity, es un Fragment y hay que vigilar con lo que se puede y no se puede hacer con él.
Con esta linea tenemos acceso a que muestre nuesta posición
Con este código conseguimos coordenadas del mejor proveedor disponible. luego movemos la camara centrando nuestra posición y luego ponemos zoom
Metodos para trabajar con la localización.
Y con esto acaba el curso básico de Android, ya estáis preparados para hacer vuestras pequeñas apps. No tengáis miedo de complicarlas y ver de lo que sois capaces.
Muchas gracias por vuestra atención.
@carlosblag
hola@carlosblag.com
Elegimos la primera opción
para iniciar un nuevo proyecto.
Veamos cómo queda mi primera activity dentro de mi primera app de android.
En esta opción podéis cambiar el tipo de vista, yo aconsejo esta.
Las carpetas a buscar para trabajar son app y todo lo que hay dentro, hay otras pero ya las veremos.
Ponemos el nombre de la activity, xml, y el package, raro será la vez que hagamos que sea launcher, más adelante nos liaremos con eso.
Aquí encontrarás los layouts de tus vistas.
También se pueden anidar los onclicks implementando en la activity la interface: poned button.setOnClickListener(this) y veréis como hacerlo.
Para mostrar una lista se necesitan varios complementos.

Veamos como usar este componente que será uno de los que más usemos.

Este componente necesita algunos complementos para su funcionamiento:

RecyclerView. Adaptertrabajar con datos.
RecyclerView. ViewHolderpatrón de mejora.
LayoutManager Tipo de representación.
ItemDecoration Separadores, marcadores,etc.
ItemAnimator Animaciones sobre los items.

Para poder usarlo necesitaremos las dependencias:

compile 'com.android.support:recyclerview-v7:23.3.0'
compile 'com.android.support:appcompat-v7:23.3.0'

Y ahora sólo toca añadirlo al xml:

<android.support.v7.widget.RecyclerView
android:id="@+id/list_all_raf"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="vertical"
android:background="@color/fondo_lista_cards"
android:visibility="visible" />


onCreateViewHolder()
Encargado de crear los nuevos objetos ViewHolder necesarios para los elementos de la colección.

onBindViewHolder()
Actualizará los datos del ViewHolder().

onItemCount()
Indica el número de elementos de la colección de datos.

Y así queda el adapter que nos mostrará la lista.
Y así es cómo se usa el adapter desde la activity y se monta la lista.
Shared Preferences.
Pequeño ejemplo de como se usan, guardar y leer.
Para pasar datos entre activities se hace a través de un intent. Para pasar un objeto tiene que estar serializado, aquí vemos un ejemplo.
Intent intent = new Intent(this, SupportDetailActivity.class);
intent.putExtra("support", supportItem);
intent.putExtra("name","carlos");
intent.putExtra("age",15);
startActivity(intent);
Pasamos los datos al intent-->
Recuperamos los datos del intent en la activity destino
tnSupport = (TNSupport) getIntent().getSerializableExtra("support");
name=getIntent().getString("name");
...
Full transcript