Share
Embed
Build More with KOTLIN Anko | AndroidDevSBY Meetup 11
Build More with KOTLIN Anko | AndroidDevSBY Meetup 11
Pemateri :
- Ahmad Bagus Aditya Chandra
- M. Khoiron
Lokasi : Kampus UNESA Ketintang.
AndroidDev Surabaya
August 13, 2018
Transcript
24 slides
-
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 -
Library yang RINGAN dengan Banyak Helpers untuk Intent, Dialog, Logging,
dll Anko : Commons -
Intent detailIntent = new Intent(this, HomeActivity.class); detailIntent.putExtra("ORDER", "1234"); startActivity(detailIntent); /*
Biasanya, kita menulis kode untuk menampilkan Activity di Java, seperti ini .. */ -
startActivity(Intent(this, MainActivity::class.java).apply { putExtra("ORDER", "1234") }) /* Kita bisa menulis
lebih ringkas menggunakan Kotlin .. */ -
startActivity<MainActivity>("ORDER" to "1234") // Ya .. cuma segitu :D /*
Tapi, Kotlin + Anko menjadikannya lebih gampang dibaca dan sangat ringkas .. */ Bundle Target Activity -
// 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<MainActivity>("ORDER" to "1245") .newTask() .singleTop()) -
// 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!") -
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 -
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 -
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! -
// 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") -
// 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" ... -
Library yang Membantumu Ngoding Layout Lebih Type-safe dan Hemat Waktu
Anko : Layout Type-safe in action -
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. -
Kenapa menggunakan DSL? Pada dasarnya, kita menggunakan XML untuk membuat
tampilan di aplikasi Android. Banyak hal perlu diperhatikan, -
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 -
Untuk mengatasi hal tersebut, kita bisa membuat Layout programmatically langsung
di Java / Kotlin, seperti ini .. -
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) -
Itu cukup untuk mengatasi mengatasi masalah parsing ketika menggunakan XML
.. Tapi terlalu sulit dibaca, -
// Here is the ANKO LAYOUT! verticalLayout { val name
= editText() button("Say Hello") { onClick { toast("Hello, ${name.text}!") } } } -
Thanks “Write less to Build more” @inibukanadit * read more
about Anko SQlite and Coroutines at github.com/Kotlin/anko