Membuat UI Cantik Dan Serasi Di Android Menggunakan Palette Library Material Design Fitria Arnita [email protected] Abstrak Material Design adalah panduan komprehensif untuk desain visual, gerak, dan interaksi lintas platform dan perangkat. Android kini menyertakan dukungan untuk aplikasi desain bahan. Untuk menggunakan desain bahan di aplikasi Android, ikuti panduan yang didefinisikan dalam spesifikasi desain bahan dan gunakan komponen dan fungsionalitas baru yang tersedia di Android 5.0 (API level 21) ke atas. bertujuan untuk pengubahan interface secara masal, melainkan langkah untuk menuju New Visually Representative language, yang berarti mewujudkan visualisasi agar menyerupai bentuk nyata baik dalam teksture, bayangan dan pencahayaan. Salah satu material design yang digunakan untuk masalah pewarnaan yaitu palette Library. Palette Ditujukan untuk membuat aplikasi berwarna, konsisten, masuk akal, dan mudah untuk digunakan. Secara dasar Palette akan memberikan pilihan warna yang mencolok seperti pada source asset dan menentukan elemen menjadi dark muted, dark vibrant, muted, vibrant, light muted, light vibrant. Kata Kunci: Palette, Material Design, Android Studio Lisensi Dokumen: Copyright © 2008-2017 ilmuti.org Seluruh dokumen di ilmuti.org dapat digunakan, dimodifikasi dan disebarkan secara bebas untuk tujuan bukan komersial (nonprofit), dengan syarat tidak menghapus atau merubah atribut penulis dan pernyataan copyright yang disertakan dalam setiap dokumen. Tidak diperbolehkan melakukan penulisan ulang, kecuali mendapatkan ijin terlebih dahulu dari ilmuti.org Pendahuluan Baru-beberapa bulan lalu Google telah merilis Platform terbaru dari system operasi Android, system operasi tersebutdiberi nama Lollipop sebagai android versi 5.0 dalam system operasi Lollipop ini google telah menerapkan konsep Material Design. Material Design sendiri bukan bertujuan untuk pengubahan interface secara masal, melainkan langkah untuk menuju New Visually Representative language, yang berarti mewujudkan visualisasi agar menyerupai bentuk nyata baik dalam teksture, bayangan dan pencahayaan. Sebelum adanya Material design, para pengembang yang berfokus pada User Interface (UI) dan User Experience (UX) lebih mengusung bentuk tiga dimensi dimana banyak gradient yang memiliki kesan “Timbul” dari layar. Tetapi dalam beberapa kasus, design seperti itu sudah terlihat jadul dan using, sehingga tidak popular lagi dan mulai ditinggalkan oleh para designer, baik yang menutamakan UI maupun UX. Material design sendiri cenderung menggunakan warna-warna solid dan tanpa gradient, dan hanya menggunakan efek pencahayaan sederhana namun tetap terkesan simple dan elegan. Material Design adalah bahasa pemrograman visual yang dibuat oleh Google. Bahasa pemrogaman ini menggunakan tampilan visual yang menarik tapi sederhana. Material Design bukan menawarkan konsep perubahan secara masive, tetapi ini adalah langkah yang signifikan untuk menuju New Visually Representative language. Teknologi ini akan memicu design berbasis artificial yang diwujudkan kedalam bentuk yang nyata. Sebelum trend material design "menukik", banyak designer yang berusaha membuat tampilan (contohnya tombol / button) menggunakan style 3D agar bagaimana output yang dihasilkan menyerupai bentuk asli di dunia nyata. Tetapi hal itu sudah tidak populer lagi, hal yang menjadi prioritas utama sekarang adalah kecepatan akses yang menjadi salah satu bagian dari material design karena secara garis besar mengutamakan pewarnaan objek yang solid tanpa memaksakan menggunakan gambar-gambar yang tidak diperlukan. Istilah tersebut sering kita Lisensi Dokumen: Copyright © 2008-2017 ilmuti.org Seluruh dokumen di ilmuti.org dapat digunakan, dimodifikasi dan disebarkan secara bebas untuk tujuan bukan komersial (nonprofit), dengan syarat tidak menghapus atau merubah atribut penulis dan pernyataan copyright yang disertakan dalam setiap dokumen. Tidak diperbolehkan melakukan penulisan ulang, kecuali mendapatkan ijin terlebih dahulu dari ilmuti.org sebut dengan flat design yang tidak mengutamakan penggunaan background yang terlalu rumit tetapi simple agar membuat para pengguna dapat lebih mudah dan tidak bingung untuk menggunakan objek tersebut. Palette Ditujukan untuk membuat aplikasi berwarna, konsisten, masuk akal, dan mudah untuk digunakan. Secara dasar Palette akan memberikan pilihan warna yang mencolok seperti pada source asset dan menentukan elemen menjadi dark muted, dark vibrant, muted, vibrant, light muted, light vibrant. Pembahasan Kali ini saya akan membahas salah satu fitur dari library Android Material Design yang sering digunakan, yaitu Palette. Dengan menggunakan class Palette, kita bisa dengan mudah mengekstrak/mengambil warna dari sebuah gambar, yang akan berguna dalam penerapan style/tema aplikasi supaya sesuai dengan images/gambar yang sedang ditampilkan. Contohnya pada aplikasi MP3 player, dimana dengan menggunakan Palette tema warna background dan warna tombol bisa disesuaikan dengan gambar cover album yang dimainkan, sehingga terasa serasi Di benak kita mungkin mengekstrak warna dari gambar terdengar susah dan butuh skill coding tingkat tinggi, namun untungnya Palette class sangat mempermudah kita dalam hal ini. Tidak hanya itu Palette class bahkan membedakan warna ke dalam beberapa tipe sehingga memudahkan kalian untuk mengambil mana warna yang benar-benar cocok untuk aplikasi kalian. kita akan mulai dengan membuat sebuah project Android baru di Android Studio terlebih dahulu. Kemudian update dependencies pada file build.gradle kalian dengan mengimport Palette library seperti di bawah ini : dependencies { ... compile 'com.android.support:palette-v7:24.2.1' Lisensi Dokumen: Copyright © 2008-2017 ilmuti.org Seluruh dokumen di ilmuti.org dapat digunakan, dimodifikasi dan disebarkan secara bebas untuk tujuan bukan komersial (nonprofit), dengan syarat tidak menghapus atau merubah atribut penulis dan pernyataan copyright yang disertakan dalam setiap dokumen. Tidak diperbolehkan melakukan penulisan ulang, kecuali mendapatkan ijin terlebih dahulu dari ilmuti.org ... } Jika sudah, kita akan membuat style baru yang akan digunakan untuk TextView pada res/values/styles.xml bernama tvPalleteStyle <style name="tvPalleteStyle"> <item name="android:layout_height">40dp</item> <item name="android:layout_width">match_parent</item> <item name="android:textColor">@android:color/white</item> <item name="android:textStyle">bold</item> <item name="android:paddingLeft">5dp</item> </style> Selanjutnya, kita menambahkan beberapa strings baru juga pada strings.xml : <string name="vibrant">Vibrant</string> <string name="vibrant_light">Vibrant Light</string> <string name="vibrant_dark">Vibrant Dark</string> <string name="muted">Muted</string> <string name="muted_light">Muted Light</string> <string name="muted_dark">Muted Dark</string> Kemudian untuk margin kita akan mengupdate dimens.xml : <resources> <!-- Default screen margins, per the Android Design guidelines. --> <dimen name="activity_horizontal_margin">16dp</dimen> <dimen name="activity_vertical_margin">16dp</dimen> <dimen name="card_margin">16dp</dimen> </resources> Lisensi Dokumen: Copyright © 2008-2017 ilmuti.org Seluruh dokumen di ilmuti.org dapat digunakan, dimodifikasi dan disebarkan secara bebas untuk tujuan bukan komersial (nonprofit), dengan syarat tidak menghapus atau merubah atribut penulis dan pernyataan copyright yang disertakan dalam setiap dokumen. Tidak diperbolehkan melakukan penulisan ulang, kecuali mendapatkan ijin terlebih dahulu dari ilmuti.org Setelah itu, pada file activity_main.xml masukkan kode seperti di bawah ini : <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 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" android:orientation="vertical"> <ImageView android:id="@+id/ivWallpaper" android:layout_width="match_parent" android:layout_height="275dp" android:src="@drawable/face2" /> <TextView android:id="@+id/tvVibrant" style="@style/tvPalleteStyle" android:layout_marginTop="10dp" android:text="@string/vibrant" /> <TextView android:id="@+id/tvVibrantLight" style="@style/tvPalleteStyle" android:text="@string/vibrant_light" /> Lisensi Dokumen: Copyright © 2008-2017 ilmuti.org Seluruh dokumen di ilmuti.org dapat digunakan, dimodifikasi dan disebarkan secara bebas untuk tujuan bukan komersial (nonprofit), dengan syarat tidak menghapus atau merubah atribut penulis dan pernyataan copyright yang disertakan dalam setiap dokumen. Tidak diperbolehkan melakukan penulisan ulang, kecuali mendapatkan ijin terlebih dahulu dari ilmuti.org <TextView android:id="@+id/tvVibrantDark" style="@style/tvPalleteStyle" android:text="@string/vibrant_dark" /> <TextView android:id="@+id/tvMuted" style="@style/tvPalleteStyle" android:text="@string/muted" /> <TextView android:id="@+id/tvMutedLight" style="@style/tvPalleteStyle" android:text="@string/muted_light" /> <TextView android:id="@+id/tvMutedDark" style="@style/tvPalleteStyle" android:text="@string/muted_dark" /> </LinearLayout> Yang terakhir, kita akan mengupdate class MainActivity.java. Di class inilah kita akan menggunakan Palette untuk mengambil warna dari gambar Bitmap, Di dalam Palette sendiri, kita akan mempunyai banyak Swatch (mirip seperti Photoshop), dan di tiap Swatch ada satu color. Palette secara default akan mencoba untuk mengambil 16 tipe warna, namun pada praktiknya hanya ada 6 profil warna yang akan sering kita gunakan, yaitu : Vibrant : gunakan getVibrantColor() method untuk mendapatkan warna vibrant. Vibrant dark : gunakan getDarkVibrantColor() method untuk mendapatkan warna vibrant dark. Lisensi Dokumen: Copyright © 2008-2017 ilmuti.org Seluruh dokumen di ilmuti.org dapat digunakan, dimodifikasi dan disebarkan secara bebas untuk tujuan bukan komersial (nonprofit), dengan syarat tidak menghapus atau merubah atribut penulis dan pernyataan copyright yang disertakan dalam setiap dokumen. Tidak diperbolehkan melakukan penulisan ulang, kecuali mendapatkan ijin terlebih dahulu dari ilmuti.org Vibrant light : gunakan getLightVibrantColor() method untuk mendapatkan warna vibrant light. Muted : gunakan getMutedColor() method untuk mendapatkan warna muted. Muted dark : gunakan getDarkMutedColor() method untuk mendapatkan warna muted dark. Muted light : gunakan getLightMutedColor() method untuk mendapatkan warna muted light. import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.support.v7.graphics.Palette; import android.support.v7.widget.Toolbar; import android.widget.TextView; /** * Created by Herdi_WORK on 18.09.16. */ public class MainActivity extends AppCompatActivity{ private TextView vibrantView; private TextView vibrantLightView; private TextView vibrantDarkView; private TextView mutedView; private TextView mutedLightView; private TextView mutedDarkView; @Override protected void onCreate(Bundle savedInstanceState) { Lisensi Dokumen: Copyright © 2008-2017 ilmuti.org Seluruh dokumen di ilmuti.org dapat digunakan, dimodifikasi dan disebarkan secara bebas untuk tujuan bukan komersial (nonprofit), dengan syarat tidak menghapus atau merubah atribut penulis dan pernyataan copyright yang disertakan dalam setiap dokumen. Tidak diperbolehkan melakukan penulisan ulang, kecuali mendapatkan ijin terlebih dahulu dari ilmuti.org super.onCreate(savedInstanceState); setContentView(R.layout.activity_pallete); initViews(); paintTextBackground(); } private void initViews() { vibrantView = (TextView) findViewById(R.id.tvVibrant); vibrantLightView = (TextView) findViewById(R.id.tvVibrantLight); vibrantDarkView = (TextView) findViewById(R.id.tvVibrantDark); mutedView = (TextView) findViewById(R.id.tvMuted); mutedLightView = (TextView) findViewById(R.id.tvMutedLight); mutedDarkView = (TextView) findViewById(R.id.tvMutedDark); } private void paintTextBackground() { Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.lena); Palette.from(bitmap).generate(new Palette.PaletteAsyncListener() { @Override public void onGenerated(Palette palette) { // ambil warna dari gambar menggunakan Palette int defaultValue = 0x000000; int vibrant = palette.getVibrantColor(defaultValue); int vibrantLight = palette.getLightVibrantColor(defaultValue); int vibrantDark = palette.getDarkVibrantColor(defaultValue); int muted = palette.getMutedColor(defaultValue); Lisensi Dokumen: Copyright © 2008-2017 ilmuti.org Seluruh dokumen di ilmuti.org dapat digunakan, dimodifikasi dan disebarkan secara bebas untuk tujuan bukan komersial (nonprofit), dengan syarat tidak menghapus atau merubah atribut penulis dan pernyataan copyright yang disertakan dalam setiap dokumen. Tidak diperbolehkan melakukan penulisan ulang, kecuali mendapatkan ijin terlebih dahulu dari ilmuti.org int mutedLight = palette.getLightMutedColor(defaultValue); int mutedDark = palette.getDarkMutedColor(defaultValue); vibrantView.setBackgroundColor(vibrant); vibrantLightView.setBackgroundColor(vibrantLight); vibrantDarkView.setBackgroundColor(vibrantDark); mutedView.setBackgroundColor(muted); mutedLightView.setBackgroundColor(mutedLight); mutedDarkView.setBackgroundColor(mutedDark); } }); } } Lisensi Dokumen: Copyright © 2008-2017 ilmuti.org Seluruh dokumen di ilmuti.org dapat digunakan, dimodifikasi dan disebarkan secara bebas untuk tujuan bukan komersial (nonprofit), dengan syarat tidak menghapus atau merubah atribut penulis dan pernyataan copyright yang disertakan dalam setiap dokumen. Tidak diperbolehkan melakukan penulisan ulang, kecuali mendapatkan ijin terlebih dahulu dari ilmuti.org Contohnya seperti ini : Lisensi Dokumen: Copyright © 2008-2017 ilmuti.org Seluruh dokumen di ilmuti.org dapat digunakan, dimodifikasi dan disebarkan secara bebas untuk tujuan bukan komersial (nonprofit), dengan syarat tidak menghapus atau merubah atribut penulis dan pernyataan copyright yang disertakan dalam setiap dokumen. Tidak diperbolehkan melakukan penulisan ulang, kecuali mendapatkan ijin terlebih dahulu dari ilmuti.org Penutup Material Design adalah bahasa pemrograman visual yang dibuat oleh Google. Bahasa pemrogaman ini menggunakan tampilan visual yang menarik tapi sederhana. Material Design bukan menawarkan konsep perubahan secara masive, tetapi ini adalah langkah yang signifikan untuk menuju New Visually Representative language. Teknologi ini akan memicu design berbasis artificial yang diwujudkan kedalam bentuk yang nyata. Salah satu fitur dari library Android Material Design yang sering digunakan, yaitu Palette. Dengan menggunakan class Palette, kita bisa dengan mudah mengekstrak/mengambil warna dari sebuah gambar, yang akan berguna dalam penerapan style/tema aplikasi supaya sesuai dengan images/gambar yang sedang ditampilkan. Contohnya pada aplikasi MP3 player, dimana dengan menggunakan Palette tema warna background dan warna tombol bisa disesuaikan dengan gambar cover album yang dimainkan, sehingga terasa serasi. Palette Ditujukan untuk membuat aplikasi berwarna, konsisten, masuk akal, dan mudah untuk digunakan. Secara dasar Palette akan memberikan pilihan warna yang mencolok seperti pada source asset dan menentukan elemen menjadi dark muted, dark vibrant, muted, vibrant, light muted, light vibrant. Lisensi Dokumen: Copyright © 2008-2017 ilmuti.org Seluruh dokumen di ilmuti.org dapat digunakan, dimodifikasi dan disebarkan secara bebas untuk tujuan bukan komersial (nonprofit), dengan syarat tidak menghapus atau merubah atribut penulis dan pernyataan copyright yang disertakan dalam setiap dokumen. Tidak diperbolehkan melakukan penulisan ulang, kecuali mendapatkan ijin terlebih dahulu dari ilmuti.org Referensi https://www.dumetschool.com/blog/apa-itu-material-design http://okyasha7.blogspot.nl/2014/11/melihat-lebih-spesifik-pada-google.html http://diptonugroho.blogspot.nl/2015/07/tutorial-mudah-membuat-materialdesign.html https://www.twoh.co/2016/09/27/tutorial-menggunakan-android-palette-untukambil-warna-dari-gambar/ https://developer.android.com/design/material/index.html?hl=id Biografi hai hai nama saya Fitria Arnita, saat ini saya sibuk kuliah dan bekerja. Saya kuliah di salah satu Perguruan Tinggi ilmu komputer di Tangerang angkatan 2014 sampai saat ini. Rumah saya berada di daerah Kabupaten Tangerang beralamat Dasana Indah. Kalo dengan hobi, saya lebih menyukai anime (kartun jepang), saya sampai saat ini belum pernah mengikuti organisasi, saya jurusan Sistem Informasi dan konsentrasinya Sistem Informasi Manajemen, memang saya tidak terlalu mengerti tentang IT tetapi saya belajar untuk menggelutinya. Untuk lebih tahu tentang saya, silahkan cek facebook: fitria arnita dan Ig :fitriaarnita23. Terima kasih ya semoga bermanfaat Lisensi Dokumen: Copyright © 2008-2017 ilmuti.org Seluruh dokumen di ilmuti.org dapat digunakan, dimodifikasi dan disebarkan secara bebas untuk tujuan bukan komersial (nonprofit), dengan syarat tidak menghapus atau merubah atribut penulis dan pernyataan copyright yang disertakan dalam setiap dokumen. Tidak diperbolehkan melakukan penulisan ulang, kecuali mendapatkan ijin terlebih dahulu dari ilmuti.org