Anko es una librería de Kotlin creada por el equipo de Jetbrains. Hace que el desarrollo de aplicaciones para Android sea más rápido y fácil, además hace que su código sea limpio y fácil de leer
Anko consta de 4 módulos:
- Anko Commons : una biblioteca llena de ayuda para crear intents, diálogos, logins, etc.
- Anko Layouts : una forma rápida y segura para escribir diseños dinámicos de Android. Todo se hace a través de código, sin utilizar los xml.
- Anko SQLite : una consulta DSL y una colección de analizadores para Android SQLite.
- Anko Coroutines : utilidades basadas en la biblioteca kotlinx.coroutines
Nosotros en este ejemplo hemos utilizado Anko Commons con la parte de Intents. Para ello solo vamos a necesitar añadir dicha dependencia:
1 2 |
ext.anko_version='0.10.8' implementation "org.jetbrains.anko:anko-commons:$anko_version" |
Una vez hecho esto tendremos en la activity principal 3 botones, que realizaran las siguientes tareas:
- Pasar parámetros entre actividades
- Utilizar flags entre actividades
- Pasar un objeto entre actividades
Diseño
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
<?xml version="1.0" encoding="utf-8"?> <androidx.appcompat.widget.LinearLayoutCompat xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:orientation="vertical" android:layout_height="match_parent"> <include android:id="@+id/toolbar" layout="@layout/toolbar"/> <androidx.appcompat.widget.LinearLayoutCompat android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center_vertical" android:padding="40dp" android:orientation="vertical"> <com.google.android.material.button.MaterialButton android:layout_width="match_parent" android:layout_height="wrap_content" android:backgroundTint="@color/buttonColor" app:cornerRadius="16dp" android:text="Intent Extra" android:id="@+id/buttonIntentExtras"/> <com.google.android.material.button.MaterialButton android:layout_width="match_parent" android:layout_height="wrap_content" android:backgroundTint="@color/buttonColor" android:id="@+id/buttonIntentFlags" app:cornerRadius="16dp" android:text="Intent Flags" android:layout_marginTop="40dp"/> <com.google.android.material.button.MaterialButton android:layout_width="match_parent" android:layout_height="wrap_content" android:backgroundTint="@color/buttonColor" android:text="Intent Object" android:id="@+id/buttonIntentObject" app:cornerRadius="16dp" android:layout_marginTop="40dp"/> </androidx.appcompat.widget.LinearLayoutCompat> </androidx.appcompat.widget.LinearLayoutCompat> |
Código
En el siguiente código muestro cómo funciona Anko con las 3 tareas mencionadas anteriormente. Luego vosotros necesitareis recuperar aquellos datos que se hayan pasado de una actividad a otra. Se hace exactamente igual que Java pero con la nomenclatura de Kotlin.
Si necesitáis ayuda mas abajo he puesto un enlace al repositorio para que podáis echar un vistazo
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
package com.albrivas.intents import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import androidx.appcompat.widget.Toolbar import com.albrivas.intents.model.Person import com.albrivas.intents.activities.IntentExtrasActivity import com.albrivas.intents.activities.IntentFlagActivity import com.albrivas.intents.activities.IntentObjectActivity import kotlinx.android.synthetic.main.activity_main.* import org.jetbrains.anko.intentFor import org.jetbrains.anko.noAnimation class IntentsActivity : AppCompatActivity() { companion object { const val NAME = "name" const val LASTNAME = "lastname" const val GENDER = "genero" const val DEVELOPER = "developer" const val OBJECT = "object" } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) setSupportActionBar(toolbar as Toolbar?) acciones() } private fun acciones() { buttonIntentExtras.setOnClickListener { goIntentExtras() } buttonIntentFlags.setOnClickListener { goIntentFlags() } buttonIntentObject.setOnClickListener { goIntentObject() } } private fun goIntentExtras() { var intent = intentFor<IntentExtrasActivity>( NAME to "Alberto", LASTNAME to "Rivas Ramos", GENDER to "Hombre", DEVELOPER to true) startActivity(intent) } private fun goIntentFlags() { var intent = intentFor<IntentFlagActivity>( NAME to "Alberto", LASTNAME to "Rivas Ramos", GENDER to "Hombre", DEVELOPER to true).noAnimation() startActivity(intent) } private fun goIntentObject() { var person = Person("Juan", "Gomez Garcia", "Hombre", false) var intent = intentFor<IntentObjectActivity>(OBJECT to person) startActivity(intent) } } |
El código completo lo podéis encontrar en el siguiente enlace: