Slide 1

Slide 1 text

AndroidDev Surabaya Meetup #11 Build More with Kotlin Anko

Slide 2

Slide 2 text

Ahmad Bagus Aditya Chandra Android Developer di PT. PICODIO
 DSC Lead di Universitas Narotama
 Lulusan KADE di Dicoding
 Fasilitator IAK Intermediate Thn. 2017 Find me everywhere 
 Telegram @inibukanadit
 http://medium.com/@inibukanadit

Slide 3

Slide 3 text

M. Khoiron Telegram @KhoironRezpect
 http://github.com/mkhoiron
 http://medium.com/@khoiron

Slide 4

Slide 4 text

Mengembangkan Aplikasi Android
 Lebih CEPAT dan MUDAH dengan Anko.

Slide 5

Slide 5 text

Library yang RINGAN dengan Banyak Helpers
 untuk Intent, Dialog, Logging, dll Anko : Commons

Slide 6

Slide 6 text

Intent detailIntent = new Intent(this, HomeActivity.class); detailIntent.putExtra("ORDER", "1234"); startActivity(detailIntent); /* Biasanya, kita menulis kode untuk menampilkan Activity di Java, seperti ini .. */

Slide 7

Slide 7 text

startActivity(Intent(this, MainActivity::class.java).apply { putExtra("ORDER", "1234") }) /* Kita bisa menulis lebih ringkas menggunakan Kotlin .. */

Slide 8

Slide 8 text

startActivity("ORDER" to "1234") // Ya .. cuma segitu :D /* Tapi, Kotlin + Anko menjadikannya lebih gampang dibaca dan sangat ringkas .. */ Bundle Target Activity

Slide 9

Slide 9 text

// Bagaimana jika pindah activity menggunakan Flags? Intent detailIntent = new Intent(this, HomeActivity.class);
 detailIntent.putExtra("ORDER", "1234");
 detailIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_SINGLE_TOP)
 startActivity(detailIntent); // Lebih ringkas dengan Kotlin! startActivity(Intent(this, MainActivity::class.java).apply {
 putExtra("ORDER", "1234")
 addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_SINGLE_TOP)
 }) // Tapi Anko ga kalah :D startActivity(intentFor("ORDER" to "1245")
 .newTask()
 .singleTop())

Slide 10

Slide 10 text

// Kita biasa menulis Toast seperti ini (Java & Kotlin) Toast.makeText(this, "Kamu berhasil terdaftar", Toast.LENGTH_SHORT).show() // Ini dengan Anko .. toast("Kamu berhasil terdaftar!") // Mau Long Toast? Gampang :D longToast("Kamu berhasil terdaftar!")

Slide 11

Slide 11 text

new AlertDialog.Builder(this) .setTitle("Hapus Email") .setMessage("Kamu yakin untuk menghapus email ini?") .setPositiveButton("Hapus", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // hapus email } }) .setNegativeButton("Batal", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }) .show(); // Membuat confirm dialog di Java

Slide 12

Slide 12 text

AlertDialog.Builder(this) .setTitle("Hapus Email") .setMessage("Kamu yakin untuk menghapus email ini?") .setPositiveButton("Hapus") { _, _ -> // hapus email } .setNegativeButton("Batal") { _, _ -> dialog.dismiss() } .show() // Lagi .. Kotlin lebih ringkas

Slide 13

Slide 13 text

alert("Kamu yakin untuk menghapus email ini?", "Hapus Email") {
 yesButton { /* Hapus email */ }
 noButton { it.dismiss() }
 } // Yes! So smoooth, right? // Tapi .. Kotlin Anko cuma 4 baris!

Slide 14

Slide 14 text

// Mau buat list picker? val countries = listOf("Russia", "USA", "Japan", "Australia")
 selector("Where are you from?", countries, { dialogInterface, i ->
 toast("So you're living in ${countries[i]}, right?")
 }) // Atau progress dialog? val dialog = progressDialog("Mohon bersabar ...", "Mengumpulkan data")

Slide 15

Slide 15 text

// Tambahkan dependencies berikut di Gradle untuk
 // menggunakan Anko Commons ...
 implementation "org.jetbrains.anko:anko-commons:$anko_version"
 implementation "org.jetbrains.anko:anko-design:$anko_version"
 ...

Slide 16

Slide 16 text

Library yang Membantumu Ngoding Layout
 Lebih Type-safe dan Hemat Waktu
 Anko : Layout Type-safe in action

Slide 17

Slide 17 text

Anko Layout is DSL (Domain-Specific Language), DSL merupakan bahasa yang dikembangkan untuk area spefisik suatu bahasa diatasnya. Secara ringkas bisa disebut Mini-Language. Dalam hal ini, Anko Layout adalah mini-language- nya Kotlin untuk Layouting.

Slide 18

Slide 18 text

Kenapa menggunakan DSL? Pada dasarnya, kita menggunakan XML untuk membuat tampilan di aplikasi Android. Banyak hal perlu diperhatikan,

Slide 19

Slide 19 text

Yang terjadi ketika menggunakan XML, - Membuatmu menulis kodingan yang hampir sama di setiap layout yang dibuat - XML di parsing di device android yang menyebabkan borosnya penggunaan CPU dan Baterai - Most of all, sulitnya melakukan code-reuse

Slide 20

Slide 20 text

Untuk mengatasi hal tersebut, kita bisa membuat Layout programmatically langsung di Java / Kotlin, seperti ini ..

Slide 21

Slide 21 text

val act = this val layout = LinearLayout(act) layout.orientation = LinearLayout.VERTICAL val name = EditText(act) val button = Button(act) button.text = "Say Hello" button.setOnClickListener { Toast.makeText(act, "Hello, ${name.text}!", Toast.LENGTH_SHORT).show() } layout.addView(name) layout.addView(button)

Slide 22

Slide 22 text

Itu cukup untuk mengatasi mengatasi masalah parsing ketika menggunakan XML .. Tapi terlalu sulit dibaca,

Slide 23

Slide 23 text

// Here is the ANKO LAYOUT! verticalLayout { val name = editText() button("Say Hello") { onClick { toast("Hello, ${name.text}!") } } }

Slide 24

Slide 24 text

Thanks “Write less to Build more” @inibukanadit * read more about Anko SQlite and Coroutines at github.com/Kotlin/anko