IDE Android Studio

Buat ngoding lebih cepat di Android Studio dengan Templates – Part 3 (Activity Templates)

Hallo teman”, selamat datang di Part ketiga tentang Activity tamplates 😀 Ini adalah part terakhir terkait Template di Android Studio. Meskipun di...

Ikhwan Written by Ikhwan · 3 min read >

Hallo teman”, selamat datang di Part ketiga tentang Activity tamplates 😀

Ini adalah part terakhir terkait Template di Android Studio. Meskipun di judul tertulis Activity Templates, tapi kita bisa melakukan lebih dari hal itu. Dengan satu template kita bisa membuat beberapa file secara otomatis. Berikut contohnya:

Jika kamu belum membaca part sebelumnya, kamu bisa mengunjungi link berikut ini

Kembali ke topik postingan. Bagaimana cara agar kita dapat membuat Activity Template? Langsung saja, Yuk Ngoding 😀


1. Open Folder

Untuk pengguna Windows:

{ANDROID_STUDIO_LOCATION}/plugins/android/lib/templates/

Untuk pengguna macOS:

/Applications/Android Studio.app/Contents/plugins/android/lib/templates/

Folder templates
Screenshot isi dari folder templates

2. Membuat folder dan file – file baru

Sesuai dengan judul, pada postingan ini kita akan membuat template untuk Activity. Lebih spesifiknya kita akan membuat Activity dengan MVP pattern. Oleh karena itu kita akan membuat folder baru di activities. Disini kita membuat folder dengan nama YnMVP.

Contoh

Kita juga telah membuat beberapa file baru, mari kita bahas satu-satu


3. template.xml

Ini adalah file yang akan berfungsi untuk menerima inputan dari user. Berikut adalah screenshot dari template.xml yang akan kita buat.

hasil dari template.xml

Silahkan copy code berikut ini:

<?xml version="1.0"?>
<template
    format="5"
    revision="1"
    name="MVP Activity"
    description="Creates a new activity with MVP Pattern">

    <category value="Activity" />
    <formfactor value="Mobile" />

    <parameter
        id="mvpClass"
        name="MVP Name"
        type="string"
        constraints="class|unique|nonempty"
        default="mvp"
        help="The name of the MVP class to create" />

    <parameter
        id="layoutName"
        name="Layout Name"
        type="string"
        constraints="layout|unique|nonempty"
        suggest="${activityToLayout(mvpClass)}"
        default="activity_main"
        help="The name of the layout to create for the activity" />

    <parameter
        id="isLauncher"
        name="Launcher Activity"
        type="boolean"
        default="false"
        help="If true, this activity will have a CATEGORY_LAUNCHER intent filter, making it visible in the launcher" />

    <parameter
        id="packageName"
        name="Package name"
        type="string"
        constraints="package"
        default="com.mycompany.myapp" />

    <!-- 128x128 thumbnails relative to template.xml -->
    <thumbs>
        <!-- default thumbnail is required -->
        <thumb>template_blank_activity.png</thumb>
    </thumbs>

    <globals file="globals.xml.ftl" />
    <execute file="recipe.xml.ftl" />

</template>

<template>

  • name: Nama dari template. Nama ini akan muncul pada list template
  • description: Penjelasan ini akan muncul pada bagian atas form (Lihat screenshot).

<category>

  • Karena kita akan membuat template untuk activity, maka kita mengatur value dengan nilai “Activity”

<formfactor>

  • Kita membuat template untuk android, oleh karena itu kita mengatur nilai value dengan “Mobile”. Isi value sesuai dengan jenis template yang akan kita buat.

<parameter>

  • id: Sebagai tanda pengenal dari parameter. Untuk mengakses nilai inputan dari user, kita bisa mengakses melalui id.
  • name: Nama dari parameter. Name ini akan muncul pada sisi kiri form inputan
  • type: Jenis inputan yang diinginkan dari form
  • constraints: Kriteria tambahan yang digunakan untuk form
  • default: Isi dari form ketika pertama kali muncul. Seperti halnya MainActivity yang muncul pada form ketika membuat activity untuk pertama kali
  • help: Penjelasan tambahan yang akan muncul pada sisi bawah ketika sedang mengisi form
  • suggest: Saran yang akan dimunculkan pada user. Ini seperti ketika kita mengubah nama activity, nama layout juga ikut berganti secara otomatis pada template.

<thumb>

  • Image yang akan muncul ketika memilih template

4. globals.xml.ftl

Pada bagian ini kita mendeklarasikan id tambahan yang akan digunakan di setiap code template kita lainnya.

<?xml version="1.0"?>
<globals>
    <global id="hasNoActionBar" type="boolean" value="false" />
    <global id="simpleLayoutName" value="${layoutName}" />
    <global id="activityClass" value="${mvpClass}Activity" />
    <global id="excludeMenu" type="boolean" value="true" />
    <global id="generateActivityTitle" type="boolean" value="false" />
    <#include "../common/common_globals.xml.ftl" />
</globals>
  • ${layoutName} dan ${mvpClass} adalah id yang berasal template.xml. Id tersebut disimpan nilainya ke id default (seperti: simpleLayoutName) yang akan dipergunakan dalam membuat template.
  • Di file ini dan beberapa file berikutnya terdapat beberapa code include untuk default template activity. Id default (seperti: hasNoActionBar) tersebut akan digunakan di beberapa file yang diinclude tersebut.

5. recipe.xml.ftl

Code pada file ini dipergunakan untuk membuat file-file template kita nantinya.

<?xml version="1.0"?>
<#import "root://activities/common/kotlin_macros.ftl" as kt>
<recipe>
    <#include "../common/recipe_manifest.xml.ftl" />
    <@kt.addAllKotlinDependencies />

    <#include "../common/recipe_simple.xml.ftl" />
    <open file="${escapeXmlAttribute(resOut)}/layout/${layoutName}.xml" />

    <instantiate from="root/src/app_package/ViewClass.kt.ftl"
                   to="${escapeXmlAttribute(srcOut)}/${mvpClass}Activity.kt" />

    <instantiate from="root/src/app_package/ContractClass.kt.ftl"
                   to="${escapeXmlAttribute(srcOut)}/${mvpClass}Contract.kt" />

    <instantiate from="root/src/app_package/PresenterClass.kt.ftl"
                   to="${escapeXmlAttribute(srcOut)}/${mvpClass}Presenter.kt" />

    <open file="${escapeXmlAttribute(srcOut)}/${mvpClass}Activity.kt" />

    <open file="${escapeXmlAttribute(srcOut)}/${mvpClass}Contract.kt" />

    <open file="${escapeXmlAttribute(srcOut)}/${mvpClass}Presenter.kt" />

</recipe>
  • recipe_manifest.xml.ftl ditambahkan agar activity terdaftar di AndroidManifest.xml
  • instantiate digunakan untuk membuat file-file template kita. from mereferensikan berdasarkan template yang mana akan dibuat sebuah file. to adalah alamat sekaligus penamaan dari file template yang akan dibuat.
  • ${mvpClass} dan ${layoutName} adalah id yang berasal dari template.xml
  • open digunakan untuk membuka file-file yang telah dibuat.

6. ViewClass.kt.ftl

Ini adalah file template pertama yang akan digunakan untuk membuat Activity

package ${escapeKotlinIdentifiers(packageName)}

import android.content.Context
import android.content.Intent
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity

class ${mvpClass}Activity : AppCompatActivity(), ${mvpClass}Contract.View {

    lateinit var presenter: ${mvpClass}Presenter

    companion object {
        fun startThisActivity(context: Context) {
            val intent = Intent(context, ${mvpClass}Activity::class.java)
            context.startActivity(intent)
        }
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.${layoutName})
    }

}
  • ${escapeKotlinIdentifiers(packageName)} digunakan untuk menuliskan package sesuai dengan lokasi file dibuat
  • ${mvpClass} dan ${layoutName} adalah id yang berasal dari file template.xml

7. ContractClass.kt.ftl

package ${escapeKotlinIdentifiers(packageName)}

interface ${mvpClass}Contract {
    interface View{
    }

    interface Presenter {
        fun dropView()
    }
}
  • {escapeKotlinIdentifiers(packageName)} digunakan untuk menuliskan package sesuai dengan lokasi file dibuat
  • ${mvpClass} adalah id yang berasal dari file template.xml

8. PresenterClass.kt.ftl

package ${escapeKotlinIdentifiers(packageName)}

import android.content.Context

class ${mvpClass}Presenter(var view: ${mvpClass}Contract.View)
    : ${mvpClass}Contract.Presenter {

    override fun dropView() {
    }

}
  • {escapeKotlinIdentifiers(packageName)} digunakan untuk menuliskan package sesuai dengan lokasi file dibuat
  • ${mvpClass} adalah id yang berasal dari file template.xml

9. Jalankan

Setelah semua file selesai dibuat, buka Android Studio (Jika android studio telah terbuka, silahkan direstart terlebih dahulu). Dengan panduan dari tutorial ini kita bisa membuat file-file seperti pada Video di bagian awal postingan ini.

#Note

Sampai saat ini kita belum bisa membuat pilihan template activity muncul ketika project baru dibuat.

Sekian postingan ini, akhirnya kita sampai di part terakhir tentang template di IDE Android Studio. Jika ada kesalahan dalam penulisan atau penjelasan bisa diberi tahu melalui komen atau email. Terimakasih 😀

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *