Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Build More with KOTLIN Anko | AndroidDevSBY Mee...

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
Tweet

More Decks by AndroidDev Surabaya

Other Decks in Programming

Transcript

  1. 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
  2. startActivity<MainActivity>("ORDER" to "1234") // Ya .. cuma segitu :D /*

    Tapi, Kotlin + Anko menjadikannya lebih gampang dibaca dan sangat ringkas .. */ Bundle Target Activity
  3. // 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())
  4. // 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!")
  5. 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
  6. 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
  7. 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!
  8. // 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")
  9. // 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"
 ...
  10. 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.
  11. Kenapa menggunakan DSL? Pada dasarnya, kita menggunakan XML untuk membuat

    tampilan di aplikasi Android. Banyak hal perlu diperhatikan,
  12. 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
  13. 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)
  14. // Here is the ANKO LAYOUT! verticalLayout { val name

    = editText() button("Say Hello") { onClick { toast("Hello, ${name.text}!") } } }
  15. Thanks “Write less to Build more” @inibukanadit * read more

    about Anko SQlite and Coroutines at github.com/Kotlin/anko