Cara Membuat AppBarLayout dan CoordinatorLayout di Android Material Design
Assalamualaikum Warahmatullahi Wabarakatuh.
Disini kita akan melanjutkan pembahasan mengenai Material Design, Pada tutorial berikut ini kita akan mempelajari bagaimana cara mengimplementasikan AppBarLayout dan CoordinatorLayout pada Aplikasi Android. AppBarLayout adalah suatu elemen layout wrapper yang memungkinkan ToolBar atau views didekatnya untuk bereaksi ketika ada user yang mengscroll pada suatu halaman/activity. Contohnya seperti pada Aplikasi WhatApp, dimana saat user mengscroll kebawah maka Toolbar nya akan menghilang, namun element TabLayout pada pada aplikasi tersebut masih kelihatan.
CoordinatorLayout digunakan untuk mengontrol interaksi antar elements pada layout saat terjadi click events. Misalnya jika kita menggunakan SnackBar, dimana saat FloatingActionButton diklik maka SnackBar akan muncul dan menutupi sebagian dari FAB tersebut. Namun dengan menggunakan CoordinatorLayout, FAB itu secara otomatis akan naik ke atas saat SnackBar muncul sehingga bagian dari FAB tidak akan tertutup oleh FAB.
Membuat AppBarLayout di Android Material Design
Pada tutorial ini, kita akan mencoba mengimplementasikan AppBarLayout dengan CoordinatorLayout, kedua elemen tersebut mempunyai fungsi yang berbeda namun dalam implementasinya kedua elemen tersebut berhubungan satu sama lain. Jadi untuk melengkapi tutorial berikut ini, kita akan belajar keduanya.Disini kita akan membuat User Interface yang mirip dengan Aplikasi WhatsApp, dimana saat user mengscroll kebawah maka Toolbar nya akan menghilang, namun element TabLayout pada pada aplikasi tersebut masih kelihatan.
Sebelum melanjutkan tutorial berikut ini, ada beberapa komponen Material Design yang harus kalian buat dan pelajari, seperti:
- Custom Toolbar Material Design
- TabLayout Material Design
- RecyclerView Material Design
- SnackBar Material Design
implementation 'com.android.support:appcompat-v7:27.0.2'
implementation 'com.android.support:design:27.0.2'
implementation 'com.android.support:recyclerview-v7:27.0.2'
implementation 'com.android.support:support-v4:27.0.2'
Disini kita akan membuat Toolbar secara terpisah dengan MainActivity, jadi Toolbar tersebut tidak kita masukan secara langsung pada Activity Utama kita. klik kana pada direktori layout, lalu pilih new Layout resource file, berinama layout tersebut dengan nama "my_toolbar". Kalian buat dan ubah baris kode xml pada Toolbar tersebut menjadi seperti ini:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/colorPrimary"
android:minHeight="?attr/actionBarSize"
app:layout_scrollFlags="scroll|enterAlways|snap"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
app:theme="@style/AppTheme">
</android.support.v7.widget.Toolbar>
Atribut layout_scrollFlags digunakan untuk menghandle event scrolling, Saat layout discroll kebawah, maka Toolbar akan menghilang, namun elemen TabLayout akan tetap menempel pada bagian atas layar.B. Menerapkan Masing-Masing Komponen pada Activity Utama
Selanjutnya buka file activity_main.xml pada project kalian, disini kita akan menambahkan CoordinatorLayout, AppBarLayout, Toolbar, TabLayout dan ViewPager. Yang sudah kita buat tadi, jika belum, kalian dapat melihat tutorialnya yang sudah saya berikan tadi.
Pada Activity tersebut, kalian buat dan ubah kode xmlnya menjadi seperti berikut ini:
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/coordinator_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FFFFFF"
android:orientation="vertical">
<android.support.design.widget.AppBarLayout
android:id="@+id/appBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/background_light">
<!-- Memanggil dan Menerapkan Toolbar pada MainActivity -->
<include
android:id="@+id/toolbar"
layout="@layout/activity_my_toolbar"/>
<android.support.design.widget.TabLayout
android:id="@+id/tab_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/colorPrimary"
app:tabMode="fixed"
app:tabSelectedTextColor="#FFFFFF"
app:tabTextColor="#FFFFFF">
<android.support.design.widget.TabItem
android:id="@+id/tab_kontak"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="Teman" />
<android.support.design.widget.TabItem
android:id="@+id/tab_pesan"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="Pesan" />
</android.support.design.widget.TabLayout>
</android.support.design.widget.AppBarLayout>
<!-- Menerapkan TabLayout dan ViewPager -->
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
</android.support.v4.view.ViewPager>
<android.support.design.widget.FloatingActionButton
android:id="@+id/FAB"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_gravity="bottom|right"
android:layout_marginBottom="20dp"
android:layout_marginRight="20dp"
android:src="@drawable/add_teman"
app:backgroundTint="@color/colorPrimaryDark"
app:fabSize="normal" />
</android.support.design.widget.CoordinatorLayout>
Jika kita ubah pada mode Design, maka akan terlihat seperti berikut ini:
Penjelasan:
C. Menerapkan RecylerView pada Fragment didalam TabLayout
Pada TabLayout terdapat 2 buh flagment yang sudah kita buat sebelumnya, yaitu frag1_kontak dan frag2_pesan, disini kita akan memasukan source code untuk RecyclerView pada salah satu fragment tersebut, misalnya pada frag1_kontak:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/background_light"
tools:context="cianjur.developer.net.toolbar.Frag1_Kontak">
<android.support.v7.widget.RecyclerView
android:id="@+id/recycler"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="vertical">
</android.support.v7.widget.RecyclerView>
</RelativeLayout>
Buka file Frag1_kontak.java, Masukan source code berikut ini:
D. Demo:package cianjur.developer.net.toolbar;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.support.v4.content.ContextCompat;
import android.support.v7.widget.DividerItemDecoration;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import java.util.ArrayList;
import java.util.Arrays;
public class Frag1_Kontak extends Fragment {
private ArrayList JudulMeme;
//Daftar Teman
private String[] Judul = {"Wildan", "Taufan", "Aish", "Ferdi", "Taufik", "Dzaki", "Annisa",
"Diki","Sinta","Agung","Andita","Dirham","Fadhil","Azis","Mukiidi","Tata"};
@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view_frag1 = inflater.inflate(R.layout.activity_frag1__kontak, container, false);
JudulMeme = new ArrayList<>();
RecyclerView recyclerView = view_frag1.findViewById(R.id.recycler);
DaftarItem();
//Menggunakan Layout Manager, Dan Membuat List Secara Vertical
RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(getContext());
recyclerView.setLayoutManager(layoutManager);
recyclerView.setHasFixedSize(true);
RecyclerView.Adapter adapter = new RecyclerViewAdapter(JudulMeme);
//Membuat Underline pada Setiap Item Didalam List
DividerItemDecoration itemDecoration = new DividerItemDecoration(getContext(), DividerItemDecoration.VERTICAL);
itemDecoration.setDrawable(ContextCompat.getDrawable(getContext(), R.drawable.line));
recyclerView.addItemDecoration(itemDecoration);
//Memasang Adapter pada RecyclerView
recyclerView.setAdapter(adapter);
return view_frag1;
}
//Mengambil data dari Varibale Gambar dan Judul, lalu memasangnya pada list yang terhubung dengan Class Adapter
private void DaftarItem(){
JudulMeme.addAll(Arrays.asList(Judul));
}
}
Project tersebut bisa kalian download di Github Saya.
Terimakasih atas kunjungannya, semoga tutorial yang saya berikan bisa bermanfaat untuk kalian semua, selebihnya, mohon maaf bila ada kesalahan.
Wassalamualaikum Warahmatullahi Wabarakatuh.