Custom Button pada Android

advertisement
www.tobuku.com
Custom Button pada Android
Tingkat:
Februari 2012
Oleh
: Feri Djuandi
Platform
√
Pemula
Menengah
Mahir
: Android 2.3, Eclipse
Salah satu hal yang menyenangkan dalam membuat sebuah aplikasi Android adalah melakukan
kustomisasi pada tampilan di layar. Dengan cara ini pengembang dapat membuat desain hasil
karyanya yang unik dan kreatif daripada sekedar tampilan standar yang membosankan. Ada
banyak sekali bagian dari tampilan aplikasi Android yang bisa dikustom mulai dari launcher icon,
menu, tab, dialog, list view dan sebagainya. Pada artikel kali ini akan dijelaskan teknik untuk
mengkustom tombol atau button pada Android dengan menggunakan warna atau gambar
buatan sendiri sehingga tampilannya menjadi jauh lebih menarik daripada tombol yang biasa.
Mempersiapkan Gambar
Langkah pertama adalah mempersiapkan gambar untuk custom button tersebut. Gambar yang
perlu dibuat untuk sebuah button harus berjumlah tiga untuk mewakili kondisi normal,
mendapatkan focus dan saat ia tertekan. Sebagai contoh berikut ini diperlihatkan tiga buah
gambar yang berbeda namun dengan ukuran yang sama untuk mewakili tiga kondisi tersebut.
Pastikan ketiga gambar tersebut berformat PNG.
CATATAN:
Tidak ada aturan yang baku mengenai ukuran sebuah custom button, namun sebagai
acuan ukuran tinggi sebuah standard button pada layar berkerapatan menengah
(medium density screen) atau MDPI adalah sekitar 32 px. Silakan menggunakan
ukuran ini sebagai acuan saat membuat sebuah gambar agar custom button tidak
terlalu besar atau terlalu kecil.
1
www.tobuku.com
Membuat Program
Setelah ketiga gambar selesai dibuat, sekarang saatnya untuk menulis sebuah program. Program
sederhana yang akan dibuat berikut ini akan menampilkan sebuah tombol dengan gambar yang
telah dipersiapkan sebelumnya.
1. Jalankan Eclipse dan buat sebuah Android Project baru.
2. Dengan menggunakan Windows Explorer, cari folder res\drawable-mdpi di dalam
folder projek tersebut kemudian copy-kan ketiga file gambar ke dalam folder ini.
Lakukan hal yang sama untuk dua folder lainnya: res\drawable-ldpi dan res\drawablehdpi. LDPI mewakili layar berkerapatan rendah sedangkan HDPI mewakili layar
berkerapatan tinggi. Gambar yang semula dibuat untuk MDPI bisa saja digunakan untuk
LDPI dan HDPI, namun idealnya masing-masing layar ini memiliki gambar-gambar
dengan ukuran yang disesuaikan.
2
www.tobuku.com
CATATAN:
Sebagai acuan, ukuran gambar HDPI adalah 1.5 kali ukuran gambar MDPI;
sedangkan ukuran gambar LDPI adalah 0.75 kali ukuran gambar MDPI.
MDPI
LDPI
HDPI
(medium density screen)
(low density screen)
(high density screen)
P = panjang
0.75 * P
1.5 * P
L = lebar
0.75 * L
1.5 * L
3. Buat sebuah file XML untuk ditempatkan di dalam folder drawable-mdpi dan beri nama
sebagai android_button.xml.
3
www.tobuku.com
Ketikkan isi file XML itu sebagai berikut.
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/android_pressed1"
android:state_pressed="true" />
<item android:drawable="@drawable/android_focused1"
android:state_focused="true" />
<item android:drawable="@drawable/android_normal1" />
</selector>
File XML ini mengatur gambar-gambar yang akan ditampilan pada tombol sesuai dengan
tiga kondisi yang bersangkutan.
4.
Salin file XML di atas ke dalam folder res\drawable-ldpi dan res\drawable-hdpi.
5. Bukan file main.xml dan tambahkan sebuah button.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#FFFFFFFF">
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
<Button
android:id="@+id/mybutton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:background="@drawable/android_button" />
</LinearLayout>
Perhatikan baris “android:background="@drawable/android_button", dimana tampilan
tombol akan merujuk ke file android_button.xml yang mengatur gambar-gambar yang
akan ditampilkan.
4
www.tobuku.com
6. Buka file MainActivity.java dan tambahkan event onClick yang menangani aksi
penekanan tombol. Saat tombol ditekan, program akan menampilkan sebuah kotak
pesan bertuliskan “Beep Bop”.
package net.houseoflife.custombutton;
import
import
import
import
import
android.app.Activity;
android.os.Bundle;
android.view.View;
android.widget.Button;
android.widget.Toast;
public class MainActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final Button button = (Button) findViewById(R.id.mybutton);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// Perform action on clicks
Toast.makeText(MainActivity.this, "Beep Bop",
Toast.LENGTH_SHORT).show();
}
});
}
}
7. Simpan semua perubahan dan jalankan program tersebut.
Perhatikan bagaimana gambar tombol tersebut akan berubah saat ia ditekan.
5
www.tobuku.com
Hal yang perlu diperhatikan saat mendesain sebuah tombol adalah kemungkinan tombol ini
meregang oleh karena kondisi tertentu. Tombol harus mampu mempertahakan bentuknya agar
tetap bagus walaupun panjang atau lebarnya ditarik memanjang. Untuk melihat bagaimana
bentuk custom button saat ia diregangkan, silakan ikuti langkah berikut ini.
1. Buka file main.xml dan ubah bagian layout_width dari custom button tersebut dari
wrap_content menjadi fill_parent.
...
<Button
android:id="@+id/mybutton"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="10dp"
android:background="@drawable/android_button" />
...
2. Simpan perubahan dan jalankan kembali. Tampilannya akan tampak seperti berikut ini.
Jelek sekali, bukan? Ini artinya custom button tersebut belum didesain dengan baik. Hal seperti
ini sangat mungkin terjadi sehingga perlu dilakukan cara untuk menanggulanginya.
6
www.tobuku.com
Mengantisipasi Peregangan Gambar
Peregangan sebuah button (baik vertikal maupun horisontal) adalah sesuatu yang tidak bisa
dihindari, namun yang bisa dilakukan adalah mengatur bagian mana yang bisa diregang dan
bagian mana yang tidak. Sebagai ilustrasi diperlihatkan contoh gambar sebagai berikut.
Harus diupayakan agar ada bagian yang bisa dipertahankan tidak berubah bentuknya saat ia
diregang. Pada contoh ini area yang diwarnai gelap adalah bagian yang boleh diregangkan
sedangkan bagian yang di tengah adalah area yang tidak boleh berubah.
Dengan demikian saat gambar ini ditarik memanjang, bagian yang fleksibel akan berubah
bentuknya mengikuti ukuran yang diinginkan namun bagian yang statis akan tetap bentuknya.
Teknik inilah yang harus diterapkan pada gambar button tersebut agar ada bagian yang bisa
tetap dipertahankan bentuknya pada saat ukuran panjang atau lebarnya berubah sehingga
button akan tetap tampak bagus dalam berbagai ukuran.
SDK Android telah menyediakan sebuah program yang membantu programmer untuk mengatur
bagian-bagian gambar yang bisa diregangkan. Program ini bernama Draw 9-patch yang
memungkinkan penggunanya membuat grafik NinePatch dengan mudah.
7
www.tobuku.com
1. Dengan Windows Explorer, buka folder tools di dalam folder instalasi SDK Android.
Jalankan file bernama draw9patch.bat dan tunggu beberapa saat sampai program
tampil.
2. Dengan Windows Explorer, dapatkan salah satu dari tiga gambar custom button tadi
kemudian klik dan geser ke dalam window “Draw 9-patch” tersebut.
Silakan menggeser-gesert slider Patch scale untuk melihat efek dari peregangan
terhadap gambar tersebut.
8
www.tobuku.com
3. Klik opsi Show patches, kemudian dengan menggunakan penunjuk mouse klik pada
tepi-tepi gambar untuk menandai bagian yang boleh direggangkan. Area yang tidak
ditandai adalah bagian yang tidak berubah. Lihat preview-nya pada window di bagian
kanan bagaimana efek dari pengaturan ini akan membuat gambar jauh lebih baik.
SIlakan bandingkan dengan preview sebelumnya.
4. Simpan hasil pengaturan ini dengan nama file yang baru. Ekstensi nama file akan
ditambah menjadi 9.PNG. Sebagai contoh jika semula nama file-nya bernama
android_normal.png maka selanjutnya ia akan menjadi android_normal.9.png.
5. Silakan lakukan dengan file-file yang lain.
6. Salin file-file 9.PNG ke dalam folder-folder res\drawable-ldpi, res\drawable-mdpi dan
res\drawable-hdpi seperti semula dan hapus (atau pindahkan) file-file .PNG sebelumnya
dari folder tersebut.
CATATAN:
Pastikan file PNG dan 9.PNG untuk gambar yang sama tidak berada di dalam
folder drawable karena hal itu akan mengakibatkan error saat dijalankan.
9
www.tobuku.com
Saat program dijalankan kembali, kali ini custom button akan tampil lebih baik.
Sumber:
http://developer.android.com/resources/tutorials/views/hello-formstuff.html
http://developer.android.com/guide/developing/tools/draw9patch.html
10
Download