You are on page 1of 105

Android Coding Standard

Sebagian orang berkata bahwa code is art, kode adalah seni. Karena itu programmer yang baik
adalah layaknya seorang seniman, mereka harus mempunyai sense of art tersendiri. Dan
diharapkan bisa menghasilkan barisan kode yang rapi, enak dibaca, namun juga efektif dan
efisien.
Seiring dengan semakin matangnya platform Android, aturan-aturan standar dalam
pemrograman Android pun semakin diketatkan. Kami di Poltekpos Android Developer selalu
mendukung penulisan coding dengan standar yang sesuai, mengikuti konvensi-konvensi
pemrograman yang ada. Tulisan ini diharapkan mampu membantu developer untuk menulis
program Android dengan konvensi maupun aturan yang sesuai dengan standar internasional.
Sekaligus mengasah skill Android craftsmanship dan memperkenalkan state of art
pemrograman Android pada pembaca.
[box type=bio] oleh : POLTEKPOS ANDROID DEVELOPER [/box]

Java Coding Standard


Sebagian besar aplikasi Android dibuat menggunakan bahasa Java. Karena itu beberapa kode
konvensi yang ada mengikuti aturan Code Conventions for the Java TM Programming
Language, yang dibuat pada tahun 1999. Silahkan dibaca, beberapa hal yang perlu diperhatikan
adalah sebagai berikut :

Penulisan Nama Kelas, nama kelas/class hendaknya ditulis menggunakan huruf awal kapital.
Seperti Person.java. Apabila nama kelas terdiri dari dua kata atau lebih, maka setiap kata
harus diawali dengan huruf kapital, seperti PersonProfile.java, DatabaseMapsHelper.java dan
sebagainya,
Penulisan Nama Variabel, nama variabel ditulis dengan awalan huruf kecil,
seperti color, apabila variabel terdiri dari dua kata atau lebih, maka kata kedua dan seterusnya
diawali dengan huruf kapital. Contohnya : innerColor, maximumPostRate, dan sebagainya.
Penulisan Nama Package, nama package untuk aplikasi Android yang dibuat oleh developer
yang berasal dari Indonesia, hendaknya mengikuti aturan penamaan package untuk aplikasi
Android buatan Indonesia. Dan hendaknya tidak menggunakan nama package default
seperti, com.example.namaaplikasi, maupun com.app.namaaplikasi, dan sebagainya.
Penulisan Nama Konstanta, nama konstanta hendaknya ditulis dengan memakai huruf kapital
pada semua hurufnya, seperti COLOR. Apabila nama konstanta terdiri atas dua suku kata atau
lebih, gunakan tanda _ (underscore) untuk memisahkan satu suku kata dari suku kata
lainnya, dan setiap hurufnya ditulis dengan menggunakan huruf kapital. Contohnya
seperti MAXIMUM_POST_RATE.
Penulisan Nama Method, nama method diawali dengan lowercase letter atau huruf kecil
pada kata pertama. Contohnya, post() Apabila method tersebut terdiri dari dua kata atau
lebih, maka kata kedua dan seterusnya menggunakan huruf kapital pada awal kata,
contohnya: getMaximumPostRate(), getColor(), dan sebagainya.
Gunakan Nama Variabel Yang Deskriptif, dalam banyak kasus, saya masih menemukan
programmer yang menggunakan nama variabel maupun konstanta yang tidak deskriptif.
Sehingga kadang orang lain menjadi bingung ketika membaca kode buatan mereka. Hal ini
membuat persepsi bahwa programmer yang menuliskan kode tersebut terkesan asal-asalan

dalam membuat kodingannya. Di bawah ini merupakan contoh penggunaan nama variabel
yang tidak deskriptif :
//...
private Button i;
private EditText j;
public void someMethod()
{
i = findViewById(R.id.some_button);
i.setOnClickListener(this).
}
//...

Pada potongan kode di atas, penamaan variabel sangatlah tidak jelas dan tidak
deskriptif. Hal ini bisa menyulitkan programmer lain maupun Anda sendiri, karena
setiap saat Anda lupa, Anda harus melihat pada bagian deklarasi untuk mengetahui apa
tipe dari variabel i, apa fungsi dari variable i tersebut dan banyak lagi. Ini adalah kode
yang sudah diperbaiki :
//...
private Button tombolBack;
private EditText textUsername;
public void someMethod()
{
tombolBack = (Button) findViewById(R.id.some_button);
tombolBack.setOnClickListener(this).
}
//...

Pada kode yang telah diperbaiki di atas, terlihat jelas apa tipe dari
variabel tombolBack dan juga fungsinya. tombolBack adalah sebuah tombol yang
berfungsi untuk mengembalikan user ke halaman sebelumnya (misalnya). Demikian
pula dengan EditText yang sudah terdefinisikan dengan jelas bahwa itu adalah EditText
dimana user bisa menginputkan username mereka. Jika Anda malas menulis, maka
Anda bisa menyingkat beberapa kata dengan singkatan yang mudah dihafal. Contohnya
dua variabel tersebut akan menjadi : tbBack, btnBack, edtUsername, edtUser, dan
sebagainya.

Android Coding Standard


Sekarang kita akan membahas Android secara khusus. Dalam konvensi maupun aturan
penulisan kode Android, penulisan resource sangatlah penting dan perlu diperhatikan. Karena
aplikasi Android mempunyai berbagai macam resource, seperti Button, Layout, Text, EditText,
Label, dan sebagainya yang aktif digunakan dan dipanggil ke dalam aplikasi utama. SDK
Android terbaru memberikan aturan yang lebih ketat terkait dengan aturan penamaan dan
penggunaan resource ini, tidak jarang Eclipse akan memberikan warning apabila Anda tidak
mengikuti aturan yang berlaku, namun percayalah. Aturan ini semata mata dibuat untuk
memudahkan Anda untuk mengelola resource yang ada di aplikasi yang Anda buat.
No Hard Coded String, di antara banyaknya aturan. Aturan inilah yang paling sering
dilanggar. Hard coded String, atau String yang ditulis secara kasar merupakan bom

waktu yang akan menyulitkan Anda seiring dengan bertambah kompleksnya resource yang
dipakai pada aplikasi.
Hard coded String banyak dipakai pada saat kita memberi label pada sebuah tombol, memberi
judul aplikasi, memberi hint pada EditText dan sebagainya. Di bawah ini adalah contoh
resource tombol yang menggunakan hard coded String :
<Button
android:id="@+id/button_submit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Submit"
/>

Bayangkan ketika Anda mempunyai banyak resource tombol pada aplikasi, dan karena suatu
sebab Anda diharuskan mengganti semua nama yang ada pada tombol-tombol tersebut.
Bayangkan betapa repotnya mengganti nama satu persatu! Karena itu aturan standar
menyarankan untuk menyimpan semua string/text reources pada file string.xml yang terdapat
pada direktori res/values. Sehingga semua string/text pada aplikasi kalian tersimpan di satu
tempat, dan kalian hanya perlu memanggilnya apabila dibutuhkan. Hal ini juga memudahkan
apabila kalian ingin mengganti label pada tombol, hints, nama aplikasi, dan sebagainya.
Berikut ini adalah contoh resource tombol yang sudah mengikuti aturan standar :
<!-- Isi pada file resource string.xml -->
<resources>
<string name="tombol_submit_text">Submit</string>
</resources>
<!-- string resource yang dipanggil oleh android:text -->
<Button
android:id="@+id/button_submit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/tombol_submit_text"
/>

Aturan Standar Penulisan ID Resources, seiring dengan banyaknya resource yang dipakai
oleh aplikasi Android kalian. Kalian mungkin akan merasa bingung, tombol mana yang
berfungsi untuk tombol submit, label mana yang dipakai untuk tombol Y, dan string mana
yang dipakai sebagai header judul pada layout X dan sebagainya. Karena itu, aturan atau
konvensi penamaan ID berikut ini akan membantu apabila dipatuhi.
Yang pertama adalah bagaimana memberikan ID pada suatu resource di Android. Entah itu
tombol, label, EditText, Layout, List, Spinner dan sebagainya. Pemberian ID pada suatu
resource terjadi pada baris berikut pada resource yang bersangkutan :
android:id="@+id/nama_id"

Tentunya apabila kalian katakanlah memberikan ID secara sembarangan, seperti submit pada
suatu resource, nantinya kalian akan merasakan hal seperti di atas. Yaitu bingung menentukan
resource mana yang akan dipakai. Penulisan yang benar adalah menggunakan format [tipe
resource]_[fungsi resource]. Sehingga ketika kalian mempunyai EditText yang berfungsi untuk
menginputkan username, cara pemberian ID berikut ini adalah tidak disarankan :

<EditText
android:id="@+id/username"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</EditText>

Kenapa? Karena apabila kalian ingin memanggil EditText tersebut via ID, kalian harus
memanggil melalui, R.id.username. Bayangkan jika kalian mempunyai label, button atau
resource lainnya yang mempunyai ID sama yaitu, username.
Cara berikut ini adalah yang disarankan, sehingga kalian bisa memastikan bahwa resource yang
dipanggil adalah benar-benar resource EditText, bukan tombol, label, atau lainnya:
<EditText
android:id="@+id/edittext_username"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</EditText>

Aturan Penulisan String Resources, seiring dengan besarnya aplikasi yang kalian buat.
String atau text yang ada pada string.xml akan semakin banyak. Agar bisa memilih mana string
yang akan dipanggil atau digunakan, gunakan aturan penamaan berikut [tipe resource yang
akan menggunakan string ini]_[nama/fungsi resource tersebut]_text.
Sebagai contohnya adalah kode berikut :
<resources>
<string name="title_activity_main">MainActivity</string>
<string name="hint_barang_text">Nama Barang</string>
<string name="hint_harga_text">Harga Barang</string>
<string name="hint_merk_text">Merk Barang</string>
<string name="tombol_submit_text">Submit</string>
<string name="tombol_tambah_text">Tambah Data</string>
<string name="tombol_lihat_text">Lihat Data</string>
<string name="title_view_barang">Data Barang</string>
<string name="title_submit_barang">Submit Barang</string>
<string name="deskripsi_barang">Deskripsi : </string>
</resources>

Jika kita lihat, tambahan _text pada akhir resource adalah opsional apabila kita sudah tahu
bahwa resource yang akan dipanggil memang bertipe string, seperti title, deskripsi dan
sebagainya. Namun apabila kalian akan menggunakan string untuk label suatu tombol, atau
hint, maka penambahan _text disarankan.
Dan jika dilihat lagi, aturan ini adalah fleksibel dan bisa dikembangkan sesuai dengan
kebutuhan dan kreativitas kalian, selama penamaan tersebut deskriptif, mendefinisikan dengan
jelas dan tidak ambigu.
Selalu Sediakan Hint Pada EditText, hint atau petunjuk, merupakan hal yang penting untuk
memberitahu pengguna apa yang harus mereka tuliskan pada EditText. Pendekatan lama biasa
menggunakan Label dengan EditText dibawahnya, seperti di bawah ini. Namun pendekatan
tersebut dirasa kurang efisien dari segi tempat dan completely outdated.

Android Label + EditText

Dengan menggunakan android:hint penulisan akan menjadi lebih efisien dan tidak buangbuang waktu. Seperti contoh di bawah ini :

EditText with Hint

Cara penambahan hint pada EditText adalah sebagai berikut, Android SDK terbaru juga akan
secara otomatis memberikan warning apabila kalian tidak menambahkan hint pada EditText.
<EditText
android:id="@+id/edittext_merk_barang"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="@string/hint_merk_text"
>
</EditText>

Selalu Definisikan Default InputType pada EditText, keyboard Android terdiri dari
beberapa macam inputan, demikian juga text format pada Android. Karena itu,
pendefinisian android:inputType adalah sangat disarankan. InputType membuat keyboard
secara otomatis menyesuaikan formatnya, sesuai dengan inputan yang diinginkan oleh aplikasi.
Hal ini mencegah eror, sekaligus membatasi format text yang bisa diinputkan oleh user. Jangan
sampai pada saat kalian membutuhkan inputan berupa angka dari user, namun ternyata user
bisa memasukkan huruf pada EditText yang kalian buat.
Contoh penerapan inputType adalah seperti di bawah ini, ketika pengguna diminta untuk
memasukkan harga, maka keyboard yang dipakai adalah keyboard numerik. Dan bukan
keyboard qwerty yang memiliki huruf-huruf.
<EditText
android:id="@+id/edittext_harga_barang"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="number"
android:hint="@string/hint_harga_text" >
<requestFocus />
</EditText>

Gunakan ContentDescription pada Image, atau resources lainnya yang sekiranya


membutuhkan atribut tersebut. android:contentDescription berisi deskripsi singkat tentang
sebuah gambar. ContentDescription bisa juga berisi penjelasan singkat konten dari sebuah
View. Karena bertipe text/string, pastikan kalian tidak menuliskannya secara hard
coded melainkan seperti biasa definisikan terlebih dahulu pada String resource.
Kurang lebih ini yang bisa saya share, sebenarnya masih banyak lagi. Saya akan
menambahkannya apabila sempat. Aturan-aturan maupun konvensi-konvensi yang ada di sini
tidak mutlak harus diikuti, melainkan hal ini sebagai saran untuk meningkatkan standar kalian
sebagai programmer. Sekaligus menghasilkan kode yang efisien, bagus, dan enak dibaca. Code
is Art.

Mengenal Lebih Dekat dengan Android


Studio
Mengenal Lebih Dekat dengan Android Studio. Artikel ini lanjutan dari artikel Membuat
Project Android di Android Studio. Bagi yang sudah terbiasa menggunakan eclipse mungkin
mengalami kesulitan dalam menggunakan android studio. Dalam tutorial ini, kami akan
berikan panduan migrasi dari IDE eclipse ke Android Studio.

1. Layout
Sama seperti eclipse, layout di android dibedakan menjadi 2, yaitu design dan text, secara
default pada saat dibuka layout xml di android studio menggunakan mode design, tapi Kamu
bisa mengubah ke mode text, sehingga terlihat source code dari text XML nya.

Di Android studio sudah memiliki Live Preview, jadi tidak perlu bolak-balik ke mode design
hanya untuk melihat hasil kode XML nya.

2. Struktur Folder
Struktur folder pada Android Studio seperti berikut.

Terdapat folder .idea, app, gradle dan file file yang ada diroot folder. Folder app/ adalah
folder utama pada aplikasi android, didalamnya akan seperti ini.

Pada folder build sepertti gen/ di eclipse, isinya file-file hasil generate dari IDE, jadi tidak perlu
diubah-ubah isi folder tersebut. Kemudian folder libs/ sama seperti di eclipse. Jika Kamu
menggunakan library dalam bentuk .jar maka tempatkan difolder libs. Selanjutnya folder src/.
src adalah folder dimana tersimpan source java dan layout dalam bentuk XML, secara default
android studio akan mengenerate dua folder yaitu, androidtest dan main. Folder androidtest
adalah folder khusus UnitTest, jika kamu belum paham, fokus saja pada folder main,karena
source dan resource terletak difolder tersebut.

3. Gradle
Yang baru di Android Studio adalah gradle, sebuah featured build automation. Selengkapnya
dapat lihat di situs berikut ini http://www.gradle.org/. File Gradle berisi library yang
digunakan, versi aplikasi, signed key properties,lokasi repository dll. File yang akan sering kita
ubah adalah file build.gradle yang berada dalam folder app/ berikut ini.

Kita dapat lihat, file ini berisi pengaturan untuk versi sdk yang di compaile, build version yang
digunakan, nama paket aplikasi, minSDK yang digunakan, versioncode, versionname dan
dependencies yang digunakan.

Membuat Project Android di Android


Studio

Membuat Project Android di Android Studio. apa itu android Studio?, Android Studio
adalah sebuah IDE untuk Android Development diperkenalkan google pada acara I/O 2013.
Apa yang membedakan antara Android Studio dengan Eclipse ?, Android Studio menggunakan
Gradle untuk memanajemen project. Gradle Merupakan Build Automation Tool, untuk
mengenal lebih lanjut melalui situs berikut ini gradle.org, ini yang membedakan gradle dari
Ant atau Maven yang memakai XML.
Dalam Tutorial ini saya akan membahas cara membuat project aplikasi android sederhana dan
cara membuat Bluestack menjadi emulator di android studio.
Membuat Project Android Sederhana di Android Studio
Cara Menghubungkan Android Studio dengan Bluestack

Membuat Project Android Sederhana di Android Studio


1. Download Android studio
Untuk mendownload android studio versi terbaru, saya saran kan mendownload di link berikut
ini. http://developer.android.com/
2. Create Project
Inilah tampilan awal Android Studio setelah diload.

Klik start a new Android Studio Project untuk membuat project android baru,
Kemudian penamaan aplikasi dan package seperti gambar dibawah.

pada bagian penentuan build target, jika di eclipse ada bagian dimana user menentukan build
target sedangkan di android studio hanya menentukan minimum SDK.

Selain itu di android studio membuat apps dapat juga di build untuk Android TV, wear dan
glass.
Pada saat pemilihan Add an activity to mobile, pilih blank activity.
Setelah itu pada choose optional for your new file, klik Finish

3. Tampilan Awal
Inilah tampilan awal setelah setting properties project tadi. Aplikasi android ini akan
menampilkan Hello World.

Mengenal Activity pada Aplikasi Android


Mengenal Activity pada Aplikasi Android. Activity merepresentasi satu layar dengan user
interface. contoh, Sebuah aplikasi email memiliki activity yang menunjukkan daftar email
baru, dan activity lainya seperti menulis email dan membaca email.
Jika kita sudah mempelajari bahasa pemrograman c, c++, dan java pasti kita melihat program
dimulai dengan function main(). Hal ini sangat mirip, pada aplikasi android, program dimulai
dengan method callback onCreate(). Urutan method callback dari mulai activiy sampai
berakhirnya activity dapat dilihat pada diagram activity lifecycle

Activity Lifecycle (sumber gambar : developer.android.com)

Method callback mendefinisikan suatu event, Kita tidak perlu mengimplementasi semua
method callback. Namun, Anda penting memahami masing-masing method Callback, sehingga
aplikasi kita berprilaku sesuai harapan pengguna.
Method
onCreate()
onStart()
onResume()
onPause()
onStop()
onDestroy()
onRestart()

Description
Method ini pertama kali dipanggil ketika activity pertama dimulai.
Method ini dipanggil ketika activity sudah terlihat pada user.
Method ini dipanggil ketika activity mulai berinteraksi dengan user.
Method ini Dipanggil ketika activity berhenti sementara tidak menerima
inputan user dan tidak mengeksekusi kode apapun.
Method ini dipanggil ketika activity sudah tidak terlihat pada user.
Method ini dipanggil sebelum sebuah activity di matikan.
Method ini dipanggil setelah activity berhenti dan ditampilkan ulang oleh
user.

Contoh Penggunaan Activity pada Aplikasi Android


Pada tutorial ini, kita akan mempelajari siklus activity pada aplikasi android. Ikuti langkah
berikut ini.
1. Buat project baru, pada tutorial ini saya menggunakan package com.teknorial.lifecycle .
Jika Anda belum mengerti cara membuat project diandroid studio, saya anjurkan baca artikel
ini Membuat Project Android di Android Studio
2. Modifikasi file MainActivity.java seperti dijelaskan dibawah ini.
Berikut isi file MainActivity.java, dalam file ini terdapat method-method callback yang
menjelaskan siklus hidup (LifeCycle). Method Log.d() digunakan untuk menghasilkan pesan
Log.
package com.teknorial.lifecycle;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
public class MainActivity extends Activity {
String status = "Android: ";
/**Method ini pertama kali dipanggil ketika activity pertama dimulai.*/
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.d(status, "The onCreate() event");
}
/**Method ini dipanggil ketika activity sudah terlihat pada user. */
@Override
protected void onStart(){
super.onStart();
Log.d( status,"The onStart() event");
}
/**Method ini dipanggil ketika activity mulai berinteraksi dengan user.*/
@Override
protected void onResume(){

super.onResume();
Log.d(status, "The onResume() event");
}
/**Method ini Dipanggil ketika activity berhenti sementara tidak menerima
inputan user dan tidak mengeksekusi kode apapun.*/
@Override
protected void onPause(){
super.onPause();
Log.d(status,"The onPause() event ");
}
/**Method ini dipanggil ketika activity sudah tidak terlihat pada user.*/
@Override
protected void onStop(){
super.onStop();
Log.d(status,"The onStop() event");
}
/**Method ini dipanggil sebelum sebuah activity dimatikan (di destroy).*/
@Override
protected void onDestroy(){
super.onDestroy();
Log.d(status,"The onDestroy() event");
}
}

Sekarang kita coba menjalankan Aplikasi untuk melihat siklus hidup atau lifecycle, dalam
tutorial ini saya menggunakan emulator nexus bawaan dari android studio.
Jika aplikasi kita sudah berjalan di emulator, Kita dapat melihat pesan log dari LogCat di
android studio

Mari kita Coba klik tombol home pada emulator


maka LogCat akan menghasilkan pesan log seperti berikut:
05-09 13:39:12.608
onPause() event

5751-5751/com.teknorial.lifecycle

D/Android The

05-09 13:39:12.643
onStop() event

5751-5751/com.teknorial.lifecycle

D/Android The

Jika kita kembali membuka aplikasi kita, maka LogCat akan menghasilkan pesan log seperti
berikut:
05-09 13:43:22.174
onStart() event

5751-5751/com.teknorial.lifecycle

D/Android The

05-09 13:43:22.174
onResume() event

5751-5751/com.teknorial.lifecycle

D/Android The

Selanjutnya, Kita coba kembali tekan tombol back,


maka LogCat akan menghasilkan pesan log seperti berikut:
05-09 13:44:23.041
onPause() event

5751-5751/com.teknorial.lifecycle

D/Android The

05-09 13:44:28.520
onStop() event

5751-5751/com.teknorial.lifecycle

D/Android The

05-09 13:44:28.520
onDestroy() event

5751-5751/com.teknorial.lifecycle

D/Android The

Mengenal Fragment Pada Aplikasi Android


Mengenal Fragment Pada Aplikasi Android. Fragment merupakan bagian dari UI dalam
activity. Kamu dapat menggabungkan beberapa fragment dalam activity untuk membuat multipane UI. Ada beberapa hal yang kamu perlu tahu tentang fragment yaitu, fragment memiliki
siklus hidup (lifecycle) sendiri, dapat proses event sendiri, dan dapat ditambah atau dihapus
ketika activity sedang jalan. Fragment diperkenalkan pada HoneyComb API 11 namun bisa
digunakan pada perangkat android lama dengan menggunakan Support Library dari 1.6 sampai
2.0. Contoh fragment seperti di gambar berikut.

Ketika salah satu item dari listview disentuh oleh user maka akan mencul informasi atau item
dari detail view. Untuk lebih memahami, Saya akan berikan screenshot dalam aplikasi android
yang sebenarnya.

Contoh Kasus screenshot diatas adalah apps contact. Pada UI smartphone maka user pertama
kali akan melihat listview dan ketika item dari listview disentuh maka berpindah ke detail view,

berbeda dengan UI pada tablet karena tablet memiliki ukuran lebih lebar maka listview,
DetailView dan other data view akan muncul secara bersamaan.

Jadi dapat kita ambil kesimpulan bahwa beberapa fragment dapat dikombinasi dalam satu
activity dan optimal digunakan pada layar lebih besar seperti tablet.

Siklus Hidup (LifeCycle) Pada Fragment


Prerequisites:
Mengenal Activity pada Aplikasi Android
Class fragment memiliki kode yang terlihat hampir seperti Activity. Fragment berisi method
callback mirip dengan Activity, seperti onCreate (), onStart (), onPause (), dan OnStop ().
Siklus hidup dari fragment berhubungan dengan siklus hidup Activity, berikut tahapan siklus
hidup fragment yang berkaitan dengan siklus hidup dari activity.

1. Berikut penjelasan tahapan di siklus hidup (LifeCycle) dari gambar diatas.


Activity onCreate() dipanggil, dimana activity dapat mengatur tampilan dengan
menggunakan method setContentView().
2. onAttach() dipanggil setelah fragment dikaitkan dengan activity. Fragment mendapat
refrensi ke objek activity yang dapat digunakan sebagai konteks.
3. onAttachFragment dipanggil oleh activity untuk menotifikasi activity bahwa fragment
telah di attach.
4. onCreate () dipanggil ketika saat dibuat fragment.
Apa yang membedakan onCreate() di activity dan onCreate di fragment ?
Pada oncreate() di Activity, Kita bisa gunakan setContentView() dan menghubungkan dengan
tampilan (UI), tapi pada Oncreate() di fragment seharusnya kita tidak mengakses element UI
dari fragment karena Activity Oncreate() mungkin belum selesai, namun, kita bisa membuat
backgroud thread untuk membuat operasi lebih lama.
5. Method OnCreateView() dipanggil dalam fragment, disinilah kita dapat menautkan
layout fragment dengan objeknya.
6. onActivityCreated() dipanggil setelah method activity onCreate() selesai. jadi disini
kita dapat mengakses element UI melalui method ini.
7. onStart() dipanggil di dalam activity
8. onStart() dipanggil di dalam fragment
9. onResume() dipanggil di dalam activity
10. onResume() dipanggil di dalam fragment

Pada dalam kotak merah, ini merepresentasikan method yang dipanggil untuk setiap fragment.
Untuk setiap fragment method 3,4,5 dipanggil dan akhiri dengan method 6.
Sekarang kita lihat kasus dimana fragment akan dihancurkan (destroyed).

1. onPause() dipanggil di dalam fragment.


2. onPause() dipanggil di dalam activit
3. onSaveInstanceState () digunakan untuk menyimpan informasi fragment dalam objek
Bundle.
4. onSaveInstanceState () digunakan untuk menyimpan informasi activity dalam objek
Bundle.
5. onStop() dipanggil di dalam fragment.
6. onStop() dipanggil di dalam Activity.
7. onDestroyView () dipanggil setelah hirarki view fragment tidak lagi dapat diakses.
8. onDestroy () dipanggil setelah fragment tidak digunakan, masih ada objek java melekat
pada activity.
9. onDestroy () dipanggil di dalam activity.
10. onDetach () fragment tidak terikat dengan activity, dan tidak memiliki hirarki view lagi.

Contoh Penggunaan LifeCycle Fragment pada Aplikasi Android

Pada tutorial ini, kita akan mempelajari lifecycle fragment pada aplikasi android. Ikuti langkah
berikut ini.
1.

Buat project baru, pada tutorial


com.teknorial.fragmentlifecycle.

ini

saya

menggunakan

2.

Modifikasi file MainActivity.java seperti dijelaskan dibawah ini.

nama

package

package com.teknorial.fragmentlifecycle;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
public class MainActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is
present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
}

3.

Buat Java class baru dengan nama


app/java/com.teknorial.fragmentlifecycle.

fragmentkita.java

pada

direktori

dalam file ini terdapat method-method callback yang menjelaskan siklus hidup (LifeCycle).
Method Log.d() digunakan untuk menghasilkan pesan Log.
package com.teknorial.fragmentlifecycle;
import
import
import
import
import
import
import

android.app.Activity;
android.os.Bundle;
android.support.v4.app.Fragment;
android.util.Log;
android.view.LayoutInflater;
android.view.View;
android.view.ViewGroup;

/**
* Created by Teknorial on 15-Sep-15.
*/
public class FragmentKita extends Fragment {
@Override
public void onAttach (Activity activity){
Log.i("Fragment","onAttach");
super.onAttach(activity);
}
@Override
public void onCreate (Bundle savedInstanceState){
Log.i("Fragment","onCreate");
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState){
Log.i("Fragment", "onCreateView");
return inflater.inflate(R.layout.fragment_layout,container,false);
}
@Override
public void onActivityCreated(Bundle savedInstanceState){
Log.i("Fragment","onActivityCreated");
super.onActivityCreated(savedInstanceState);
}
@Override
public void onStart() {
Log.i("Fragment","onStart");
super.onStart();
}
@Override
public void onResume() {
Log.i("Fragment","onResume");
super.onResume();
}
@Override
public void onPause() {
Log.i("Fragment","onPause");
super.onPause();
}
@Override
public void onSaveInstanceState(Bundle outState){
Log.i("Fragment","onSaveInstanceState");
super.onSaveInstanceState(outState);
}
@Override
public void onStop() {
Log.i("Fragment","onStop");
super.onStop();
}

@Override
public void onDestroyView() {
Log.i("Fragment","onDestroyView");
super.onDestroyView();
}
@Override
public void onDestroy() {
Log.i("Fragment","onDestroy");
super.onDestroy();
}
@Override
public void onDetach() {
Log.i("Fragment","onDetach");
super.onDetach();
}
}

4.

Modifikasi file activity_main.xml seperti berikut.

<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" tools:context=".MainActivity">
<TextView android:text="@string/hello_world"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<fragment
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:name="com.teknorial.fragmentlifecycle.FragmentKita"
tools:layout="@layout/fragment_layout"/>
</RelativeLayout>

5.

Buat file XML layout baru dengan nama fragment_layout.java pada direktori
app/res/layout.

<?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:paddingTop="100dp"
android:background="#52B3D9"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="121dp"
android:background="#CF000F"
android:text="Ini adalah Fragment Kita :D"
android:textSize="32sp" />
</LinearLayout>

Sekarang kita coba menjalankan Aplikasi untuk melihat siklus hidup atau lifecycle. Jika
aplikasi kita sudah berjalan di emulator, Kita dapat melihat pesan log dari LogCat di android
studio.
Demikian Artikel Mengenal Fragment pada Aplikasi Android. Ikuti terus teknorial.com untuk
mengetahui banyak hal tentang android. Jangan lupa untuk Like Fanspage Teknorial di
Facebook dan Google Plus untuk mendapatkan update terbaru dari teknorial.com. Jika ada
pertanyaan jangan ragu untuk bertanya dikotak komentar. Terima Kasih

Mengenal Processes, Thread dan Service di


Android
Mengenal Processes, Thread dan Service di Android. Ketika satu Komponen aplikasi
dijalankan dan aplikasi tidak memiliki komponen lain yang berjalan, sistem Android akan
memulai Linux process baru untuk aplikasi dengan single thread. Secara default, semua
komponen dari aplikasi yang sama berjalan dalam proses dan thread yang sama (disebut main
thread).

Komponen pada Aplikasi Android


Secara default, semua komponen dari aplikasi yang sama berjalan dalam proses yang sama dan
sebagian besar aplikasi tidak harus mengubah ini. Namun, jika Anda perlu untuk mengontrol
proses komponen tertentu, Anda dapat melakukannya di file manifest. Gunakan Atribut dari
android:process <activity> <service> <receiver> dan <provider> untuk menentukan
proses akan dijalankan. Komponen pada aplikasi berbeda dapat jalan dengan proses yang sama
dengan menggunakan android:process jika

Aplikasi tersebut saling berbagi linux user id yang sama.


Aplikasi tersebut signed dengan certifacates yang sama.

Proses yang mana seharusnya android kill ?


Android membandingkan pentingnya proses dengan yang lain dan memperhatikan user. Pada
kasus low memory, proses yang tidak digunakan oleh user akan di kill duluan.

Process Importance levels

1.
2.

Proses dengan Lowest Importance akan dieliminasi duluan.


Foreground Process [Highest Importance], suatu proses dianggap Foreground Process jika
salah satu kondisi berikut:

3.

4.

5.

6.

7.

Activity dengan onResume() yang sedang berjalan dan user berinteraksi.


Service mengeksekusi method lifecycle, foreground service, atau user
berinteraksi dengan dengan serivice yang terikat pada activity yang sedang
berjalan.
BroadcastReceiver mengeksekusi method onReceive().
Visible Process [2nd Highest Importance], sebuah proses yang tidak memiliki komponen
foreground, tapi masih dapat mempengaruhi apa yang user lihat di layar. Suatu proses
dianggap
Visible Process jika salah satu dari kondisi berikut ini :
Activity dengan dipanggil method onPause().
Service terikat dengan activity yang visible.
Service Process [3rd Highest Importance], suatu proses dianggap Service Process jika
kondisi seperti berikut:
User tidak langsung berinteraksi
Memiliki service yang berjalan seperti memutar musik and tidak seperti 2 katagori di
atas.
Background Process [2nd Lowest Importance]
User tidak berinteraksi sama sekali.
Jika activity baru dilihat oleh user maka proses tersebut akan di hancurkan terakhir.
Empty Process [Lowest Importance]
Tidak ada komponen yang berjalan.
proses ini akan tetap hidup untuk tujuan caching.

Jadi Service Process memiliki peringkat yang lebih tinggi dari pada proses yang tidak memiliki
service [gunakan threads untuk operasi suatu proses lebih lama]. Oleh karena itu,saat mendownload gambar dari worker threads menggunakan service lebih baik daripada mendownload tanpa service.
Demikian artikel Mengenal Processes, Thread dan Service di Android. Ikuti terus
teknorial.com untuk mengetahui banyak hal tentang pemrograman android. Jangan lupa untuk
Like Fanspage Teknorial di Facebook dan Google Plus untuk mendapatkan update terbaru dari
teknorial.com . Jika ada pertanyaan jangan ragu untuk bertanya dikotak komentar. Terima
Kasih
Referensi
Processes and Threads
http://developer.android.com/guide/components/processes-and-threads.html

Belajar Android Studio Mengenal Layout


Bagian 1
Sebelumnya kita sudah belajar membuat aplikasi sederhana pada Android. Sekarang kita
melangkah ke aplikasi yang lebih menarik, yaitu aplikasi yang sudah menggunakan beberapa
object view groups dan view.
Pada Android layout memegang peranan penting terutama pada user interface. Dalam layout
biasany didalamnya terdiri dari satu atau lebih objek view sehingga dapatlah disebut Layout
adalah View Group.
Ada beberapa layout yang berlaku di android.
Linear Layout
Linear Layout sesuai dengan namanya digunakan untuk menyusun view sacara linear vertical
atau horizontal.
Agar Lebih memahaminya mari kita buat satu project yang menggunakan linear layout, Kali
ini projectnya kita buat dengan menggunakan Android Studio
1. Buka Android Studio lalu buat New Project.

Klik Next

Klik Next sampai muncul jendela ini

Setelah klik Finish maka secara otomatis project kita tercreate.


2. Edit layout activity_main.xml lalu ketukan kode berikut
<LinearLayout 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:orientation="vertical"
tools:context="${packageName}.${activityClass}">
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"

android:layout_height="fill_parent"
android:layout_weight="1">
<TextView
android:text="Merah"
android:gravity="center_horizontal"
android:background="#aa0000"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_weight="1"/>
<TextView
android:text="Hijau"
android:gravity="center_horizontal"
android:background="#00aa00"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_weight="1"/>
<TextView
android:text="Biru"
android:gravity="center_horizontal"
android:background="#0000aa"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_weight="1"/>
<TextView
android:text="Kuning"
android:gravity="center_horizontal"
android:background="#aaaa00"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_weight="1"/>
</LinearLayout>
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1">
<TextView
android:text="Baris Satu"
android:textSize="15pt"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"/>
<EditText android:id="@+id/EditText1"
android:text="Baris Dua"
android:textSize="15pt"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"/>
<Button android:id="@+id/Button1"
android:text="Baris Tiga"
android:textSize="15pt"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"/>
<TextView
android:text="Baris Empat"
android:textSize="15pt"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"/>

</LinearLayout>
</LinearLayout>

Coba perhatikan kita ada tiga tag LinearLayout.


1. LinearLayout yang paling luar android:orientation diset vertical,
yang berarti setiap view atau layout yang berada didalamnya akan disusn secara
vertical.
2. LinearLayout yang kedua berada didalam LinearLayout yang diluar,
android:orientation diset horizontal , yang berarti setiap view atau
layout yang berada didalamnya akan disusun secara horizontal
3. Linear Layout yang ketiga juga berada didalam LinearLayout yang diluar,
android:orientation diset vertical yang berarti setiap view atau
layout yang berada didalamnya akan disusun secara vertical
LinearLayout yang paling luar bisa disebut parent dari LinearLayout yang kedua dan ketiga.
Disini kita juga mulai dikenalkan dengan beberapa tag baru yang masuk kedalam golongan
view
Tag

Fungsi

TextView

Untuk menampilkan Text dalam bentuk label

EditText

Untuk Menampilkan Inputan Text

Button

Digunakan untuk menampilkan button atau tombol.

Diatas juga terlihat properti-properti (Kalau kita biasa dengan HTML ini bisa disebut Atribut
dan CSSnya) yang melekat pada masing-masing view.
Property (Atribut)

fungsi

android:id

Menetapkan id dari suatu view

android:text

Menetapkan isi text yang akan ditampilkan

Property (CSS)

fungsi

android:textSize

Menetapkan besar ukuran huruf

android:layout_width

Menetapkan lebar dari suatu view

android:layout_height

Menetapkan tinggi dari suatu view

android:layout_weight

Menunjukkan berapa banyak ruang ekstra dalam


LinearLayout akan dialokasikan ke tampilan yang terkait
dengan LayoutParams.

android:gravity

Menentukan tempat object/view pada suatu layout

Agar lebih memahami fungsi dari property-property diatas cobalah baca javadoc android pada
situs developer.andorid.com dan coba rubah nilainya.
3. Buku File MainActivity.java, disini akan terlihat bahwa layout yang digunakan pada activity
ini adalah activity_main.xml
package net.agusharyanto.belajarlayout;
import android.app.Activity;
import android.os.Bundle;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}

4. Sekarang mari kita run projectnya

Gimana mudah bukan, Nantikan lanjutan tentang belajar layout bagian 2

Belajar Android Studio Mengenal Layout


bagian 2 - Relative Layout
Pada seri belajar android studio sebelumnya kita sudah belajar tentang linear layout. nah
sekarang kita akan coba belajar layout android lainnya yang juga sering kita gunakan yaitu
Relative Layout. Mari kita mulai
1. Masih dengan project yang tadi buat pada directory res/layout buat layout baru dengan nama
relative_layout.xml
Klik Kanan folder layout lalu pilih New -> Layout Resource File

akan muncul jendela new resource file

Isi File name dengan relative_layout


Isi Root element dengan RelativeLayout, Kemudian Klik OK

Sacara otomatis akan membuat file relative_layput.xml difolder layout, Edit file tersebut lalu
ketikkan kode berikut
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="User Name"
android:id="@+id/textView"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/editText"
android:layout_alignParentTop="true"
android:layout_toRightOf="@+id/textView" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="Password"
android:id="@+id/textView2"
android:layout_alignTop="@+id/editText2"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textPassword"

android:ems="10"
android:id="@+id/editText2"
android:layout_below="@+id/editText"
android:layout_alignRight="@+id/editText"
android:layout_alignEnd="@+id/editText"
android:layout_alignLeft="@+id/editText"
android:layout_alignStart="@+id/editText" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Login"
android:id="@+id/button"
android:layout_below="@+id/editText2"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true" />
</RelativeLayout>
Pada file relative_layout.xml diatas terdapat 2 buah TextView untuk label, 2 buah EditText
untuk input dan 1 buah CommadButton untuk tombol Login
2. Buka file MainActivity.java ganti activity_main.xml dengan relative_layout.xml
package net.agusharyanto.belajarlayout;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
public class MainActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.relative_layout);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}

Sekarang mari kita run projectnya

Hati-hati dalam penyusnan view pada RelativeLayout ini, karena letak view dipengaruhi oleh
view lainnya.

Belajar Android ListView dengan


CheckBox
Belajar Android kali ini akan membahas tentang ListView dengan CheckBox. Kenapa sih
kita harus belajar ini. Dalam kehidupan manusia sering dihadapkan dengan pilihan adayang
harus memilih satu pilihan diantara banyak pilihan dan ada yang boleh memilih lebih dari
satu. Contohnya Untuk pemilihan ketua BEM kita hanya boleh pilih salah satu nama. Pada
saat mengisis data diri untuk bahasa pemroraman yang dikuasai, disitu kita bisa memimilih
lebih dari satu bahasa pemrograman.
Nah ListView dengan CheckBox inilah yang bisa kita gunakan untuk memilih bahasa
pemrograman yang disukai.
Sekarang mari kita coba membuat peroject yang menampilkan listview bahasa permrograman
1. Buka Eclipse lalu buat project baru dengan nama LearnListViewCheckBox

Klik Next terus sampai finish bisa diklik.

2. Edit activity_main.xml lalu ktikan kode berikut


<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"
tools:context="${relativePackage}.${activityClass}" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:text="Belajar ListView CheckBox" />
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_below="@+id/textView1"
android:text="Bahasa Pemrograman yang dikuasai" />
<ListView
android:id="@+id/listView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/button1" >
</ListView>
</RelativeLayout>

3. buat layout baru dengan nama bahasa_row.xml lalu ketikan kode berikut
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="6dip" >
<CheckBox
android:id="@+id/checkBox1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:focusable="false"
android:focusableInTouchMode="false"
android:text="CheckBox" />
<TextView
android:id="@+id/code"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/checkBox1"
android:layout_alignBottom="@+id/checkBox1"
android:layout_toRightOf="@+id/checkBox1"

android:text="TextView" />
</RelativeLayout>

4. Buat clas baru dengan nama Bahasa.java lalu ketikkan kode berikut

package net.agusharyanto.learnlistviewcheckbox;
public class Bahasa {
String id = null;
String name = null;
boolean selected = false;
public Bahasa(String id, String name, boolean selected) {
super();
this.id = id;
this.name = name;
this.selected = selected;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public boolean isSelected() {
return selected;
}
public void setSelected(boolean selected) {
this.selected = selected;
}
}

5. Edit class MainActivity.java lalu ketikan kode berikut


package net.agusharyanto.learnlistviewcheckbox;
import java.util.ArrayList;
import
import
import
import
import

android.app.Activity;
android.content.Context;
android.os.Bundle;
android.util.Log;
android.view.LayoutInflater;

import
import
import
import
import
import
import
import
import
import
import

android.view.View;
android.view.View.OnClickListener;
android.view.ViewGroup;
android.widget.AdapterView;
android.widget.AdapterView.OnItemClickListener;
android.widget.ArrayAdapter;
android.widget.Button;
android.widget.CheckBox;
android.widget.ListView;
android.widget.TextView;
android.widget.Toast;

public class MainActivity extends Activity {


MyCustomAdapter dataAdapter = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button myButton = (Button) findViewById(R.id.button1);
myButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
StringBuffer responseText = new StringBuffer();
responseText.append("Bahsasa Pemrograman Yang
dikuasai adalah");
ArrayList<Bahasa> bahasaList =
dataAdapter.bahasaList;
for (int i = 0; i < bahasaList.size(); i++) {
Bahasa bahasa = bahasaList.get(i);
if (bahasa.isSelected()) {
responseText.append("\n" +
bahasa.getName());
}
}
Toast.makeText(getApplicationContext(),
responseText,
Toast.LENGTH_SHORT).show();
}
});
displayListView();
}
private void displayListView() {
// Mendeklarasikan arraylist bahasList dan menginisialiasai
dengan 7 data
ArrayList<Bahasa> bahasaList = new ArrayList<Bahasa>();
Bahasa bahasa = new Bahasa("1", "Java", true);
bahasaList.add(bahasa);
bahasa = new Bahasa("2", "C++", false);
bahasaList.add(bahasa);
bahasa = new Bahasa("3", "Java Script", false);

bahasaList.add(bahasa);
bahasa = new Bahasa("4",
bahasaList.add(bahasa);
bahasa = new Bahasa("5",
bahasaList.add(bahasa);
bahasa = new Bahasa("6",
bahasaList.add(bahasa);
bahasa = new Bahasa("7",
bahasaList.add(bahasa);

"Erlang", false);
"Phyton", true);
"Perl", false);
"Pascal", false);

// Buata array adapter dari data bahasaList


dataAdapter = new MyCustomAdapter(this, R.layout.bahasa_row,
bahasaList);
ListView listView = (ListView) findViewById(R.id.listView1);
// Assign adapter to ListView
listView.setAdapter(dataAdapter);
listView.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// When clicked, show a toast with the TextView
text
Bahasa bahasa = (Bahasa)
parent.getItemAtPosition(position);
Toast.makeText(getApplicationContext(),
"Clicked on Row: " + bahasa.getName(),
Toast.LENGTH_SHORT).show();
}
});
}
private class MyCustomAdapter extends ArrayAdapter<Bahasa> {
private ArrayList<Bahasa> bahasaList;
public MyCustomAdapter(Context context, int textViewResourceId,
ArrayList<Bahasa> bahasaList) {
super(context, textViewResourceId, bahasaList);
this.bahasaList = new ArrayList<Bahasa>();
this.bahasaList.addAll(bahasaList);
}
private class ViewHolder {
TextView id;
CheckBox name;
}
@Override
public View getView(int position, View convertView, ViewGroup
parent) {
ViewHolder holder = null;
Log.v("ConvertView", String.valueOf(position));
if (convertView == null) {
LayoutInflater vi = (LayoutInflater)
getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = vi.inflate(R.layout.bahasa_row,
null);

holder = new ViewHolder();


holder.id = (TextView)
convertView.findViewById(R.id.code);
holder.name = (CheckBox) convertView
.findViewById(R.id.checkBox1);
convertView.setTag(holder);
holder.name.setOnClickListener(new
View.OnClickListener() {
public void onClick(View v) {
CheckBox cb = (CheckBox) v;
Bahasa bahasa = (Bahasa) cb.getTag();
Toast.makeText(
getApplicationContext(),
"Clicked on Checkbox: " +
cb.getText() + " is "
+
cb.isChecked(), Toast.LENGTH_SHORT)
.show();
bahasa.setSelected(cb.isChecked());
}
});
} else {
holder = (ViewHolder) convertView.getTag();
}
Bahasa bahasa = bahasaList.get(position);
holder.id.setText(" (id:" + bahasa.getId() + ")");
holder.name.setText(bahasa.getName());
holder.name.setChecked(bahasa.isSelected());
holder.name.setTag(bahasa);
return convertView;
}
}
}

6. Sekarang mari kita run projectnya. Jika semua sudah benar maka hasilnya akan seperti ini

Klik bahasa yang dikuasai lalu sentuh button Bahasa Pemrograman yang dikuasai maka akan
muncul Toast yang mengiformasikan bahasa-bahasa yang dipilih

Tutorial Android Membuat Tab Swipe dan


View Pager
Materi kita kali ini adalah Tutorial Android Membuat Tab Swipe dan View Pager. Sekarang
Aplikasi-aplikasi android yang ada di Market sudah semakin bagus, contohnya untuk aplikasi
yang menggunakan Tab, kalau dulu untuk berpindah Tab kita harus mengklik Tabnya,
sekarang kita punya cara lain yaitu dengan menswipe kekanan atau kekiri. Salah satu
rahasianya ternyata aplikasi tersebutb memanfaatkan View Pager. Penasaran ingin buat
aplikasi yang navigasi Tabnya bisa dengan Swipe. Mari kita mulai dan ikuti langkah-langkah
berikut.
1. Buat Project dengan nama TSJadwalPelajaran

2. Edit activity_main.xml lalu ketikkan kode berikut


<android.support.v4.view.ViewPager
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent">
</android.support.v4.view.ViewPager>

3. Buat Layout Baru dengan nama jadwalfragment_layout.xml lalu ketikkan kode berikut
<?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:orientation="vertical" >
<ListView
android:id="@+id/listViewJadwal"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</ListView>
</LinearLayout>

4. Buat layout baru dengan nama row_jadwal.xml lalu ketikkan kode berikut
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:id="@+id/textViewRowJam"
android:layout_width="75dp"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:text="TextView" />
<TextView
android:id="@+id/textViewRowPelajaran"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:paddingLeft="10dp"
android:layout_toRightOf="@+id/textViewRowJam"
android:text="TextView" />
</RelativeLayout>

5. Buat Class baru dengan nama Jadwal.java lalu ketikkan kode berikut
package net.agusharyanto.tsjadwalpelajaran;
public class
public
public
public

Jadwal
String
String
String

{
hari="";
jam="";
pelajaran="";

public Jadwal (String pday, String ptime, String plesson){


this.hari = pday;
this.jam = ptime;
this.pelajaran = plesson;
}
}

6. Buat class baru dengan nama AdapterJadwal.java lalu ketikan kode berikut
package net.agusharyanto.tsjadwalpelajaran;
import java.util.ArrayList;
import
import
import
import
import
import
import

android.app.Activity;
android.content.Context;
android.view.LayoutInflater;
android.view.View;
android.view.ViewGroup;
android.widget.ArrayAdapter;
android.widget.TextView;

public class AdapterJadwal extends ArrayAdapter<Jadwal> {


private Activity activity;
private ArrayList<Jadwal> lJadwal;

private static LayoutInflater inflater = null;


public AdapterJadwal (Activity activity, int
textViewResourceId,ArrayList<Jadwal> al_Jadwal) {
super(activity, textViewResourceId, al_Jadwal);
try {
this.activity = activity;
this.lJadwal = al_Jadwal;
inflater = (LayoutInflater)
activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
} catch (Exception e) {
}
}
public int getCount() {
return lJadwal.size();
}
public long getItemId(int position) {
return position;
}
public static class ViewHolder {
public TextView jam;
public TextView pelajaran;
}
public View getView(int position, View convertView, ViewGroup parent) {
View vi = convertView;
final ViewHolder holder;
try {
if (convertView == null) {
vi = inflater.inflate(R.layout.row_jadwal, null);
holder = new ViewHolder();
holder.jam = (TextView)
vi.findViewById(R.id.textViewRowJam);
holder.pelajaran = (TextView)
vi.findViewById(R.id.textViewRowPelajaran);
vi.setTag(holder);
} else {
holder = (ViewHolder) vi.getTag();
}
holder.jam.setText(lJadwal.get(position).jam);
holder.pelajaran.setText(lJadwal.get(position).pelajaran);
} catch (Exception e) {
}
return vi;
}
}

7. Buat class baru dengan nama JadwalFragment.java lalu ketikan kode berikut
package net.agusharyanto.tsjadwalpelajaran;
import java.util.ArrayList;
import
import
import
import
import
import
import

android.os.Bundle;
android.support.v4.app.Fragment;
android.util.Log;
android.view.LayoutInflater;
android.view.View;
android.view.ViewGroup;
android.widget.ListView;

public class JadwalFragment extends Fragment {


//TextView tvhari;
ListView listviewJadwal ;
ArrayList<Jadwal> jadwal_terpilih = new ArrayList<Jadwal>();
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup
container,
Bundle savedInstanceState) {
// Retrieving the currently selected item number
int position =
getArguments().getInt("position");//getArguments().getInt("position");
String[] menus ={"Senin", "Selasa", "Rabu","Kamis","Jumat" };
// Creating view corresponding to the fragment
View v = inflater.inflate(R.layout.jadwalfragment_layout,
container, false);
listviewJadwal = (ListView)
v.findViewById(R.id.listViewJadwal);
showJadwal(menus[position]);
return v;
}
public void showJadwal(String hari) {
Log.d("TAGS","hari:"+hari);
//
tvhari.setText("Hari " + hari);
jadwal_terpilih.clear();
for (int i = 0; i < MainActivity.list_jadwal.size(); i++)
{
Jadwal jadwal = MainActivity.list_jadwal.get(i);
if (jadwal.hari.equals(hari)) {
jadwal_terpilih.add(jadwal);
}
}
Log.d("TAGS","hari:"+hari+"jadwal:"+jadwal_terpilih.size());
AdapterJadwal adapterjadwal = new AdapterJadwal(getActivity(),
0,
jadwal_terpilih);
listviewJadwal.setAdapter(adapterjadwal);
}
}

8.

Buat class baru dengan nama TabsPagerAdapter.java

package net.agusharyanto.tsjadwalpelajaran;
import
import
import
import

android.os.Bundle;
android.support.v4.app.Fragment;
android.support.v4.app.FragmentManager;
android.support.v4.app.FragmentPagerAdapter;

public class TabsPagerAdapter extends FragmentPagerAdapter {


public TabsPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int index) {
String[] hari ={"Senin", "Selasa", "Rabu","Kamis","Jumat" };
JadwalFragment rFragment = new JadwalFragment();
// Passing selected item information to fragment
Bundle data = new Bundle();
data.putInt("position", index);
data.putString("hari", hari[index]);
rFragment.setArguments(data);
return rFragment;
}
@Override
public int getCount() {
// get item count - equal to number of tabs
return 5;
}
}

9. Edit Class MainActivity.java lalu ketikkan kode berikut

package net.agusharyanto.tsjadwalpelajaran;
import java.util.ArrayList;
import
import
import
import
import
import

android.app.ActionBar;
android.app.ActionBar.Tab;
android.app.FragmentTransaction;
android.os.Bundle;
android.support.v4.app.FragmentActivity;
android.support.v4.view.ViewPager;

public class MainActivity extends FragmentActivity implements


ActionBar.TabListener {
private ViewPager viewPager;
private TabsPagerAdapter mAdapter;
private ActionBar actionBar;
// Tab titles

public static String[] tabs = { "Senin", "Selasa",


"Rabu","Kamis","Jumat" };
public static ArrayList <Jadwal> list_jadwal = new
ArrayList<Jadwal>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Initilization
initData();
viewPager = (ViewPager) findViewById(R.id.pager);
actionBar = getActionBar();
mAdapter = new TabsPagerAdapter(getSupportFragmentManager());

//

viewPager.setAdapter(mAdapter);
actionBar.setHomeButtonEnabled(false);
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
// Adding Tabs
for (String tab_name : tabs) {
actionBar.addTab(actionBar.newTab().setText(tab_name)
.setTabListener(this));
}

/**
* on swiping the viewpager make respective tab selected
* */
viewPager.setOnPageChangeListener(new
ViewPager.OnPageChangeListener() {
@Override
public void onPageSelected(int position) {
// on changing the page
// make respected tab selected
actionBar.setSelectedNavigationItem(position);
}
@Override
public void onPageScrolled(int arg0, float arg1, int
arg2) {
}
@Override
public void onPageScrollStateChanged(int arg0) {
}
});
}
@Override
public void onTabReselected(Tab tab, FragmentTransaction ft) {
//
viewPager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
// on tab selected
// show respected fragment view
viewPager.setCurrentItem(tab.getPosition());
}

@Override
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
}
public void initData() {
list_jadwal.clear();
list_jadwal.add(new Jadwal("Senin","08:0010:00","Matematika"));
list_jadwal.add(new Jadwal("Senin","10:00-12:00","Agama
Islam"));
list_jadwal.add(new Jadwal("Senin","12:0013:00","Istirahat"));
list_jadwal.add(new Jadwal("Senin","13:0015:00","Fisika"));
list_jadwal.add(new Jadwal("Selasa","08:00-10:00","Bahasa
Indonesia"));
list_jadwal.add(new Jadwal("Selasa","10:0012:00","Kimia"));
list_jadwal.add(new Jadwal("Selasa","12:0013:00","Istirahat"));
list_jadwal.add(new Jadwal("Selasa","13:0015:00","Biologi"));
list_jadwal.add(new Jadwal("Rabu","08:0010:00","Matematika"));
list_jadwal.add(new Jadwal("Rabu","10:00-12:00","Seni
Rupa"));
list_jadwal.add(new Jadwal("Rabu","12:0013:00","Istirahat"));
list_jadwal.add(new Jadwal("Rabu","13:00-15:00","Bahasa
Inggris"));
list_jadwal.add(new Jadwal("Kamis","08:0010:00","Fisika"));
list_jadwal.add(new Jadwal("Kamis","10:0012:00","Penjaskes"));
list_jadwal.add(new Jadwal("Kamis","12:0013:00","Istirahat"));
list_jadwal.add(new Jadwal("Kamis","13:0015:00","Geografi"));
list_jadwal.add(new Jadwal("Jumat","08:0010:00","Pemrograman Java"));
list_jadwal.add(new Jadwal("Jumat","10:0012:00","Pemrograman Android"));
list_jadwal.add(new Jadwal("Jumat","12:0013:00","Istirahat"));
list_jadwal.add(new Jadwal("Jumat","13:00-15:00","Logika
Algoritma"));
}
}

10. Sekarang mari kita Run Projectnya.


Tampilan Awal Aplikasi.

Untuk berpindah Tab kita bisa menyentuh salah satu Tab. Atau melakukan gerakan swipe ke
kiri

Gimana, Mantapkan Tab Swipe denganView Pagernya


Bisa buat tambahan senjata buat yang lagi skripsi atau lagi ada project biar aplikasinya
tambah mantab

Belajar Android Membuat Tulisan Berjalan


- Marquee
Belajar Android lagi yuk, walaupun masih suasana lebaran teta[ harus semangat. Pada seri
tutoial android kali ini kita akan belajar bagaiman cara menampilkan text bergerak di android.
Kalau yang sering buat web pasti tahu yang namanya marquee. Marquee adalah tag yang
digunakan untuk menmpilkan tulisan bergerak pada halaman web, biasanya digunakan untuk
menampilkan informasi penting. Tentunya kita berfikir, bisa nggak yah kita buat tulisan
bergerak diandroid. Yang paling mudah adalah cari digoogle siapa tahu ada yang pernah
share.
Sekarang mari kita buat aplikasinya
1. Buat project dengan nama LearnMarquee

2.Siapkan layout untuk aplikasi kta, untuk itu Edit activity_main.xml lalu ketikan kode
berikut
<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"
tools:context="${packageName}.${activityClass}" >
<LinearLayout
android:id="@+id/ticker_area"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#00FF00"
android:orientation="horizontal" >
</LinearLayout>
<LinearLayout
android:id="@+id/ticker_area2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/ticker_area"

android:background="#9CB1DD"
android:orientation="horizontal" >
</LinearLayout>
</RelativeLayout>

3. Sekarang kita masuk ke otak dari aplikasi kita, Edit MainActivity.java lalu ketikan kode berikut
package net.agusharyanto.learnmarquee;
import
import
import
import
import
import
import
import
import

android.app.Activity;
android.content.Context;
android.graphics.Color;
android.os.Bundle;
android.view.View;
android.view.animation.Animation;
android.view.animation.TranslateAnimation;
android.widget.LinearLayout;
android.widget.TextView;

public class MainActivity extends Activity {


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
LinearLayout ticker_area1 = (LinearLayout)
findViewById(R.id.ticker_area);
LinearLayout ticker_area2 = (LinearLayout)
findViewById(R.id.ticker_area2);
setticker(ticker_area1, "Orang tua bahagia kalau anaknya lulus
kuliah tepat waktu dengan nilai yang baik", this);
setticker(ticker_area2, "Calon Mertua juga akan bangga punya
menantu yang baik agamanya dan mapan kehidupannya", this);
}
public void setticker(LinearLayout parent_layout, String text, Context
contx) {
if (text != "") {
TextView view = new TextView(contx);
view.setText(text);
view.setTextColor(Color.BLACK);
view.setTextSize(25.0F);
Context context = view.getContext(); // gets the context of the
view
// measures the unconstrained size of the view
// before it is drawn in the layout
view.measure(View.MeasureSpec.UNSPECIFIED,
View.MeasureSpec.UNSPECIFIED);
// takes the unconstrained width of the view
float width = view.getMeasuredWidth();
float height = view.getMeasuredHeight();
// gets the screen width
float screenWidth = ((Activity) context).getWindowManager()
.getDefaultDisplay().getWidth();

view.setLayoutParams(new LinearLayout.LayoutParams((int) width,


(int) height, 1f));
System.out.println("width and screenwidth are" + width + "/"
+ screenWidth + "///" + view.getMeasuredWidth());
// performs the calculation
float toXDelta = width - (screenWidth - 0);
// sets toXDelta to -300 if the text width is smaller that the
// screen size
if (toXDelta < 0) {
toXDelta = 0 - screenWidth;// -300;
} else {
toXDelta = 0 - screenWidth - toXDelta;// -300 - toXDelta;
}
// Animation parameters
Animation mAnimation = new TranslateAnimation(screenWidth,
toXDelta, 0, 0);
mAnimation.setDuration(15000);
mAnimation.setRepeatMode(Animation.RESTART);
mAnimation.setRepeatCount(Animation.INFINITE);
view.setAnimation(mAnimation);
parent_layout.addView(view);
}
}
}

4. Mari kita jalankan programnya

Nah gampangkan buat marquee text di android

Belajar Android Studio dengan Membuat


Aplikasi Android Sederhana
Setelah tahapan instalasi selesai dilakukan, kita lanjut dengan membuat aplikasi sederhana
dengan Android Studio.
Dalam belajar sesuatu yang baru biasanya saya belajar dari hal yang mudah-mudah dulu. Ibarat
belajar matematika kia tahu angka dulu baru belajar pertambahan, pengurangan, perkalian dan
pembagian. Coba bayangkan bisakah kita memahami penambahan dalam matematika kalau
tidak tahu angka. Begitu juga dalam pembuatan aplikasi bisakah kita buat aplikasi Android
yang kompleks dan banyak fitur kalau membuat aplikasi yang sederhana saja tidak bisa.
Aplikasi Android sederhana yang akan kita buat adalah aplikasi yang dapat membantu kita
menghitung luas persegi panjang.
Sekarang mari kita mulai
1. Buka Android Studio lalu pilih Start a new Android Studio Project.

Akan tampil jendela Create New Project, isikan seperti di bawah ini.

Klik Next lalau centang Phone and Tablet

Klik Next, lalu pilih Blank Activity

Klik Next, dan isi Activity Name dan lainnya seperti dibawah ini.

Setelah itu Klik Finish. Maka secara otomatis menampilkan project yang kita buat.

Disini langsung diperlihatkan layout tampilan activity_main.xml. Dan bisa kita langsung run.
Jika kita punya Device Android silahkan connectkan ke komputer melalui usb port.
Klik Tombol Run maka akan muncul pilihan aplikasi uang dirun dimana. Karena saya sudah
menghubungkan Android Moto G saya ke komputer, maka Moto G saya akan muncul Jendela
Choose Device. Agar lebih cepat runnya Kita pilih saja Choose Running Device.
Jika tidak punya device maka bisa pilih Launch Emulator kemidan klik OK

Maka hasil tampilannya adalah seperti ini.

Loh aplikasi persegi panjang kok isinya Hello World. Harusnya kan ada inputan panjang dan
lebar.
2. Untuk menambahkan inputan panjang dan lebar maka kita harus mengedit file layoutnya
dalam hal ini activity_main.xml untuk itu replace kode yang ada pada file tersebut dengan
kode dibawah ini.
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:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context=".MainActivity"
android:id="@+id/relativeLayout">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Panjang"
android:id="@+id/textView"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="number"
android:ems="10"
android:id="@+id/editTextPanjang"
android:layout_below="@+id/textView"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"

/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Lebar"
android:id="@+id/textView2"
android:layout_below="@+id/editTextPanjang"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="number"
android:ems="10"
android:id="@+id/editTextLebar"
android:layout_below="@+id/textView2"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hitung Luas"
android:id="@+id/buttonHitungLuas"
android:layout_below="@+id/editTextLebar"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Luas"
android:id="@+id/textView3"
android:layout_below="@+id/buttonHitungLuas"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="number"
android:ems="10"
android:id="@+id/editTextLuas"
android:layout_below="@+id/textView3"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
</RelativeLayout>

Nah salah satu android studio ini adalah kita bisa langsung lihat previewnya

3. Setelah layout selesai sekarang mari kita kerjakan otak dari aplikasi ini yaitu bagian javanya.
Buka MainActivity.java lalu ketikan kode berikut.
package net.agusharyanto.persegipanjang;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class MainActivity extends ActionBarActivity {
private EditText edtPanjang;
private EditText edtLebar;
private EditText edtLuas;

private Button btnHitungLuas;


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initUI();
initEvent();
}
private void initUI(){
edtPanjang = (EditText) findViewById(R.id.editTextPanjang);
edtLebar = (EditText) findViewById(R.id.editTextLebar);
edtLuas = (EditText) findViewById(R.id.editTextLuas);
btnHitungLuas = (Button) findViewById(R.id.buttonHitungLuas);
}
private void initEvent(){
btnHitungLuas.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
hitungLuas();
}
});
}
private void hitungLuas(){
int panjang = Integer.parseInt(edtPanjang.getText().toString());
int lebar = Integer.parseInt(edtLebar.getText().toString());
int luas = panjang*lebar;
edtLuas.setText(luas+"");
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}

return super.onOptionsItemSelected(item);
}
}
4. Kalau dulu di eclipse untuk konfigurasi aplikasi ada difile AndroidManifest.xml, kalau di
Android Studio konfigurasinya ada pada file build.gradle (module:app)
apply plugin: 'com.android.application'
android {
compileSdkVersion 21
buildToolsVersion "21.1.2"
defaultConfig {
applicationId "net.agusharyanto.persegipanjang"
minSdkVersion 15
targetSdkVersion 21
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'),
'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:21.0.3'
}

6.Sekarang mari kita run aplikasi kita. Saya sarankan kita punya Handphone Android jadi kita
bisa langsung Run ke HP. Karena kalau ke Run menggunakan Emulator itu lambat dan banyak
makan Resource komputer kita
Hasil dari aplikasi kita

Isikan nilai Panjang dan Lebar kemudian sentuh tombol Hitung Luas

Mudahkan buat aplikasi android dengan android studio.

Belajar Android Navigation Drawer dan


Sliding Menu
Kalau beberapa waktu lalu para developer menggunakan Dashboard untuk Tampilan Menunya,
sekarang mereka lebih memilih menggunakan Sliding Menu. Facebook, GMAIL
menggunakan sliding menu kalau istilah didunia development android dikenal dengan nama
Navigation Drawer, disebut Navigation Drawer karena cara kerjanya yang mirip Drawer
(Laci). Navigation Drawer mempunyai kelebihan yaitu menunya hanya muncul jika kita
inginkan, sehingga tidak memakan tempat di layar HP. Penasaran dengan Navigation Drawer,
Mari kita buat project Jadwal Pelajaran yang Navigsinya menggunakan Navigation Drawer
1. Buat Project dengan nama NDJadwal Pelajaran

2. Pada directory drawable Tambahkan icon ic_drawable.png

3. Edit string.xml lalu ketikkan kode berikut


<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">NDJadwalPelajaran</string>
<string name="action_settings">Settings</string>
<string name="hello_world">Hello world!</string>
<string-array name="menus">
<item >Senin</item>
<item >Selasa</item>
<item >Rabu</item>
<item >Kamis</item>
<item >Jumat</item>
<item >Tambah Jadwal</item>
<item >About</item>
</string-array>
<string name="drawer_open">Open Drawer</string>
<string name="drawer_close">Close Drawer</string>
</resources>
4.edit activity_main.xml lalu ketikkan kode berikut
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<!-- The main content view -->
<FrameLayout
android:id="@+id/content_frame"
android:layout_width="match_parent"
android:layout_height="match_parent" />

<!-- The navigation drawer -->


<ListView
android:id="@+id/drawer_list"
android:layout_width="240dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:background="#111"
android:choiceMode="singleChoice"
android:divider="@android:color/transparent"
android:dividerHeight="0dp" />
</android.support.v4.widget.DrawerLayout>
5. Buat Layout baru dengan nama drawer_list_item.xml
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?android:attr/activatedBackgroundIndicator"
android:gravity="center_vertical"
android:minHeight="?android:attr/listPreferredItemHeightSmall"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:textAppearance="?android:attr/textAppearanceListItemSmall"
android:textColor="#fff" />
6. Buat Layout baru dengan nama jadwalfragment_layout.xml
<?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:orientation="vertical" >
<ListView
android:id="@+id/listViewJadwal"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</ListView>
</LinearLayout>

7. Buat Layout baru dengan nama row_jadwal.xml


<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:id="@+id/textViewRowJam"
android:layout_width="75dp"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:text="TextView" />
<TextView
android:id="@+id/textViewRowPelajaran"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:paddingLeft="10dp"
android:layout_toRightOf="@+id/textViewRowJam"
android:text="TextView" />
</RelativeLayout>
8. Buat Layout baru dengan nama fragement_tambah_jadwal.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:text="Tambah Jadwal Disini" />
</RelativeLayout>
9. Buat Class baru dengan nama Jadwal.java
package net.agusharyanto.ndjadwalpelajaran;

public class Jadwal {


public String hari="";
public String jam="";
public String pelajaran="";
public Jadwal (String pday, String ptime, String plesson){
this.hari = pday;
this.jam = ptime;
this.pelajaran = plesson;
}
}
10. Buat Class Baru dengan nama AdapterJadwal.java lalu ketikkan kode berikut
package net.agusharyanto.ndjadwalpelajaran;
import java.util.ArrayList;
import android.app.Activity;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;
public class AdapterJadwal extends ArrayAdapter<Jadwal> {
private Activity activity;
private ArrayList<Jadwal> lJadwal;
private static LayoutInflater inflater = null;
public AdapterJadwal (Activity activity, int textViewResourceId,ArrayList<Jadwal>
al_Jadwal) {
super(activity, textViewResourceId, al_Jadwal);
try {
this.activity = activity;
this.lJadwal = al_Jadwal;
inflater = (LayoutInflater)
activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
} catch (Exception e) {
}
}
public int getCount() {
return lJadwal.size();
}

public long getItemId(int position) {


return position;
}
public static class ViewHolder {
public TextView jam;
public TextView pelajaran;
}
public View getView(int position, View convertView, ViewGroup parent) {
View vi = convertView;
final ViewHolder holder;
try {
if (convertView == null) {
vi = inflater.inflate(R.layout.row_jadwal, null);
holder = new ViewHolder();
holder.jam = (TextView) vi.findViewById(R.id.textViewRowJam);
holder.pelajaran = (TextView) vi.findViewById(R.id.textViewRowPelajaran);
vi.setTag(holder);
} else {
holder = (ViewHolder) vi.getTag();
}
holder.jam.setText(lJadwal.get(position).jam);
holder.pelajaran.setText(lJadwal.get(position).pelajaran);
} catch (Exception e) {
}
return vi;
}
}
11. Buat Class baru dengan FragmentTambahJadwal.java lalu ketikkan kode berikut

package net.agusharyanto.ndjadwalpelajaran;
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public class FragmentTambahJadwal extends Fragment {

@Override
public View onCreateView (LayoutInflater inflater, ViewGroup container, Bundle
savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_tambah_jadwal, container, false);
return v;
}
}
12. Edit class ListFragment.java lalu ketikkan kode berikut
package net.agusharyanto.ndjadwalpelajaran;
import java.util.ArrayList;
import android.app.Fragment;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;
import android.widget.TextView;
public class ListFragment extends Fragment {
ArrayList <Jadwal> list_jadwal = new ArrayList<Jadwal>();
TextView tvhari;
ListView listviewJadwal ;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Retrieving the currently selected item number
int position = getArguments().getInt("position");
String[] menus = getResources().getStringArray(R.array.menus);
// Creating view corresponding to the fragment
View v = inflater.inflate(R.layout.jadwalfragment_layout, container, false);
listviewJadwal = (ListView) v.findViewById(R.id.listViewJadwal);
// Updating the action bar title
getActivity().getActionBar().setTitle(menus[position]);
initData();
showJadwal(menus[position]);
return v;
}
public void showJadwal(String hari) {

//

Log.d("TAGS","hari:"+hari);
tvhari.setText("Hari " + hari);
ArrayList<Jadwal> jadwal_terpilih = new ArrayList<Jadwal>();
for (int i = 0; i < list_jadwal.size(); i++) {
Jadwal jadwal = list_jadwal.get(i);
if (jadwal.hari.equals(hari)) {
jadwal_terpilih.add(jadwal);
}
}
AdapterJadwal adapterjadwal = new AdapterJadwal(getActivity(), 0,
jadwal_terpilih);
listviewJadwal.setAdapter(adapterjadwal);

}
public void initData() {
list_jadwal.add(new Jadwal("Senin","08:00-10:00","Matematika"));
list_jadwal.add(new Jadwal("Senin","10:00-12:00","Agama Islam"));
list_jadwal.add(new Jadwal("Senin","12:00-13:00","Istirahat"));
list_jadwal.add(new Jadwal("Senin","13:00-15:00","Fisika"));
list_jadwal.add(new Jadwal("Selasa","08:00-10:00","Bahasa Indonesia"));
list_jadwal.add(new Jadwal("Selasa","10:00-12:00","Kimia"));
list_jadwal.add(new Jadwal("Selasa","12:00-13:00","Istirahat"));
list_jadwal.add(new Jadwal("Selasa","13:00-15:00","Biologi"));
list_jadwal.add(new Jadwal("Rabu","08:00-10:00","Matematika"));
list_jadwal.add(new Jadwal("Rabu","10:00-12:00","Seni Rupa"));
list_jadwal.add(new Jadwal("Rabu","12:00-13:00","Istirahat"));
list_jadwal.add(new Jadwal("Rabu","13:00-15:00","Bahasa Inggris"));
list_jadwal.add(new Jadwal("Kamis","08:00-10:00","Fisika"));
list_jadwal.add(new Jadwal("Kamis","10:00-12:00","Penjaskes"));
list_jadwal.add(new Jadwal("Kamis","12:00-13:00","Istirahat"));
list_jadwal.add(new Jadwal("Kamis","13:00-15:00","Geografi"));
list_jadwal.add(new Jadwal("Jumat","08:00-10:00","Pemrograman Java"));
list_jadwal.add(new Jadwal("Jumat","10:00-12:00","Pemrograman
Android"));
list_jadwal.add(new Jadwal("Jumat","12:00-13:00","Istirahat"));
list_jadwal.add(new Jadwal("Jumat","13:00-15:00","Logika Algoritma"));
}
}

13. Edit class MainActivity.java lalu ketikkan kode berikut


package net.agusharyanto.ndjadwalpelajaran;
import android.annotation.SuppressLint;
import android.app.Activity;

import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.os.Bundle;
import android.support.v4.app.ActionBarDrawerToggle;
import android.support.v4.widget.DrawerLayout;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class MainActivity extends Activity {
// Within which the entire activity is enclosed
private DrawerLayout mDrawerLayout;
// ListView represents Navigation Drawer
private ListView mDrawerList;
// ActionBarDrawerToggle indicates the presence of Navigation Drawer in the action
bar
private ActionBarDrawerToggle mDrawerToggle;
// Title of the action bar
private String mTitle = "";
@SuppressLint("NewApi")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTitle = "Jadwal Pelajaran";
getActionBar().setTitle(mTitle);
// Getting reference to the DrawerLayout
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
mDrawerList = (ListView) findViewById(R.id.drawer_list);
// Getting reference to the ActionBarDrawerToggle
mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,
R.drawable.ic_drawer, R.string.drawer_open,
R.string.drawer_close) {
/** Called when drawer is closed */
public void onDrawerClosed(View view) {

getActionBar().setTitle(mTitle);
invalidateOptionsMenu();
}
/** Called when a drawer is opened */
public void onDrawerOpened(View drawerView) {
getActionBar().setTitle("Jadwal Pelajaran");
invalidateOptionsMenu();
}
};
// Setting DrawerToggle on DrawerLayout
mDrawerLayout.setDrawerListener(mDrawerToggle);
// Creating an ArrayAdapter to add items to the listview mDrawerList
ArrayAdapter<String> adapter = new
ArrayAdapter<String>(getBaseContext(),
R.layout.drawer_list_item,
getResources().getStringArray(R.array.menus));
// Setting the adapter on mDrawerList
mDrawerList.setAdapter(adapter);
// Enabling Home button
getActionBar().setHomeButtonEnabled(true);
// Enabling Up navigation
getActionBar().setDisplayHomeAsUpEnabled(true);
// Setting item click listener for the listview mDrawerList
mDrawerList.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// Getting an array of rivers
String[] menuItems =
getResources().getStringArray(R.array.menus);
// Currently selected river
mTitle = menuItems[position];
if (mTitle.equals("Tambah Jadwal")){
FragmentTambahJadwal fragmentone = new
FragmentTambahJadwal();
FragmentManager fragmentManager =
getFragmentManager();

// Creating a fragment transaction


FragmentTransaction ft =
fragmentManager.beginTransaction();
// Adding a fragment to the fragment transaction
ft.replace(R.id.content_frame, fragmentone);
// Committing the transaction
ft.commit();
}else{
// Creating a fragment object
ListFragment rFragment = new ListFragment();
// Passing selected item information to fragment
Bundle data = new Bundle();
data.putInt("position", position);
//data.putString("url", getUrl(position));
rFragment.setArguments(data);
// Getting reference to the FragmentManager
FragmentManager fragmentManager = getFragmentManager();
// Creating a fragment transaction
FragmentTransaction ft =
fragmentManager.beginTransaction();
// Adding a fragment to the fragment transaction
ft.replace(R.id.content_frame, rFragment);
// Committing the transaction
ft.commit();
}
// Closing the drawer
mDrawerLayout.closeDrawer(mDrawerList);
}
});
}
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
mDrawerToggle.syncState();
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (mDrawerToggle.onOptionsItemSelected(item)) {
return true;

}
return super.onOptionsItemSelected(item);
}
/** Called whenever we call invalidateOptionsMenu() */
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
// If the drawer is open, hide action items related to the content view
boolean drawerOpen = mDrawerLayout.isDrawerOpen(mDrawerList);
menu.findItem(R.id.action_settings).setVisible(!drawerOpen);
return super.onPrepareOptionsMenu(menu);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}

14. Mari Kita Run Projectnya, Sentuh Icon Drawer, maka akan keluar menu pilih salah satu
hari, akan menampilkan jadwal dihari tersebut.

Wah ternyata Navigation Drawer ini memang mantap. Tambah lagi satu amunisi untuk buat
aplikasi makin mantap

Belajar Android Membuat Spinner


Navigation pada Action Bar
Jumpa lagi dengan agus haryanto, kali ini kita masih membahas tentan salah action bar yaitu
Spinner Navigation
Masih melanjutkan project sebelumnya, sekarang kita akan mencoba bentuk navigasi menu
yang lain yang sering disebut dengan nama Spinner Navigation. Sesuai dengan namanya
Spinner Navigation adalah menu navigasi yanga di action bar yang bentiknya sepert spinner.
sekarang mari kita ikuti langkah pembuatannya
1. Buka project Jadwal Pelajaran yang ada pada tutorial sebelumnya
2. Buat layout baru dengan nama row_spinnermenu_item.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:padding="5dp" >
<ImageView android:id="@+id/imgIcon"
android:layout_width="25dp"
android:layout_height="25dp"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:src="@drawable/ic_launcher"
android:layout_marginRight="5dp"
/>
<TextView android:id="@+id/txtTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_toRightOf="@id/imgIcon"/>
</RelativeLayout>
3. Buat class baru dengan nama SpinnerNavItem.java class ini berfungsi sebagai model dari
isi spinner.
package com.agusharyanto.jadwalpelajaran;
public class SpinnerNavItem {
private String title;
private int icon;

public SpinnerNavItem(String title, int icon){


this.title = title;
this.icon = icon;
}
public String getTitle(){
return this.title;
}
public int getIcon(){
return this.icon;
}
}
4. Buat class baru dengan nama SpinnerMenuAdapter.java, karena isi dari Spinnernya ada
icon gambar dan text maka kita harus buta adapternya sendiri.
package com.agusharyanto.jadwalpelajaran;
import java.util.ArrayList;
import android.app.Activity;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
public class SpinnerMenuAdapter extends BaseAdapter {
private ImageView imgIcon;
private TextView txtTitle;
private ArrayList<SpinnerNavItem> spinnerNavItem;
private Context context;
public SpinnerMenuAdapter(Context context,
ArrayList<SpinnerNavItem> spinnerNavItem) {
this.spinnerNavItem = spinnerNavItem;
this.context = context;
}
@Override
public int getCount() {
return spinnerNavItem.size();
}
@Override
public Object getItem(int index) {

return spinnerNavItem.get(index);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
LayoutInflater mInflater = (LayoutInflater)
context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
convertView = mInflater.inflate(R.layout.row_spinnermenu_item, null);
}
imgIcon = (ImageView) convertView.findViewById(R.id.imgIcon);
txtTitle = (TextView) convertView.findViewById(R.id.txtTitle);
imgIcon.setImageResource(spinnerNavItem.get(position).getIcon());
imgIcon.setVisibility(View.GONE);
txtTitle.setText(spinnerNavItem.get(position).getTitle());
return convertView;
}
@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
LayoutInflater mInflater = (LayoutInflater)
context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
convertView = mInflater.inflate(R.layout.row_spinnermenu_item, null);
}
imgIcon = (ImageView) convertView.findViewById(R.id.imgIcon);
txtTitle = (TextView) convertView.findViewById(R.id.txtTitle);
imgIcon.setImageResource(spinnerNavItem.get(position).getIcon());
txtTitle.setText(spinnerNavItem.get(position).getTitle());
return convertView;
}
}
5. Buat class baru dengan nama SpinnerMenuNavigationActivity.java disinilah inti koding
pada Spinner Navigation
package com.agusharyanto.jadwalpelajaran;
import java.util.ArrayList;

import android.app.ActionBar;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
public class SpinnerNavigationActivity extends Activity implements
ActionBar.OnNavigationListener{
// action bar
private ActionBar actionBar;
// Title navigation Spinner data
private ArrayList<SpinnerNavItem> navSpinner;
// Navigation adapter
private SpinnerMenuAdapter adapter;
ArrayList <Jadwal> list_jadwal = new ArrayList<Jadwal>();
TextView tvhari;
ListView listviewjadwal ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tvhari = (TextView) findViewById(R.id.textViewHari);
listviewjadwal = (ListView) findViewById(R.id.listViewJadwal);
initData();
actionBar = getActionBar();
// Hide the action bar title
actionBar.setDisplayShowTitleEnabled(false);
// Enabling Spinner dropdown navigation
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
// Spinner title navigation data
navSpinner = new ArrayList<SpinnerNavItem>();
navSpinner.add(new SpinnerNavItem("Senin", R.drawable.ic_launcher));
navSpinner.add(new SpinnerNavItem("Selasa", R.drawable.ic_launcher));
navSpinner.add(new SpinnerNavItem("Rabu", R.drawable.ic_launcher));
navSpinner.add(new SpinnerNavItem("Kamis", R.drawable.ic_launcher));
navSpinner.add(new SpinnerNavItem("Jumat", R.drawable.ic_launcher));
// title drop down adapter
adapter = new SpinnerMenuAdapter(getApplicationContext(), navSpinner);

// assigning the spinner navigation


actionBar.setListNavigationCallbacks(adapter, this);
}
public void initData() {
list_jadwal.add(new Jadwal("Senin","08:00-10:00","Matematika"));
list_jadwal.add(new Jadwal("Senin","10:00-12:00","Agama Islam"));
list_jadwal.add(new Jadwal("Senin","12:00-13:00","Istirahat"));
list_jadwal.add(new Jadwal("Senin","13:00-15:00","Fisika"));
list_jadwal.add(new Jadwal("Selasa","08:00-10:00","Bahasa Indonesia"));
list_jadwal.add(new Jadwal("Selasa","10:00-12:00","Kimia"));
list_jadwal.add(new Jadwal("Selasa","12:00-13:00","Istirahat"));
list_jadwal.add(new Jadwal("Selasa","13:00-15:00","Biologi"));
list_jadwal.add(new Jadwal("Rabu","08:00-10:00","Matematika"));
list_jadwal.add(new Jadwal("Rabu","10:00-12:00","Seni Rupa"));
list_jadwal.add(new Jadwal("Rabu","12:00-13:00","Istirahat"));
list_jadwal.add(new Jadwal("Rabu","13:00-15:00","Bahasa Inggris"));
list_jadwal.add(new Jadwal("Kamis","08:00-10:00","Fisika"));
list_jadwal.add(new Jadwal("Kamis","10:00-12:00","Penjaskes"));
list_jadwal.add(new Jadwal("Kamis","12:00-13:00","Istirahat"));
list_jadwal.add(new Jadwal("Kamis","13:00-15:00","Geografi"));
list_jadwal.add(new Jadwal("Jumat","08:00-10:00","Pemrograman Java"));
list_jadwal.add(new Jadwal("Jumat","10:00-12:00","Pemrograman
Android"));
list_jadwal.add(new Jadwal("Jumat","12:00-13:00","Istirahat"));
list_jadwal.add(new Jadwal("Jumat","13:00-15:00","Logika Algoritma"));
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
return true;
}
/**
* On selecting action bar icons
* */
@Override
public boolean onOptionsItemSelected(MenuItem item) {
return true;
}
/**
* Actionbar navigation item select listener
* */
@Override
public boolean onNavigationItemSelected(int itemPosition, long itemId) {
// Action to be taken after selecting a spinner item

Toast.makeText(getBaseContext(), "menu:"+navSpinner.get(itemPosition).getTitle(),
Toast.LENGTH_SHORT).show();
showJadwal(navSpinner.get(itemPosition).getTitle());
return false;
}
public void showJadwal(String hari) {
tvhari.setText("Hari " + hari);
ArrayList<Jadwal> jadwal_terpilih = new ArrayList<Jadwal>();
for (int i = 0; i < list_jadwal.size(); i++) {
Jadwal jadwal = list_jadwal.get(i);
if (jadwal.hari.equals(hari)) {
jadwal_terpilih.add(jadwal);
}
}
AdapterJadwal adapterjadwal = new
AdapterJadwal(SpinnerNavigationActivity.this, 0,
jadwal_terpilih);
listviewjadwal.setAdapter(adapterjadwal);
}
}
6. Rubah AndroidManifest.xml untuk Activity yang pertama kali di eksekusi dari
MainActivity ke SpinnerNavigationActivity.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.agusharyanto.jadwalpelajaran"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="11"
android:targetSdkVersion="18" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="<strong>com.agusharyanto.jadwalpelajaran.SpinnerNavigationActivity</stro
ng>"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />


</intent-filter>
</activity>
</application>
</manifest>
7. Sekarang mari kita Run projectnya.
Klik Spinner Navigation di pojok kiri atas

Pilih Hari Jumat

Bagaimana, mudahkan buatnya, Action Bar di android memang mantap. Tambah lagi senjata
kita untuk navigasi menu.

Belajar Android Action Bar Studi Kasus


Aplikasi Jadwal Pelajaran
Android Action Bar adalah Salah satu navigasi andalan yang dipakai oleh para developer
adalah pemanfaatan action bar. Sebetulnya apa sih action bar itu kalau dari kata-katanya sih
aratinya bar yang digunakan untuk mentrigger suatu aksi. Nah barnya ini bisa seperti menu
bar, tool bar, sliding bar (navigation drawer), tab bar, apa lagi yah, coba cari di
devleoper.android.com dan androidhive.info
Untuk lebih jelasnya ini ada gambar bisa dilihat di http://androidhive.info
Pada kesempatan kali ini kita akan coba gunakan action bar sebagai action buttons dan
overflow
menu
untuk
membuat
aplikasi
jadwal
pelajaran
Bagusnya sih kalau buat aplikasi kita buat dulu design user interfacenya. Kalau untu kebutuhan
ini berarti di action barnya ada menu untuk menampilkan jadwal (Senin, Selasa, Rabu, Kamis,
Jumat, Semua).

Setelah klik Next samapi Finish maka project baru akan tergenerate.

2. Sekarang kita siapkan menu untuk aplikasi ini, masuk directory res/menu lalu edit
main.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/action_senin"
android:orderInCategory="100"
android:showAsAction="never"
android:title="Senin"/>
<item
android:id="@+id/action_selasa"
android:orderInCategory="100"
android:showAsAction="never"
android:title="Selasa"/>
<item
android:id="@+id/action_rabu"
android:orderInCategory="100"
android:showAsAction="never"
android:title="Rabu"/>
<item
android:id="@+id/action_kamis"
android:orderInCategory="100"
android:showAsAction="never"
android:title="Kamis"/>
<item
android:id="@+id/action_jumat"
android:orderInCategory="100"
android:showAsAction="never"
android:title="Jumat"/>
</menu>

3. Sekarang kita urus layout user interfacenya, edit file res/layout activity_main.xml
<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:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<TextView
android:id="@+id/textViewHari"
android:layout_width="wrap_content"

android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:text=""
android:textAppearance="?android:attr/textAppearanceMedium" />
<ListView
android:id="@+id/listViewJadwal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textViewHari"
android:layout_below="@+id/textViewHari" >
</ListView>
</RelativeLayout>
4. Untuk layout baris pada list view pada directory res/layout buat file layout baru dengan
nama row_jadwal.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:id="@+id/textViewRowJam"
android:layout_width="75dp"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:text="TextView" />
<TextView
android:id="@+id/textViewRowPelajaran"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:paddingLeft="10dp"
android:layout_toRightOf="@+id/textViewRowJam"
android:text="TextView" />
</RelativeLayout>
5. Buat class baru dengan nama Jadwal.java lalu ketikkan kode berkut
package com.agusharyanto.jadwalpelajaran;
public class Jadwal {
public String hari="";
public String jam="";

public String pelajaran="";


public Jadwal (String pday, String ptime, String plesson){
this.hari = pday;
this.jam = ptime;
this.pelajaran = plesson;
}
}
6. Buat Class baru dengan nama AdapterJadwal.java lalu ketikan kode berikut
package com.agusharyanto.jadwalpelajaran;
import java.util.ArrayList;
import android.app.Activity;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;
public class AdapterJadwal extends ArrayAdapter<Jadwal> {
private Activity activity;
private ArrayList<Jadwal> lJadwal;
private static LayoutInflater inflater = null;
public AdapterJadwal (Activity activity, int textViewResourceId,ArrayList<Jadwal>
al_Jadwal) {
super(activity, textViewResourceId, al_Jadwal);
try {
this.activity = activity;
this.lJadwal = al_Jadwal;
inflater = (LayoutInflater)
activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
} catch (Exception e) {
}
}
public int getCount() {
return lJadwal.size();
}
public long getItemId(int position) {
return position;

}
public static class ViewHolder {
public TextView jam;
public TextView pelajaran;
}
public View getView(int position, View convertView, ViewGroup parent) {
View vi = convertView;
final ViewHolder holder;
try {
if (convertView == null) {
vi = inflater.inflate(R.layout.row_jadwal, null);
holder = new ViewHolder();
holder.jam = (TextView) vi.findViewById(R.id.textViewRowJam);
holder.pelajaran = (TextView) vi.findViewById(R.id.textViewRowPelajaran);
vi.setTag(holder);
} else {
holder = (ViewHolder) vi.getTag();
}
holder.jam.setText(lJadwal.get(position).jam);
holder.pelajaran.setText(lJadwal.get(position).pelajaran);
} catch (Exception e) {
}
return vi;
}
}
7. Edit MainActivity.java lalu ketikkan kode berikut
package com.agusharyanto.jadwalpelajaran;
import java.util.ArrayList;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ListView;
import android.widget.TextView;
public class MainActivity extends Activity {
ArrayList <Jadwal> list_jadwal = new ArrayList<Jadwal>();
TextView tvhari;

ListView listviewjadwal ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tvhari = (TextView) findViewById(R.id.textViewHari);
listviewjadwal = (ListView) findViewById(R.id.listViewJadwal);
initData();
}
public void initData() {
list_jadwal.add(new Jadwal("Senin","08:00-10:00","Matematika"));
list_jadwal.add(new Jadwal("Senin","10:00-12:00","Agama Islam"));
list_jadwal.add(new Jadwal("Senin","12:00-13:00","Istirahat"));
list_jadwal.add(new Jadwal("Senin","13:00-15:00","Fisika"));
list_jadwal.add(new Jadwal("Selasa","08:00-10:00","Bahaa Indonesia"));
list_jadwal.add(new Jadwal("Selasa","10:00-12:00","Kimia"));
list_jadwal.add(new Jadwal("Selasa","12:00-13:00","Istirahat"));
list_jadwal.add(new Jadwal("Selasa","13:00-15:00","Biologi"));
list_jadwal.add(new Jadwal("Rabu","08:00-10:00","Matematika"));
list_jadwal.add(new Jadwal("Rabu","10:00-12:00","Seni Rupa"));
list_jadwal.add(new Jadwal("Rabu","12:00-13:00","Istirahat"));
list_jadwal.add(new Jadwal("Rabu","13:00-15:00","Bahasa Inggris"));
list_jadwal.add(new Jadwal("Kamis","08:00-10:00","Fisika"));
list_jadwal.add(new Jadwal("Kamis","10:00-12:00","Penjaskes"));
list_jadwal.add(new Jadwal("Kamis","12:00-13:00","Istirahat"));
list_jadwal.add(new Jadwal("Kamis","13:00-15:00","Geografi"));
list_jadwal.add(new Jadwal("Jumat","08:00-10:00","Pemrograman Java"));
list_jadwal.add(new Jadwal("Jumat","10:00-12:00","Pemrograman
Android"));
list_jadwal.add(new Jadwal("Jumat","12:00-13:00","Istirahat"));
list_jadwal.add(new Jadwal("Jumat","13:00-15:00","Logika Algoritma"));
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return super.onCreateOptionsMenu(menu);
}
/**
* On selecting action bar
* */
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Take appropriate action for each action item click
switch (item.getItemId()) {
case R.id.action_senin:
showJadwal("Senin");

return true;
case R.id.action_selasa:
// location found
showJadwal("Selasa");
return true;
case R.id.action_rabu:
showJadwal("Rabu");
return true;
case R.id.action_kamis:
showJadwal("Kamis");
return true;
case R.id.action_jumat:
showJadwal("Jumat");
return true;
default:
return super.onOptionsItemSelected(item);
}
}
public void showJadwal(String hari) {
tvhari.setText("Hari " + hari);
ArrayList<Jadwal> jadwal_terpilih = new ArrayList<Jadwal>();
for (int i = 0; i < list_jadwal.size(); i++) {
Jadwal jadwal = list_jadwal.get(i);
if (jadwal.hari.equals(hari)) {
jadwal_terpilih.add(jadwal);
}
}
AdapterJadwal adapterjadwal = new AdapterJadwal(MainActivity.this, 0,
jadwal_terpilih);
listviewjadwal.setAdapter(adapterjadwal);
}
}

9.

Saatnya Run Projectnya, klik pojok kanan untuk memunculkan menu

Pilih Senin

Untuk saat ini pada saat aplikasi dijalankan tampilannya kosong. harusnya kita bisa langsung
menampilkan jadwal hari ini. Nah silahkan mencoba menyelesiakannya

Belajar Android Bermain dengan Radio


Group dan Radio Button
Dalam kehidupan sehari-hari kita banyak bergaul dengan namanya pilihan. Misalkan yang
masih hangat yaitu kita harus memilih presiden. Atau kita pernah mengerjakan soal pilihan
ganda dimana kita harus memilih salah satu jawaban. Kita juga pernag nonton kuis yang
legendaris yaitu One tobe Milionare bahkan mungkin ada yang coba buat aplikasinya.
Salah satu fungsi IT adalah penghematan, Nah kalau pilpres kemarin kita coblos pakai paku
semoga dipemilu selanjutnya kita sudah pakai tablet. Bisa dibayangkan penghematan yang
terjadi, serta kecepatan hasil.
Pada Android kalau kita ingin membuat aplikasi yang ada pilihannya. Maka kita harus tahu
komponen apa yang dipakai. Salah satu yang bisa kita pakai adalah RadioGroup dimana
didalam radiogroup ini ada beberapa Radio Button. Pada kesempatan kali ini kita akan
mencoba mengenalkan pemakaian Radio Group dan Radio Button pada Android
1. Buat Project baru dengan nama LearnRadioGroup dan packagebya dengan nama
net.agusharyanto.learnradiogroup
2. Edit string.xml lalu ketikan kode berikut
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">LearnRadioGroup</string>

<string name="radio_merah">Merah</string>
<string name="radio_hijau">Hijau</string>
<string name="radio_biru">Biru</string>
<string name="radio_coklat">Coklat</string>
<string name="radio_ungu">Ungu</string>
<string name="jawab">Cek Jawaban</string>
<string name="pilihwarna">Pilih Warna ?</string>
</resources>
3. Edit activity_main.xml lalu ketikan kode berikut
<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"
tools:context="${packageName}.${activityClass}" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:text="@string/pilihwarna" />
<RadioGroup
android:id="@+id/radioGroupWarna"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/textView1" >
<RadioButton
android:id="@+id/radioMerah"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:text="@string/radio_merah" />
<RadioButton
android:id="@+id/radioBiru"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/radio_biru" />
<RadioButton
android:id="@+id/radioCoklat"
android:layout_width="wrap_content"
android:layout_height="wrap_content"

android:text="@string/radio_coklat" />
<RadioButton
android:id="@+id/radioHijau"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/radio_hijau" />
<RadioButton
android:id="@+id/radioUngu"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/radio_ungu" />
</RadioGroup>
<Button
android:id="@+id/buttonJawab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/radioGroupWarna"
android:text="@string/jawab" />
</RelativeLayout>
4. Edit MainActivity.java lalu ketikan kode berikut
package net.agusharyanto.learnradiogroup;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Toast;
public class MainActivity extends Activity {
private RadioGroup radioGroupWarna;
private RadioButton radioButtonWarna;
private Button btnJawab;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
radioGroupWarna = (RadioGroup) findViewById(R.id.radioGroupWarna);
btnJawab = (Button) findViewById(R.id.buttonJawab);
addListenerOnButtonJawab();

}
public void addListenerOnButtonJawab() {
btnJawab.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// get selected radio button from radioGroup
int selectedId = radioGroupWarna.getCheckedRadioButtonId();
// find the radiobutton by returned id
radioButtonWarna = (RadioButton) findViewById(selectedId);
Toast.makeText(getBaseContext(),
"Anda Memilih Warna " +
radioButtonWarna.getText(),
Toast.LENGTH_SHORT).show();
}
});
}
}

5. Sekarang mari kita coba jalankan, pilih saah satu warna lalu sentuh tombol Cek jawaban

Semoga bermanfaat

Belajar Android Membuat Button Lebih


Menarik dan Berwarna
Sudah fitrah manusia inginnya selalu melihat yang indah-indah dan cantik-cantik. Nah
demikian juga pengguna aplikasi, para pengguna cenderung setia dengan aplikasi yang
tampilannya (User Interface) Cantik dan Simple.
Pada tutorial kali ini kita akan pelajari tentang styling Button yang tujuannya agar Button
terlihat lebih cantik dan enak dilihat. Disini kita menambahkan efek warna gradient pada button
Sekarang Mari Kita mulai.
1. Buat Project dengan nama LearnGardientButton
net.agusharyanto.learngradientbutton

dengan

nama

2. Pada folder drawable-hdpi lalu buat file xml baru dengan buttonmerah.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" >
<shape>
<solid

package

android:color="#ef4444" />
<stroke
android:width="1dp"
android:color="#992f2f" />
<corners
android:radius="3dp" />
<padding
android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp" />
</shape>
</item>
<item>
<shape>
<gradient
android:startColor="#ef4444"
android:endColor="#992f2f"
android:angle="270" />
<stroke
android:width="1dp"
android:color="#992f2f" />
<corners
android:radius="3dp" />
<padding
android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp" />
</shape>
</item>
</selector>

3. Pada folder drawable-hdpi lalu buat file xml baru dengan buttonbiru.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" >
<shape>
<solid
android:color="#449def" />
<stroke
android:width="1dp"
android:color="#2f6699" />
<corners
android:radius="3dp" />
<padding
android:left="10dp"

android:top="10dp"
android:right="10dp"
android:bottom="10dp" />
</shape>
</item>
<item>
<shape>
<gradient
android:startColor="#449def"
android:endColor="#2f6699"
android:angle="270" />
<stroke
android:width="1dp"
android:color="#2f6699" />
<corners
android:radius="4dp" />
<padding
android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp" />
</shape>
</item>
</selector>

4. Pada folder drawable-hdpi lalu buat file xml baru dengan buttonungu.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" >
<shape>
<solid
android:color="#a276eb" />
<stroke
android:width="1dp"
android:color="#6a3ab2" />
<corners
android:radius="3dp" />
<padding
android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp" />
</shape>
</item>
<item>
<shape>
<gradient
android:startColor="#a276eb"

android:endColor="#6a3ab2"
android:angle="270" />
<stroke
android:width="1dp"
android:color="#6a3ab2" />
<corners
android:radius="4dp" />
<padding
android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp" />
</shape>
</item>
</selector>
5. Pada folder drawable-hdpi lalu buat file xml baru dengan buttonhijau.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" >
<shape>
<solid
android:color="#70c656" />
<stroke
android:width="1dp"
android:color="#53933f" />
<corners
android:radius="3dp" />
<padding
android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp" />
</shape>
</item>
<item>
<shape>
<gradient
android:startColor="#70c656"
android:endColor="#53933f"
android:angle="270" />
<stroke
android:width="1dp"
android:color="#53933f" />
<corners
android:radius="4dp" />
<padding
android:left="10dp"
android:top="10dp"

android:right="10dp"
android:bottom="10dp" />
</shape>
</item>
</selector>
6. Pada folder drawable-hdpi lalu buat file xml baru dengan buttonoranye.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" >
<shape>
<solid
android:color="#f3ae1b" />
<stroke
android:width="1dp"
android:color="#bb6008" />
<corners
android:radius="3dp" />
<padding
android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp" />
</shape>
</item>
<item>
<shape>
<gradient
android:startColor="#f3ae1b"
android:endColor="#bb6008"
android:angle="270" />
<stroke
android:width="1dp"
android:color="#bb6008" />
<corners
android:radius="4dp" />
<padding
android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp" />
</shape>
</item>
</selector>
7. Pada folder drawable-hdpi lalu buat file xml baru dengan buttonhitam.xml

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


<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" >
<shape>

<solid
android:color="#343434" />
<stroke
android:width="1dp"
android:color="#171717" />
<corners
android:radius="3dp" />
<padding
android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp" />
</shape>
</item>
<item>
<shape>
<gradient
android:startColor="#343434"
android:endColor="#171717"
android:angle="270" />
<stroke
android:width="1dp"
android:color="#171717" />
<corners
android:radius="4dp" />
<padding
android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp" />
</shape>
</item>
</selector>

8. pada folder values buat file xml baru dengan nama color.xml lalu ketikan kode berikut
<?xml version="1.0" encoding="utf-8"?>
<resources>
<item
<item
<item
<item
<item
<item

name="blue" type="color">#FF33B5E5</item>
name="purple" type="color">#FFAA66CC</item>
name="green" type="color">#FF99CC00</item>
name="orange" type="color">#FFFFBB33</item>
name="red" type="color">#FFFF4444</item>
name="black" type="color">#FF000000</item>

</resources>

9. pada folder values Edit File string.xml lalu ketikan kode berikut
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string
<string
<string
<string
<string
<string
<string

name="app_name">LearnGradientButton</string>
name="hello_world">Hello world!</string>
name="merah">Merah</string>
name="biru">Biru</string>
name="hijau">Hijau</string>
name="oranye">Orannye</string>
name="ungu">Ungu</string>

<string name="hitam">Hitam</string>
<style name="ButtonText">
<item name="android:layout_width">fill_parent</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:textColor">#ffffff</item>
<item name="android:gravity">center</item>
<item name="android:layout_margin">3dp</item>
<item name="android:textSize">30dp</item>
<item name="android:textStyle">bold</item>
<item name="android:shadowColor">#000000</item>
<item name="android:shadowDx">1</item>
<item name="android:shadowDy">1</item>
<item name="android:shadowRadius">2</item>
</style>
</resources>

10. Pada folder layout edit activity_main.xml lalu ketikan kode berikut
<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"
tools:context="${packageName}.${activityClass}" >
<ImageView
android:id="@+id/imageView1"
android:layout_width="match_parent"
android:layout_height="80dp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:src="@drawable/ic_launcher" />
<Button
android:id="@+id/buttonMerah"
style="@style/ButtonText"
android:layout_alignParentLeft="true"
android:layout_below="@+id/imageView1"
android:background="@drawable/buttonmerah"
android:text="@string/merah" />
<Button
android:id="@+id/buttonBiru"
style="@style/ButtonText"
android:layout_alignParentLeft="true"
android:layout_below="@+id/buttonMerah"
android:background="@drawable/buttonbiru"
android:text="@string/biru" />
<Button
android:id="@+id/buttonUngu"
style="@style/ButtonText"
android:layout_alignParentRight="true"
android:layout_below="@+id/buttonBiru"
android:background="@drawable/buttonungu"
android:text="@string/ungu" />
<Button
android:id="@+id/buttonHijau"

style="@style/ButtonText"
android:layout_alignParentRight="true"
android:layout_below="@+id/buttonUngu"
android:background="@drawable/buttonhijau"
android:text="@string/hijau" />
<Button
android:id="@+id/buttonOranye"
style="@style/ButtonText"
android:layout_alignParentRight="true"
android:layout_below="@+id/buttonHijau"
android:background="@drawable/buttonoranye"
android:text="@string/oranye" />
<Button
android:id="@+id/buttonHitam"
style="@style/ButtonText"
android:layout_alignParentRight="true"
android:layout_below="@+id/buttonOranye"
android:background="@drawable/buttonhitam"
android:text="@string/hitam" />
</RelativeLayout>

11. pada folder src edit MainActiviy.java lalu ketikan kode berikut
package net.agusharyanto.learngradientbutton;
import
import
import
import
import
import

android.app.Activity;
android.os.Bundle;
android.view.View;
android.view.View.OnClickListener;
android.widget.Button;
android.widget.ImageView;

public class MainActivity extends Activity implements OnClickListener {


Button btnMerah, btnBiru, btnUngu, btnHijau, btnOranye, btnHitam;
ImageView imageview;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnMerah = (Button) findViewById(R.id.buttonMerah);
btnMerah.setOnClickListener(this);
btnBiru = (Button) findViewById(R.id.buttonBiru);
btnBiru.setOnClickListener(this);
btnUngu = (Button) findViewById(R.id.buttonUngu);
btnUngu.setOnClickListener(this);
btnHijau = (Button) findViewById(R.id.buttonHijau);
btnHijau.setOnClickListener(this);
btnOranye = (Button) findViewById(R.id.buttonOranye);
btnOranye.setOnClickListener(this);
btnHitam = (Button) findViewById(R.id.buttonHitam);
btnHitam.setOnClickListener(this);
imageview = (ImageView) findViewById(R.id.imageView1);
}
@Override

public void onClick(View v) {


switch (v.getId()) {
case R.id.buttonMerah:
imageview.setBackgroundColor(getResources().getColor(R.color.red));
return;
case R.id.buttonBiru:
imageview.setBackgroundColor(getResources().getColor(R.color.blue));
return;
case R.id.buttonUngu:
imageview.setBackgroundColor(getResources().getColor(R.color.purple))
;
return;
case R.id.buttonHijau:
imageview.setBackgroundColor(getResources().getColor(R.color.green));
return;
case R.id.buttonOranye:
imageview.setBackgroundColor(getResources().getColor(R.color.orange))
;
return;
case R.id.buttonHitam:
imageview.setBackgroundColor(getResources().getColor(R.color.black));
return;
}
}
}

12. Mari Kita jalankan programya

Sentuh salah satu button maka backgroun gamabar android akan berubah

You might also like