Anda di halaman 1dari 11

1. Jetpack Compose adalah toolkit modern Android untuk mem-build UI native.

Compose menyederhanakan dan mempercepat pengembangan UI di Android


yang menghidupkan aplikasi dengan kode yang lebih sedikit, alat yang
canggih, dan API Kotlin yang intuitif. Compose membuat build UI Android
menjadi lebih cepat dan lebih mudah. Saat membuat Compose, kami bekerja
sama dengan berbagai partner yang merasakan langsung semua manfaat ini
dan mereka menyampaikan beberapa pendapatnya kepada kami.

 Lebih sedikit kode 


Menulis lebih sedikit kode memengaruhi semua tahap pengembangan: sebagai
penulis, Anda bisa berfokus pada masalah yang ada, dengan lebih sedikit pengujian
dan debug, serta sedikit potensi adanya bug; sebagai peninjau atau pengelola, Anda
memiliki lebih sedikit kode untuk dibaca, dipahami, ditinjau, dan dikelola.
Compose memungkinkan Anda melakukan lebih banyak hal dengan lebih sedikit
kode, dibandingkan dengan menggunakan sistem Android View: Button, daftar, atau
animasi - apa pun yang Anda perlukan untuk mem-build, kini kode yang ditulis lebih
sedikit. Berikut adalah pendapat dari beberapa partner kami:
“Untuk class Button yang sama, [kode] berukuran 10x lebih kecil.” (Twitter)

“Ada juga pengurangan yang signifikan untuk layar apa pun yang dibuat dengan
RecyclerView, tempat sebagian besar layar kami berada.” (Monzo)

“Kami sangat senang melihat sedikitnya jumlah baris yang diperlukan untuk membuat
daftar atau animasi di aplikasi. Kami menulis lebih sedikit baris kode per fitur, yang
memungkinkan kami lebih berfokus pada memberikan nilai kepada pelanggan.” (Cuvva).
Kode yang Anda tulis hanya ditulis di Kotlin, bukan dibagi antara Kotlin dan XML:
“Menelusuri kode menjadi lebih mudah saat semuanya ditulis dalam bahasa yang sama dan
sering kali file yang sama, dibandingkan berpindah-pindah antara Kotlin dan XML” (Monzo).
Kode yang ditulis dengan Compose sederhana dan mudah mengelola apa pun yang sedang
Anda buat. “Sistem tata letak Compose secara konseptual lebih sederhana, sehingga lebih
mudah untuk dipertimbangkan. Membaca kode untuk komponen yang rumit juga lebih
mudah.” (Square)

 Intuitif 

Compose menggunakan API deklaratif, yang berarti Anda hanya perlu menjelaskan fungsi UI
Anda dan Compose akan menangani sisanya. API-nya intuitif serta mudah ditemukan dan
digunakan: “Lapisan tema kami jadi jauh lebih intuitif dan mudah dibaca. Dulu, kami harus
menggunakan beberapa file XML untuk menetapkan tugas dan definisi atribut melalui
sejumlah overlay tema berlapis. Sekarang, itu semua dapat kami selesaikan dengan satu file
Kotlin saja.” (Twitter). Dengan Compose, Anda mem-build komponen kecil stateless yang
tidak terikat pada aktivitas atau fragmen tertentu. Hal tersebut membuatnya mudah
digunakan kembali dan diuji: “Kami menetapkan tujuan bagi diri kami sendiri untuk
memberikan serangkaian komponen UI baru yang stateless, mudah digunakan dan
dipertahankan, serta intuitif untuk diimplementasikan/diperluas/disesuaikan. Compose
benar-benar memberikan jawaban yang solid untuk kami dalam hal ini.” (Twitter). Di
Compose, status bersifat eksplisit dan diteruskan ke fungsi composable. Dengan begitu, ada
satu sumber tepercaya untuk status, yang membuatnya terenkapsulasi dan terpisah.
Kemudian, seiring perubahan status aplikasi Anda, UI aplikasi Anda akan otomatis terupdate.
“Proses pengambilan keputusan jadi sangat mudah dan komponennya pun dapat dipahami
dan dikontrol dengan mudah.” (Cuvva).
 Mempercepat pengembangan 
Compose kompatibel dengan semua kode yang ada: Anda dapat memanggil kode Compose
dari Views dan Views dari Compose. Library yang paling umum seperti Navigation,
ViewModel, dan coroutine Kotlin berfungsi dengan Compose, sehingga Anda dapat mulai
mengadopsi kapan dan di mana pun Anda inginkan. “Interoperabilitas adalah tempat kami
mulai mengintegrasikan Compose, dan yang kami lihat adalah 'langsung berfungsi'. Kami
merasa tidak perlu memikirkan hal-hal seperti mode terang dan gelap, dan seluruh
pengalamannya sangat lancar.” (Cuvva). Dengan menggunakan dukungan penuh Android
Studio, dengan fitur seperti pratinjau langsung, Anda dapat melakukan iterasi dan mengirim
kode lebih cepat: “Pratinjau di Android Studio telah menghemat banyak waktu. Dapat mem-
build beberapa pratinjau juga menghemat waktu kami. Sering kali, kami perlu memeriksa
komponen UI di berbagai status atau berbagai setelan -- seperti status error, atau dengan
ukuran font yang berbeda, dsb. Dengan kemampuan untuk membuat beberapa pratinjau,
kami dengan mudah dapat memeriksanya.” (Square).

 Canggih 
Compose memungkinkan Anda membuat aplikasi yang menarik dengan akses langsung ke
API platform Android dan dukungan bawaan untuk Desain Material, Tema gelap, animasi,
dan lainnya: “Compose juga telah menyelesaikan lebih dari UI deklaratif -- API aksesibilitas,
tata letak, semua jenis pekerjaan telah ditingkatkan. Ada langkah yang lebih sedikit antara
hal yang ingin Anda buat dan membuatnya langsung” (Square). Dengan Compose, membuat
aplikasi seolah bergerak dan hidup lewat animasi menjadi cepat dan mudah diterapkan:
“animasi sangat mudah untuk ditambahkan di Compose sehingga hampir tidak ada alasan
untuk tidak menganimasikan hal-hal seperti perubahan warna/ukuran/elevasi” (Monzo),
“Anda dapat membuat animasi tanpa memerlukan fitur khusus -- ini sama dengan
menampilkan layar statis”(Square). Baik Anda mem-build dengan Desain Material maupun
sistem desain Anda sendiri, Compose memberi Anda fleksibilitas untuk
mengimplementasikan desain yang Anda inginkan: “Dengan Desain Material yang terpisah
dari dasarnya sangat berguna bagi kami karena kami mem-build desain kami sendiri yang
biasanya memerlukan persyaratan desain yang berbeda dari Material.” (Square).
2. A
B.
C. MainActivity

Buat project baru. Kemudian buat sebuah activity dengan nama MainActivity. Kodingnya adalah

sebagai berikut.

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:app="http://schemas.android.com/apk/res-auto"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:paddingBottom="@dimen/activity_vertical_margin"

android:paddingLeft="@dimen/activity_horizontal_margin"

android:paddingRight="@dimen/activity_horizontal_margin"

android:paddingTop="@dimen/activity_vertical_margin"

app:layout_behavior="@string/appbar_scrolling_view_behavior"

tools:context="com.example.lucianugraheni.trylist.MainActivity"

tools:showIn="@layout/activity_main"

android:orientation="vertical">

<TextView

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:id="@+id/textView"

android:textStyle="bold”

android:text="Selamat datang"/>

ListView

android:layout_width="match_parent"

android:layout_height="match_parent"

android:id="@+id/listView"

android:layout_gravity="center_horizontal">
</ListView>

<LinearLayout

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:orientation="horizontal"

android:layout_gravity="center_horizontal"

android:weightSum="1">

<EditText

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:id="@+id/editText"

android:layout_weight="0.5"

android:hint="Tambahkan hewan"/>

<Button

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="TAMBAH"

android:id="@+id/button"

android:layout_gravity="right"

android:textStyle="bold"/>

</LinearLayout>

</LinearLayout>

Dan tambahkan pada file ActivityUtama.java sehingga menjadi sebagai berikut

import android.support.v7.app.ActionBarActivity;

import android.os.Bundle;

import android.view.KeyEvent;

import android.view.View;

import android.widget.AdapterView;
import android.widget.Button;

import android.widget.EditText;

import android.widget.ListView;

import android.widget.TextView;

import java.util.ArrayList;

public class MainActivity extends ActionBarActivity {

EditText editText;

Button addButton;

TextView textView;

SimpleArrayAdapter adapter;

ListView listview;

ArrayList<String> arrayList;

Runnable run;

@Override

protected void onCreate(Bundle savedInstanceState) {

Super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

..........................

//deklarasi objek layout

addButton = (Button) findViewById(R.id.button);

textView = (TextView) findViewById(R.id.textView);

editText = (EditText) findViewById(R.id.editText);

listview = (ListView) findViewById(R.id.listView);

String[] hewan = new String[]{"Singa", "Macan", "Buaya",

"Serigala", "Badak"};

arrayList = new ArrayList<String>();

for (int i = 0; i < hewan.length; ++i) {

arrayList.add(hewan[i]);
}

adapter = new SimpleArrayAdapter(this,

android.R.layout.simple_list_item_1, arrayList);

listview.setAdapter(adapter);

listview.setOnItemClickListener(new

AdapterView.OnItemClickListener() {

@Override

public void onItemClick(AdapterView<?> parent,

final View view, int position, long id) {

final String item =

(String) parent.getItemAtPosition(position);

textView.setText("Yang dipilih: " + item);

});

addButton.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View arg0) {

tambahDaftar();

});

private boolean tambahDaftar() {

adapter.add(editText.getText().toString());

arrayList.add(editText.getText().toString());

editText.setText("");

adapter.notifyDataSetChanged();

listview.smoothScrollToPosition(adapter.getCount() - 1);

return true;

Buat sebuah java class dengan nama SimpleArrayAdapter.java. Kodingnya sebagai berikut.
import android.content.Context;

import android.widget.ArrayAdapter;

import java.util.HashMap;

import java.util.List;

public class SimpleArrayAdapter extends ArrayAdapter<String> {

//private static final String TAG = "SimpleArrayAdapter";

Context context;

int textViewResourceId;

HashMap<String, Integer> hashMap = new HashMap<String,

Integer>();

public SimpleArrayAdapter(Context context,

int textViewResourceId,

List<String> objects) {

super(context, textViewResourceId, objects);

this.context = context

this.textViewResourceId = textViewResourceId;

for (int i = 0; i < objects.size(); ++i) {

hashMap.put(objects.get(i), i);

@Override

public long getItemId(int position) {

String item = getItem(position);

return hashMap.get(item);

@Override

public boolean hasStableIds() {

return true;

@Override
public void add(String object) {

hashMap.put(object, hashMap.size());

this.notifyDataSetChanged();

DataProvider.java

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

public class DataProvider {

public static HashMap<String, List<String>> getInfo(){

HashMap<String, List<String>> MoviesDetails =

new HashMap<String, List<String>>();

List<String> Action_Movies = new ArrayList<>();

Action_Movies.add("AA");

Action_Movies.add("BB");

Action_Movies.add("CC");

Action_Movies.add("DD");

Action_Movies.add("EE");

List<String> Romantic_Movies = new ArrayList<>();

Romantic_Movies.add("FF");

Romantic_Movies.add("GG");

Romantic_Movies.add("HH");

Romantic_Movies.add("II");

Romantic_Movies.add("JJ");

List<String> Horror_Movies = new ArrayList<>();

Horror_Movies.add("KK");

Horror_Movies.add("LL");

Horror_Movies.add("MM");
Horror_Movies.add("NN");

Horror_Movies.add("OO");

List<String> Comedy_Movies = new ArrayList<>();

Comedy_Movies.add("PP");

Comedy_Movies.add("QQ");

Comedy_Movies.add("RR");

Comedy_Movies.add("SS");

Comedy_Movies.add("TT");

MoviesDetails.put("Action Movies", Action_Movies);

MoviesDetails.put("Romantics Movies", Romantic_Movies);

MoviesDetails.put("Horror Movies", Horror_Movies);

MoviesDetails.put("Comedy Movies", Comedy_Movies);

return MoviesDetails;

Anda mungkin juga menyukai