Bagi yang belum tau, gradient/gradasi adalah perubahan atau transisi dari suatu warna, gradient biasa dispesifikasikan dengan tiga kriteria warna, yaitu warna awal, warna tengah dan warna akhir.
Tentu saja desain tombol ini juga akan dibuat interaktif, untuk pengantar seperti apa tombol interaktif, bisa dibaca di postingan saya tentang desain sebelumnya.
Oke, pada dasarnya, sebuah tombol pada aplikasi Android akan terlihat seperti gambar ini, dengan state-nya masing-masing :
Pertama-tama buat sebuah project Android baru di Eclipse dengan nama ButtonGradasi, tidak usah diapa-apakan, setelah itu kita akan mendefinisikan file drawable xml-nya terlebih dahulu, berupa file yang mengandung definisi untuk membuat shape, di file itu juga kita akan mendefinisikan warna gradient yang akan digunakan.
Kemudian kita akan mendefinisikan file selector juga untuk masing-masing tombol, selector seperti yang saya utarakan di postingan sebelumnya, berguna untuk memilih gambar latar/drawable yang sesuai dengan state tombol pada saat itu.
Oh iya, jangan lupa untuk memasukkan semua file di bawah ini ke dalam folder /res/drawable di project Android kalian.
Tombol Biru
file : gb_normal_1.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| <? xml version = "1.0" encoding = "utf-8" ?> android:shape = "rectangle" android:padding = "10dp" > < gradient android:startColor = "#10a6d1" android:centerColor = "#108cb0" android:endColor = "#07517b" android:angle = "270" /> < corners android:bottomLeftRadius = "4dp" android:bottomRightRadius = "4dp" android:topLeftRadius = "4dp" android:topRightRadius = "4dp" /> </ shape > |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
| <? xml version = "1.0" encoding = "utf-8" ?> android:shape = "rectangle" android:padding = "10dp" > < stroke android:width = "3dp" android:color = "#033957" /> < gradient android:startColor = "#07517b" android:centerColor = "#108cb0" android:endColor = "#10a6d1" android:angle = "270" /> < corners android:bottomLeftRadius = "4dp" android:bottomRightRadius = "4dp" android:topLeftRadius = "4dp" android:topRightRadius = "4dp" /> </ shape > |
1
2
3
4
5
6
7
| <? xml version = "1.0" encoding = "utf-8" ?> < item android:state_pressed = "true" android:drawable = "@drawable/gb_focused_1" /> <!-- pressed --> < item android:drawable = "@drawable/gb_normal_1" /> <!-- default --> </ selector > |
file : gb_normal_2.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| <? xml version = "1.0" encoding = "utf-8" ?> android:shape = "rectangle" android:padding = "10dp" > < gradient android:startColor = "#10d123" android:centerColor = "#10b01f" android:endColor = "#077b15" android:angle = "270" /> < corners android:bottomLeftRadius = "4dp" android:bottomRightRadius = "4dp" android:topLeftRadius = "4dp" android:topRightRadius = "4dp" /> </ shape > |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
| <? xml version = "1.0" encoding = "utf-8" ?> android:shape = "rectangle" android:padding = "10dp" > < stroke android:width = "3dp" android:color = "#04600f" /> < gradient android:startColor = "#077b15" android:centerColor = "#10b01f" android:endColor = "#10d123" android:angle = "270" /> < corners android:bottomLeftRadius = "4dp" android:bottomRightRadius = "4dp" android:topLeftRadius = "4dp" android:topRightRadius = "4dp" /> </ shape > |
1
2
3
4
5
6
7
| <? xml version = "1.0" encoding = "utf-8" ?> < item android:state_pressed = "true" android:drawable = "@drawable/gb_focused_2" /> <!-- pressed --> < item android:drawable = "@drawable/gb_normal_2" /> <!-- default --> </ selector > |
file : gb_normal.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| <? xml version = "1.0" encoding = "utf-8" ?> android:shape = "rectangle" android:padding = "10dp" > < gradient android:startColor = "#d11010" android:centerColor = "#b01010" android:endColor = "#7e0606" android:angle = "270" /> < corners android:bottomLeftRadius = "4dp" android:bottomRightRadius = "4dp" android:topLeftRadius = "4dp" android:topRightRadius = "4dp" /> </ shape > |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
| <? xml version = "1.0" encoding = "utf-8" ?> android:shape = "rectangle" android:padding = "10dp" > < stroke android:width = "3dp" android:color = "#640101" /> < gradient android:startColor = "#7e0606" android:centerColor = "#b01010" android:endColor = "#d11010" android:angle = "270" /> < corners android:bottomLeftRadius = "4dp" android:bottomRightRadius = "4dp" android:topLeftRadius = "4dp" android:topRightRadius = "4dp" /> </ shape > |
1
2
3
4
5
6
7
| <? xml version = "1.0" encoding = "utf-8" ?> < item android:state_pressed = "true" android:drawable = "@drawable/gb_focused" /> <!-- pressed --> < item android:drawable = "@drawable/gb_normal" /> <!-- default --> </ selector > |
Pada tombol normal
Pada xml drawable yang mendefinisikan tombol dalam state normal hanya terdapat dua atribut, yaitu gradient dan corner, atribut gradient mempunyai empat buah sub-atribut, yaitu :
- android:startColor
berfungsi untuk menentukan warna awal pada gradient tombol tersebut, biasanya diset ke warna terang. - android:centerColor
berfungsi untuk menentukan warna tengah pada gradient tombol tersebut, biasanya diset ke warna netral (tidak cerah, dan tidak gelap) . - android:endColor
berfungsi untuk menentukan warna akhir pada gradient tombol tersebut, biasanya diset ke warna gelap. - android:angle
berfungsi untuk menentukan sudut dari gradient, gradient yang berbentuk vertikal, dari atas ke bawah mempunyai sudut gradient 270 derajat
Pada tombol yang ditekan
Tombol yang ditekan, selain mempunyai atribut gradient dan corner juga mempunyai satu buah atribut tambahan, yaitu stroke, stroke adalah garis tepi/garis pembatas pada tombol, stroke sendiri mempunyai dua sub-atribut, yaitu :
- android:width
berfungsi untuk menentukan ketebalan, atau thickness dari stroke - android:color
berfungsi untuk menentukan warna dari stroke tersebut
Mungkin kalian juga bertanya, bagaimana bisa tombol yang muncul langsung berbentuk kotak? Well, mari kita lihat drawable xml pada tiap tombol, xml tersebut mempunyai atribut parent berupa shape dan pada atribut android:shape kita definisikan jenis tombol yang diinginkan, misalnya rectangle.
Main Layout
Sekarang, kita masuk ke folder /res/layout dan replace file main.xml dengan kode berikut :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
| <? xml version = "1.0" encoding = "utf-8" ?> android:layout_width = "fill_parent" android:layout_height = "fill_parent" android:orientation = "vertical" android:background = "#000000" android:padding = "35dip" android:gravity = "center_vertical" > < Button android:id = "@+id/gradasi_but_1" android:layout_width = "fill_parent" android:layout_height = "40dip" android:background = "@drawable/gb_selector_1" android:text = "@string/gb" android:textColor = "#ffffff" android:textSize = "20dip" android:layout_marginBottom = "10dip" /> < Button android:id = "@+id/gradasi_but_2" android:layout_width = "fill_parent" android:layout_height = "40dip" android:background = "@drawable/gb_selector_2" android:text = "@string/gb" android:textColor = "#ffffff" android:textSize = "20dip" android:layout_marginBottom = "10dip" /> < Button android:id = "@+id/gradasi_but" android:layout_width = "fill_parent" android:layout_height = "40dip" android:background = "@drawable/gb_selector" android:text = "@string/gb" android:textColor = "#ffffff" android:textSize = "20dip" /> </ LinearLayout > |
1
2
3
4
5
6
7
| <? xml version = "1.0" encoding = "utf-8" ?> < resources > < string name = "hello" >Hello World, TestButtonActivity!</ string > < string name = "app_name" >TestButton</ string > < string name = "gb" >Push Me</ string > </ resources > |
The Code
Pada java code/main class activity, kita biarkan saja, atau pastikan main activity kalian mempunyai kode seperti di bawah ini :
1
2
3
4
5
6
7
8
9
10
11
12
| import android.app.Activity; import android.os.Bundle; import android.view.View; public class ButtonGradasiActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); setContentView(R.layout.main); } } |
TIPS : untuk mendapatkan warna yang pas, gunakan color selector yang ada pada photoshop atau aplikasi desain favorit kalian, kalian juga bisa berekspresi membuat desain terlebih dahulu menggunakan photoshop, baru mengaplikasikannya di Android.
Post a Comment