Loading…
Transcript

Kotlin y Android

Emmanuel M

Kotlin

Ideas basicas:

Kotlin

  • Java con menos boilerplate
  • Solucionar "es nulo cuando no debería serlo" (aka NPE)

Variables

Variables

var x = 3

val x = 3

var y: Int = 3

val y: Int = 3

val y = 3

val x = y

var y = 3

var x = y

var y = 3

y = -5

val y: Int

y = -5

Funciones

Funciones

fun f() = 3

fun h(a: Int, b: Float): Float =

a + b

fun f1(a: Int) = a+1

fun h(a: Int, b: Float): Float {

return a + b

}

fun f1(a: Int): Int = a+1

fun f2(x: Int, f: (Int) -> Int) = f(x) +1

fun Int.sum(x: Int) = this + x

USO: 3.sum(1) == 4

Clases

Clases

class Clase

class Clase(obj: String) {

val b: Int = 0

}

class Clase(obj: String) {

var len: Int

private set

init {

len = obj.length

}

}

Herencia

open class X {

open fun numero() = 3

}

class Y: X() {

override fun numero() = 4

fun otro() = 5

}

Interfaces

interface A {

var casa: Int

fun bar()

fun foo() = casa

}

Data class

data class D(val a: Int, val b: Int)

Singletons (object)

object Editor {

var a = 0

}

companion object {

val a = 0

}

Tipos

Tipos

En Kotlin todo es un objeto

Unit y Nothing

fun a() = print("aaaa")

fun a(): Unit = print("aaaa")

fun b(): Nothing = print("Matenme")

Nullablilidad

  • Nullable (Int)
  • Non-null (Int?)

Android

Apps vs programas

Android

Activity

Activity

Las actividades son uno de los bloques de construcción fundamentales para la plataforma Android.

Sirven como punto de entrada para las interacciones del usuario con la app, pero tambien son centrales a como el usuario navega dentro de la app on entre apps

Lifecicle

onCreate()

onResume()

onPause()

onDestroy()

Guardar y restaurar el estado

onSaveInstanceState(Bundle)

onRestoreInstanceState(Bundle) ó onCreate(Bundle)

Context

  • Recursos (imagenes, texto traducido, esquemas de vistas)
  • Creación de elementos visibles
  • Operaciones de la aplicación (lanzar otras actividades)

Intents

Moverse a otra Activity:

  • Editar texto
  • Pedir una imagen
  • ...

Fragments

Componentes visuales modulares

Vistas

Vistas

Creación:

  • XML
  • Programaticamente

Encontrarlas: por id o `findViewById()`

Propiedades

  • id
  • alto y ancho
  • anclajes
  • visibilidad (VISIBLE, INVISIBLE, GONE)

Toques

setOnClickListener()

propiedad: onClick

Material Design

Reglas generales para UI

https://material.io

Asincronicidad

Asincronicidad

AsyncTask

AsyncTask e instancias de Context

Loaders

Gracias!

por Emmanuel Messulam

github.com/EmmanuelMess

Agradecimientos especiales a:

Ignacion "Petru" Petruskevicius

Alexander Rvachev (GIthub @Alexander--)

Vishal Nehra (Github @VishalNehra)

Jesús Conde (YT Jesús Conde)