299369920 Modul Pembelajaran Pemrograman Android

download 299369920 Modul Pembelajaran Pemrograman Android

of 58

Transcript of 299369920 Modul Pembelajaran Pemrograman Android

  • 8/17/2019 299369920 Modul Pembelajaran Pemrograman Android

    1/58

    Android Coding StandardSebagian orang berkata bahwa code is art, kode adalah seni. Karena itu programmer yang baikadalah layaknya seorang seniman, mereka harus mempunyai sense of art tersendiri. Dandiharapkan bisa menghasilkan barisan kode yang rapi, enak dibaca, namun  juga efektif danefisien.Seiring dengan semakin matangnya platform Android, aturan-aturan standardalampemrograman Android pun semakin diketatkan. Kami di Poltekpos Android Developerselalumendukung penulisan coding dengan standar yang sesuai, mengikuti konvensi-konvensipemrograman yang ada. Tulisan ini diharapkan mampu membantu developer untuk menulisprogram Android dengan konvensi maupun aturan yang sesuai dengan standar internasional.Sekaligus mengasah skill Android craftsmanship dan memperkenalkan state ofartpemrograman 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 kodekonvensi yang ada mengikuti aturan Code Conventions for the JavaTMProgrammingLanguage, yang dibuat pada tahun 1999. Silahkan dibaca, beberapa hal yang perludiperhatikanadalah 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 kataharus diawali dengan huruf kapital, seperti PersonProfile.java, DatabaseMapsHelp

    er.java dansebagainya,· Penulisan Nama Variabel, nama variabel ditulis dengan awalan huruf kecil,seperti color, apabila variabel terdiri dari dua kata atau lebih, maka kata kedua dan seterusnyadiawali dengan huruf kapital. Contohnya : innerColor, maximumPostRate, dan sebagainya.· Penulisan Nama Package, nama package untuk aplikasi Android yang dibuat oleh developeryang berasal dari Indonesia, hendaknya mengikuti aturan penamaan package untuk aplikasiAndroid buatan Indonesia. Dan hendaknya tidak menggunakan nama package

    defaultseperti, com.example.namaaplikasi, maupun com.app.namaaplikasi, dan sebagainya.· Penulisan Nama Konstanta, nama konstanta hendaknya ditulis dengan memakai huruf kapitalpada semua hurufnya, seperti COLOR. Apabila nama konstanta terdiri atas dua suku kata ataulebih, gunakan tanda ª_º (underscore) untuk memisahkan satu suku kata darisuku katalainnya, dan setiap hurufnya ditulis dengan menggunakan huruf kapital.Contohnya

  • 8/17/2019 299369920 Modul Pembelajaran Pemrograman Android

    2/58

    seperti MAXIMUM_POST_RATE.· Penulisan Nama Method, nama method diawali dengan lowercase letter atauhuruf kecilpada kata pertama. Contohnya, post() Apabila method tersebut terdiri dari dua kata ataulebih, 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 masihmenemukanprogrammer yang menggunakan nama variabel maupun konstanta yang tidak deskriptif.Sehingga kadang orang lain menjadi bingung ketika membaca kode buatanmereka. Hal inimembuat persepsi bahwa programmer yang menuliskan kode tersebut terkesan asal-asalandalam membuat kodingannya. Di bawah ini merupakan contoh penggunaan nama variabelyang 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 tidakdeskriptif. Hal ini bisa menyulitkan programmer lain maupun Anda sendiri, karenasetiap saat Anda lupa, Anda harus melihat pada bagian deklarasi untuk mengetahui apatipe dari variabel i, apa fungsi dari variable i tersebut dan banyak lagi. Ini adalah kodeyang 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 darivariabel tombolBack dan juga fungsinya. tombolBack adalah sebuah tombol yangberfungsi untuk mengembalikan user ke halaman sebelumnya (misalnya). Demi

    kianpula dengan EditText yang sudah terdefinisikan dengan jelas bahwa itu adalah EditTextdimana user bisa menginputkan username mereka. Jika Anda malas menulis,makaAnda bisa menyingkat beberapa kata dengan singkatan yang mudah dihafal. Contohnyadua variabel tersebut akan menjadi : tbBack, btnBack, edtUsername, edtUser, dansebagainya.

  • 8/17/2019 299369920 Modul Pembelajaran Pemrograman Android

    3/58

    Android Coding StandardSekarang kita akan membahas Android secara khusus. Dalam konvensi maupun aturanpenulisan kode Android, penulisan resource sangatlah penting dan perlu diperhatikan. Karenaaplikasi Android mempunyai berbagai macam resource, seperti Button, Layout, Text, EditText,Label, dan sebagainya yang aktif digunakan dan dipanggil ke dalam aplikasi utama. SDKAndroid terbaru memberikan aturan yang lebih ketat terkait dengan aturan penamaan danpenggunaan resource ini, tidak jarang Eclipse akan memberikan warning apabila Anda tidakmengikuti aturan yang berlaku, namun percayalah. Aturan ini semata mata  dibuat untukmemudahkan Anda untuk mengelola resource yang ada di aplikasi yang Anda buat.No Hard Coded String, di antara banyaknya aturan. Aturan inilah yangpaling seringdilanggar. Hard coded String, atau String yang ditulis secara ªkasarº merupakan bomwaktu yang akan menyulitkan Anda seiring dengan bertambah kompleksnya resource yangdipakai pada aplikasi.Hard coded String banyak dipakai pada saat kita memberi label pada sebuah tombol

    , memberijudul aplikasi, memberi hint pada EditText dan sebagainya. Di bawah ini  adalah contohresource tombol yang menggunakan hard coded String :

    Bayangkan ketika Anda mempunyai banyak resource tombol pada aplikasi, dan karena suatusebab Anda diharuskan mengganti semua nama yang ada pada tombol-tombol

    tersebut.Bayangkan betapa repotnya mengganti nama satu persatu! Karena itu aturan standarmenyarankan untuk menyimpan semua string/text reources pada file string.xml yang terdapatpada direktori res/values. Sehingga semua string/text pada aplikasi kalian  tersimpan di satutempat, dan kalian hanya perlu memanggilnya apabila dibutuhkan. Hal ini juga memudahkanapabila kalian ingin mengganti label pada tombol, hints, nama aplikasi,  dan sebagainya.Berikut ini adalah contoh resource tombol yang sudah mengikuti aturan standar :

    Submit

  • 8/17/2019 299369920 Modul Pembelajaran Pemrograman Android

    4/58

    Aturan Standar Penulisan ID Resources, seiring dengan banyaknya resource yang dipakaioleh aplikasi Android kalian. Kalian mungkin akan merasa bingung, tombol mana yangberfungsi untuk tombol submit, label mana yang dipakai untuk tombol Y,dan string manayang dipakai sebagai header judul pada layout X dan sebagainya. Karena  itu, aturan ataukonvensi penamaan ID berikut ini akan membantu apabila dipatuhi.Yang pertama adalah bagaimana memberikan ID pada suatu resource di Android. Entah itutombol, label, EditText, Layout, List, Spinner dan sebagainya. Pemberian  ID pada suaturesource terjadi pada baris berikut pada resource yang bersangkutan :android:id="@+id/nama_id"Tentunya apabila kalian katakanlah memberikan ID secara sembarangan, seperti ªsubmitº padasuatu resource, nantinya kalian akan merasakan hal seperti di atas. Yaitu bingung menentukanresource mana yang akan dipakai. Penulisan yang benar adalah menggunakan format [tiperesource]_[fungsi resource]. Sehingga ketika kalian mempunyai EditText yang berfungsi untukmenginputkan username, cara pemberian ID berikut ini adalah tidak disarankan :

    Kenapa? Karena apabila kalian ingin memanggil EditText tersebut via ID,  kalian harusmemanggil melalui, R.id.username. Bayangkan jika kalian mempunyai label,button atauresource lainnya yang mempunyai ID sama yaitu, username.Cara berikut ini adalah yang disarankan, sehingga kalian bisa memastikan bahwa resource yangdipanggil adalah benar-benar resource EditText, bukan tombol, label, atau lainny

    a:

    Aturan Penulisan String Resources, seiring dengan besarnya aplikasi yangkalian buat.String atau text yang ada pada string.xml akan semakin banyak. Agar bisa memilih mana stringyang akan dipanggil atau digunakan, gunakan aturan penamaan berikut [tipe resource yangakan menggunakan string ini]_[nama/fungsi resource tersebut]_text.

    Sebagai contohnya adalah kode berikut :

    MainActivityNama BarangHarga BarangMerk BarangSubmitTambah DataLihat DataData Barang

  • 8/17/2019 299369920 Modul Pembelajaran Pemrograman Android

    5/58

    Submit BarangDeskripsi :

    Jika kita lihat, tambahan _text pada akhir resource adalah opsional apabila kita sudah tahubahwa resource yang akan dipanggil memang bertipe string, seperti title,  deskripsi dansebagainya. Namun apabila kalian akan menggunakan string untuk label suatu tombol, atauhint, maka penambahan _text disarankan.Dan jika dilihat lagi, aturan ini adalah fleksibel dan bisa dikembangkan sesuai dengankebutuhan dan kreativitas kalian, selama penamaan tersebut deskriptif, mendefinisikan denganjelas dan tidak ambigu.Selalu Sediakan Hint Pada EditText, hint atau petunjuk, merupakan hal yang penting untukmemberitahu pengguna apa yang harus mereka tuliskan pada EditText. Pendekatan lama biasamenggunakan Label dengan EditText dibawahnya, seperti di bawah ini. Namun pendekatantersebut dirasa kurang efisien dari segi tempat dan completely outdated.Android Label + EditTextDengan menggunakan android:hint penulisan akan menjadi lebih efisien dan

    tidak buang-buang waktu. Seperti contoh di bawah ini :EditText with HintCara penambahan hint pada EditText adalah sebagai berikut, Android SDK terbaru juga akansecara otomatis memberikan warning apabila kalian tidak menambahkan hint pada EditText.

    Selalu Definisikan Default InputType pada EditText, keyboard Android terdiri daribeberapa macam inputan, demikian juga text format pada Android. Karenaitu,pendefinisian android:inputType adalah sangat disarankan. InputType membuatkeyboardsecara otomatis menyesuaikan formatnya, sesuai dengan inputan yang diinginkan oleh aplikasi.Hal ini mencegah eror, sekaligus membatasi format text yang bisa diinputkan oleh user. Jangansampai 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 untukmemasukkan harga, maka keyboard yang dipakai adalah keyboard numerik. Dan bukankeyboard qwerty yang memiliki huruf-huruf.

  • 8/17/2019 299369920 Modul Pembelajaran Pemrograman Android

    6/58

    android:inputType="number"android:hint="@string/hint_harga_text" >

    Gunakan ContentDescription pada Image, atau resources lainnya yang sekiranyamembutuhkan atribut tersebut. android:contentDescription berisi deskripsi singkat tentangsebuah gambar. ContentDescription bisa juga berisi penjelasan singkat konten dari sebuahView. Karena bertipe text/string, pastikan kalian tidak menuliskannya secara hardcoded melainkan seperti biasa definisikan terlebih dahulu pada String resource.Kurang lebih ini yang bisa saya share, sebenarnya masih banyak lagi.Saya akanmenambahkannya apabila sempat. Aturan-aturan maupun konvensi-konvensi yang ada di sinitidak mutlak harus diikuti, melainkan hal ini sebagai saran untuk meningkatkan standar kaliansebagai programmer. Sekaligus menghasilkan kode yang efisien, bagus, dan enak dibaca. Codeis Art.Mengenal Lebih Dekat dengan AndroidStudio

    Mengenal Lebih Dekat dengan Android Studio. Artikel ini lanjutan dari artikel MembuatProject Android di Android Studio. Bagi yang sudah terbiasa menggunakan eclipsemungkinmengalami kesulitan dalam menggunakan android studio. Dalam tutorial ini,  kami akanberikan panduan migrasi dari IDE eclipse ke Android Studio.1. LayoutSama seperti eclipse, layout di android dibedakan menjadi 2, yaitu design dan text, secaradefault pada saat dibuka layout xml di android studio menggunakan mode design, tapi Kamubisa 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 designhanya untuk melihat hasil kode XML nya.2. Struktur FolderStruktur folder pada Android Studio seperti berikut.Terdapat folder .idea, app, gradle dan file ± file yang ada diroot folder. Folder app/ adalahfolder utama pada aplikasi android, didalamnya akan seperti ini.Pada folder build sepertti gen/ di eclipse, isinya file-file hasil generate dari IDE, jadi tidak perludiubah-ubah isi folder tersebut. Kemudian folder libs/ sama seperti dieclipse. Jika Kamumenggunakan library dalam bentuk .jar maka tempatkan difolder libs. Selanjutnya

    folder src/.src adalah folder dimana tersimpan source java dan layout dalam bentuk XML, secara defaultandroid studio akan mengenerate dua folder yaitu, androidtest dan main.  Folder androidtestadalah folder khusus UnitTest, jika kamu belum paham, fokus saja padafolder main,karenasource dan resource terletak difolder tersebut.3. GradleYang baru di Android Studio adalah gradle, sebuah featured build automation. Sel

  • 8/17/2019 299369920 Modul Pembelajaran Pemrograman Android

    7/58

    engkapnyadapat lihat di situs berikut ini http://www.gradle.org/. File Gradle berisi library yangdigunakan, versi aplikasi, signed key properties,lokasi repository dll. File yang akan sering kitaubah 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 yangdigunakan, nama paket aplikasi, minSDK yang digunakan, versioncode, versionname dandependencies yang digunakan.Membuat Project Android di AndroidStudioMembuat Project Android di Android Studio. apa itu android Studio?, Android Studioadalah sebuah IDE untuk Android Development diperkenalkan google pada acara I/O 2013.Apa yang membedakan antara Android Studio dengan Eclipse ?, Android Studio menggunakanGradle untuk memanajemen project. Gradle Merupakan Build Automation Tool, untukmengenal lebih lanjut melalui situs berikut ini gradle.org, ini yang membedakan gradle dariAnt atau Maven yang memakai XML.

    Dalam Tutorial ini saya akan membahas cara membuat project aplikasi android sederhana dancara membuat Bluestack menjadi emulator di android studio.±Membuat Project Android Sederhana di Android Studio±Cara Menghubungkan Android Studio dengan BluestackMembuat Project Android Sederhana di Android Studio1. Download Android studioUntuk mendownload android studio versi terbaru, saya saran kan mendownload di link berikutini. http://developer.android.com/2. Create ProjectInilah 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 buildtarget sedangkan di android studio hanya menentukan minimum SDK.Selain itu di android studio membuat apps dapat juga di build untukAndroid TV, wear danglass.Pada saat pemilihan Add an activity to mobile, pilih blank activity.Setelah itu pada choose optional for your new file, klik Finish3. Tampilan AwalInilah tampilan awal setelah setting properties project tadi. Aplikasiandroid ini akan

    menampilkan Hello World.Mengenal Activity pada Aplikasi AndroidMengenal Activity pada Aplikasi Android. Activity merepresentasi satu layar dengan userinterface. contoh, Sebuah aplikasi email memiliki activity yang menunjukkan daftar emailbaru, dan activity lainya seperti menulis email dan membaca email.Jika kita sudah mempelajari bahasa pemrograman c, c++, dan java pasti kita melihat programdimulai dengan function main(). Hal ini sangat mirip, pada aplikasi android, pro

  • 8/17/2019 299369920 Modul Pembelajaran Pemrograman Android

    8/58

    gram dimulaidengan method callback onCreate(). Urutan method callback dari mulai activiy sampaiberakhirnya activity dapat dilihat pada diagram activity lifecycleActivity Lifecycle (sumber gambar : developer.android.com)Method callback mendefinisikan suatu event, Kita tidak perlu mengimplementasi semuamethod callback. Namun, Anda penting memahami masing-masing method Callback, sehinggaaplikasi kita berprilaku sesuai harapan pengguna.Method DescriptiononCreate() Method ini pertama kali dipanggil ketika activity pertama dimulai.onStart() Method ini dipanggil ketika activity sudah terlihat pada user.onResume() Method ini dipanggil ketika activity mulai berinteraksi dengan user.onPause()Method ini Dipanggil ketika activity berhenti sementara tidak menerimainputan user dan tidak mengeksekusi kode apapun.onStop() Method ini dipanggil ketika activity sudah tidak terlihat pada user.onDestroy() Method ini dipanggil sebelum sebuah activity di matikan.onRestart()Method ini dipanggil setelah activity berhenti dan ditampilkan ulang olehuser.Contoh Penggunaan Activity pada Aplikasi Android

    Pada tutorial ini, kita akan mempelajari siklus activity pada aplikasiandroid. Ikuti langkahberikut 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 artikelini Membuat Project Android di Android Studio2. Modifikasi file MainActivity.java seperti dijelaskan dibawah ini.Berikut isi file MainActivity.java, dalam file ini terdapat method-method callback yangmenjelaskan 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.*/@Overrideprotected 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. */@Overrideprotected void onStart(){super.onStart();Log.d( status,"The onStart() event");}/**Method ini dipanggil ketika activity mulai berinteraksi dengan user.*/@Overrideprotected void onResume(){

  • 8/17/2019 299369920 Modul Pembelajaran Pemrograman Android

    9/58

    super.onResume();Log.d(status, "The onResume() event");}/**Method ini Dipanggil ketika activity berhenti sementara tidak menerimainputan user dan tidak mengeksekusi kode apapun.*/@Overrideprotected void onPause(){super.onPause();Log.d(status,"The onPause() event ");}/**Method ini dipanggil ketika activity sudah tidak terlihat pada user.*/@Overrideprotected void onStop(){super.onStop();Log.d(status,"The onStop() event");}/**Method ini dipanggil sebelum sebuah activity dimatikan (di destroy).*/@Overrideprotected void onDestroy(){super.onDestroy();Log.d(status,"The onDestroy() event");}}Sekarang kita coba menjalankan Aplikasi untuk melihat siklus hidup atau

      lifecycle, dalamtutorial ini saya menggunakan emulator nexus bawaan dari android studio.Jika aplikasi kita sudah berjalan di emulator, Kita dapat melihat pesan log dari LogCat diandroid studioMari kita Coba klik tombol home pada emulatormaka LogCat akan menghasilkan pesan log seperti berikut:05-09 13:39:12.608 5751-5751/com.teknorial.lifecycle D/Android  TheonPause() event05-09 13:39:12.643 5751-5751/com.teknorial.lifecycle D/Android  TheonStop() eventJika kita kembali membuka aplikasi kita, maka LogCat akan menghasilkan pesan log

     sepertiberikut:05-09 13:43:22.174 5751-5751/com.teknorial.lifecycle D/Android  TheonStart() event05-09 13:43:22.174 5751-5751/com.teknorial.lifecycle D/Android  TheonResume() eventSelanjutnya, Kita coba kembali tekan tombol back,maka LogCat akan menghasilkan pesan log seperti berikut:05-09 13:44:23.041 5751-5751/com.teknorial.lifecycle D/Android  TheonPause() event05-09 13:44:28.520 5751-5751/com.teknorial.lifecycle D/Android  TheonStop() event05-09 13:44:28.520 5751-5751/com.teknorial.lifecycle D/Android  The

    onDestroy() eventMengenal Fragment Pada Aplikasi AndroidMengenal Fragment Pada Aplikasi Android. Fragment merupakan bagian dariUI dalamactivity. Kamu dapat menggabungkan beberapa fragment dalam activity untuk membuat multi-pane UI. Ada beberapa hal yang kamu perlu tahu tentang fragment yaitu, fragmentmemilikisiklus hidup (lifecycle) sendiri, dapat proses event sendiri, dan dapatditambah atau dihapus

  • 8/17/2019 299369920 Modul Pembelajaran Pemrograman Android

    10/58

    ketika activity sedang jalan. Fragment diperkenalkan pada HoneyComb API11 namun bisadigunakan pada perangkat android lama dengan menggunakan Support Library dari 1.6 sampai2.0. Contoh fragment seperti di gambar berikut.Ketika salah satu item dari listview disentuh oleh user maka akan mencul informasi atau itemdari detail view. Untuk lebih memahami, Saya akan berikan screenshot dalam aplikasi androidyang sebenarnya.Contoh Kasus screenshot diatas adalah apps contact. Pada UI smartphone maka user pertamakali 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 satuactivity dan optimal digunakan pada layar lebih besar seperti tablet.Siklus Hidup (LifeCycle) Pada FragmentPrerequisites:Mengenal Activity pada Aplikasi AndroidClass fragment memiliki kode yang terlihat hampir seperti Activity. Fragment be

    risi methodcallback mirip dengan Activity, seperti onCreate (), onStart (), onPause (), dan OnStop ().Siklus hidup dari fragment berhubungan dengan siklus hidup Activity, berikut tahapan siklushidup 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 denganmenggunakan 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 fragmenttelah 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 dengantampilan (UI), tapi pada Oncreate() di fragment seharusnya kita tidak mengakseselement UIdari fragment karena Activity Oncreate() mungkin belum selesai, namun, kita bisa membuatbackgroud thread untuk membuat operasi lebih lama.

    5. Method OnCreateView() dipanggil dalam fragment, disinilah kita dapat menautkanlayout fragment dengan objeknya.6. onActivityCreated() dipanggil setelah method activity onCreate() selesai. jadi disinikita dapat mengakses element UI melalui method ini.7. onStart() dipanggil di dalam activity8. onStart() dipanggil di dalam fragment9. onResume() dipanggil di dalam activity10. onResume() dipanggil di dalam fragment

  • 8/17/2019 299369920 Modul Pembelajaran Pemrograman Android

    11/58

    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 activit3. onSaveInstanceState () digunakan untuk menyimpan informasi fragment dalam objekBundle.4. onSaveInstanceState () digunakan untuk menyimpan informasi activity dalam objekBundle.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 melekatpada 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 AndroidPada tutorial ini, kita akan mempelajari lifecycle fragment pada aplikasi androi

    d. Ikuti langkahberikut ini.1. Buat project baru, pada tutorial ini saya menggunakan nama packagecom.teknorial.fragmentlifecycle.2. Modifikasi file MainActivity.java seperti dijelaskan dibawah ini.package com.teknorial.fragmentlifecycle;import android.support.v7.app.ActionBarActivity;import android.os.Bundle;import android.view.Menu;public class MainActivity extends ActionBarActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it ispresent.getMenuInflater().inflate(R.menu.menu_main, menu);return true;}}3. Buat Java class baru dengan nama fragmentkita.java pada direktoriapp/java/com.teknorial.fragmentlifecycle.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 android.app.Activity;import android.os.Bundle;import android.support.v4.app.Fragment;import android.util.Log;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;

  • 8/17/2019 299369920 Modul Pembelajaran Pemrograman Android

    12/58

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

    }@Overridepublic void onStart() {Log.i("Fragment","onStart");super.onStart();}@Overridepublic void onResume() {Log.i("Fragment","onResume");super.onResume();}@Overridepublic void onPause() {

    Log.i("Fragment","onPause");super.onPause();}@Overridepublic void onSaveInstanceState(Bundle outState){Log.i("Fragment","onSaveInstanceState");super.onSaveInstanceState(outState);}@Overridepublic void onStop() {Log.i("Fragment","onStop");super.onStop();}

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

  • 8/17/2019 299369920 Modul Pembelajaran Pemrograman Android

    13/58

    @Overridepublic void onDetach() {Log.i("Fragment","onDetach");super.onDetach();}}4. Modifikasi file activity_main.xml seperti berikut.

    5. Buat file XML layout baru dengan nama fragment_layout.java pada direktoriapp/res/layout.

    Sekarang kita coba menjalankan Aplikasi untuk melihat siklus hidup atau

    lifecycle. Jikaaplikasi kita sudah berjalan di emulator, Kita dapat melihat pesan log dari LogCat di androidstudio.Demikian Artikel Mengenal Fragment pada Aplikasi Android. Ikuti terus teknorial.com untukmengetahui banyak hal tentang android. Jangan lupa untuk Like FanspageTeknorial diFacebook dan Google Plus untuk mendapatkan update terbaru dari teknorial.com. Jika adapertanyaan jangan ragu untuk bertanya dikotak komentar. Terima KasihMengenal Processes, Thread dan Service diAndroid

    Mengenal Processes, Thread dan Service di Android. Ketika satu Komponen  aplikasidijalankan dan aplikasi tidak memiliki komponen lain yang berjalan, sistem Android akanmemulai Linux process baru untuk aplikasi dengan single thread. Secaradefault, semuakomponen dari aplikasi yang sama berjalan dalam proses dan thread yang sama (disebut ªmainºthread).Komponen pada Aplikasi Android

  • 8/17/2019 299369920 Modul Pembelajaran Pemrograman Android

    14/58

    Secara default, semua komponen dari aplikasi yang sama berjalan dalam proses yang sama dansebagian besar aplikasi tidak harus mengubah ini. Namun, jika Anda perlu untuk mengontrolproses komponen tertentu, Anda dapat melakukannya di file manifest. Gunakan Atribut dariandroid:process Ð dan Ð untuk menentukanproses akan dijalankan. Komponen pada aplikasi berbeda dapat jalan dengan proses yang samadengan 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. Padakasus low memory, proses yang tidak digunakan oleh user akan di kill duluan.ProcessImportancelevels1. Proses dengan Lowest Importance akan dieliminasi duluan.2. Foreground Process [Highest Importance], suatu proses dianggap Foreground Process jikasalah satu kondisi berikut:· 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 sedangberjalan.· BroadcastReceiver mengeksekusi method onReceive().3. Visible Process [2nd Highest Importance], sebuah proses yang tidak memiliki komponenforeground, tapi masih dapat mempengaruhi apa yang user lihat di layar. Suatu prosesdianggap4. Visible Process jika salah satu dari kondisi berikut ini :· Activity dengan dipanggil method onPause().· Service terikat dengan activity yang visible.5. Service Process [3rd Highest Importance], suatu proses dianggap Servi

    ce Process jikakondisi seperti berikut:· User tidak langsung berinteraksi· Memiliki service yang berjalan seperti memutar musik and tidak seperti 2 katagori diatas.6. Background Process [2nd Lowest Importance]· User tidak berinteraksi sama sekali.· Jika activity baru dilihat oleh user maka proses tersebut akan di hancurkan terakhir.7. 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 yangtidak memilikiservice [gunakan threads untuk operasi suatu proses lebih lama]. Olehkarena itu,saat men-download gambar dari worker threads menggunakan service lebih baik daripada men-download tanpa service.Demikian artikel Mengenal Processes, Thread dan Service di Android. Ikuti terusteknorial.com untuk mengetahui banyak hal tentang pemrograman android. Jangan lu

  • 8/17/2019 299369920 Modul Pembelajaran Pemrograman Android

    15/58

    pa untukLike Fanspage Teknorial di Facebook dan Google Plus untuk mendapatkan update terbaru dariteknorial.com . Jika ada pertanyaan jangan ragu untuk bertanya dikotakkomentar. TerimaKasihReferensiProcesses and Threadshttp://developer.android.com/guide/components/processes-and-threads.htmlBelajar Android Studio Mengenal LayoutBagian 1Sebelumnya kita sudah belajar membuat aplikasi sederhana pada Android.Sekarang kitamelangkah ke aplikasi yang lebih menarik, yaitu aplikasi yang sudah menggunakanbeberapaobject view groups dan view.Pada Android layout memegang peranan penting terutama pada user interface. Dalam layoutbiasany didalamnya terdiri dari satu atau lebih objek view sehingga dapatlah disebut Layoutadalah View Group.Ada beberapa layout yang berlaku di android.Linear LayoutLinear Layout sesuai dengan namanya digunakan untuk menyusun view sacara linear

    verticalatau horizontal.Agar Lebih memahaminya mari kita buat satu project yang menggunakan linear layout, Kaliini projectnya kita buat dengan menggunakan Android Studio1. Buka Android Studio lalu buat New Project.Klik NextKlik Next sampai muncul jendela iniSetelah klik Finish maka secara otomatis project kita tercreate.2. Edit layout activity_main.xml lalu ketukan kode berikut

  • 8/17/2019 299369920 Modul Pembelajaran Pemrograman Android

    16/58

    android:text="Biru"android:gravity="center_horizontal"android:background="#0000aa"android:layout_width="wrap_content"android:layout_height="fill_parent"android:layout_weight="1"/>

    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 secaravertical.2. LinearLayout yang kedua berada didalam LinearLayout yang diluar,

    android:orientation diset horizontal , yang berarti setiap view ataulayout yang berada didalamnya akan disusun secara horizontal3. Linear Layout yang ketiga juga berada didalam LinearLayout yang diluar,android:orientation diset vertical yang berarti setiap view ataulayout yang berada didalamnya akan disusun secara verticalLinearLayout yang paling luar bisa disebut parent dari LinearLayout yang kedua dan ketiga.Disini kita juga mulai dikenalkan dengan beberapa tag baru yang masuk kedalam golonganview

  • 8/17/2019 299369920 Modul Pembelajaran Pemrograman Android

    17/58

    Tag FungsiTextView Untuk menampilkan Text dalam bentuk labelEditText Untuk Menampilkan Inputan TextButton Digunakan untuk menampilkan button atau tombol.Diatas juga terlihat properti-properti (Kalau kita biasa dengan HTML ini bisa disebut Atributdan CSSnya) yang melekat pada masing-masing view.Property (Atribut) fungsiandroid:id Menetapkan id dari suatu viewandroid:text Menetapkan isi text yang akan ditampilkanProperty (CSS) fungsiandroid:textSize Menetapkan besar ukuran hurufandroid:layout_width Menetapkan lebar dari suatu viewandroid:layout_height Menetapkan tinggi dari suatu viewandroid:layout_weight Menunjukkan berapa banyak ruang ekstra dalamLinearLayout akan dialokasikan ke tampilan yang terkaitdengan LayoutParams.android:gravity Menentukan tempat object/view pada suatu layoutAgar lebih memahami fungsi dari property-property diatas cobalah baca javadoc android padasitus developer.andorid.com dan coba rubah nilainya.3. Buku File MainActivity.java, disini akan terlihat bahwa layout yang digunakan pada activityini adalah activity_main.xml

    package net.agusharyanto.belajarlayout;import android.app.Activity;import android.os.Bundle;public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}}4. Sekarang mari kita run projectnyaGimana mudah bukan, Nantikan lanjutan tentang belajar layout bagian 2Belajar Android Studio Mengenal Layout

    bagian 2 - Relative LayoutPada seri belajar android studio sebelumnya kita sudah belajar tentanglinear layout. nahsekarang kita akan coba belajar layout android lainnya yang juga sering  kita gunakan yaituRelative Layout. Mari kita mulai1. Masih dengan project yang tadi buat pada directory res/layout buat layout baru dengan namarelative_layout.xmlKlik Kanan folder layout lalu pilih New -> Layout Resource Fileakan muncul jendela new resource fileIsi File name dengan relative_layoutIsi Root element dengan RelativeLayout, Kemudian Klik OK

    Sacara otomatis akan membuat file relative_layput.xml difolder layout, Edit file tersebut laluketikkan kode berikut

  • 8/17/2019 299369920 Modul Pembelajaran Pemrograman Android

    18/58

    android:text="User Name"android:id="@+id/textView"android:layout_alignParentTop="true"android:layout_alignParentLeft="true"android:layout_alignParentStart="true" />

    Pada file relative_layout.xml diatas terdapat 2 buah TextView untuk label, 2 buah EditTextuntuk input dan 1 buah CommadButton untuk tombol Login2. Buka file MainActivity.java ganti activity_main.xml dengan relative_layout.xmlpackage 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 {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.relative_layout);}@Overridepublic 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);

  • 8/17/2019 299369920 Modul Pembelajaran Pemrograman Android

    19/58

    return true;}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {int id = item.getItemId();//noinspection SimplifiableIfStatementif (id == R.id.action_settings) {return true;}return super.onOptionsItemSelected(item);}}Sekarang mari kita run projectnyaHati-hati dalam penyusnan view pada RelativeLayout ini, karena letak view dipengaruhi olehview lainnya.Belajar Android ListView denganCheckBoxBelajar Android kali ini akan membahas tentang ListView dengan CheckBox. Kenapasihkita harus belajar ini. Dalam kehidupan manusia sering dihadapkan dengan pilihan adayangharus 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. Padasaat mengisis data diri untuk bahasa pemroraman yang dikuasai, disitu kita bisamemimilihlebih dari satu bahasa pemrograman.Nah ListView dengan CheckBox inilah yang bisa kita gunakan untuk memilih bahasapemrograman yang disukai.Sekarang mari kita coba membuat peroject yang menampilkan listview bahasa permrograman1. Buka Eclipse lalu buat project baru dengan nama LearnListViewCheckBoxKlik Next terus sampai finish bisa diklik.2. Edit activity_main.xml lalu ktikan kode berikut

  • 8/17/2019 299369920 Modul Pembelajaran Pemrograman Android

    20/58

    android:layout_alignParentLeft="true"android:layout_below="@+id/button1" >

    3. buat layout baru dengan nama bahasa_row.xml lalu ketikan kode berikut

    4. Buat clas baru dengan nama Bahasa.java lalu ketikkan kode berikutpackage 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

  • 8/17/2019 299369920 Modul Pembelajaran Pemrograman Android

    21/58

    package net.agusharyanto.learnlistviewcheckbox;import java.util.ArrayList;import android.app.Activity;import android.content.Context;import android.os.Bundle;import android.util.Log;import android.view.LayoutInflater;import android.view.View;import android.view.View.OnClickListener;import android.view.ViewGroup;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;import android.widget.ArrayAdapter;import android.widget.Button;import android.widget.CheckBox;import android.widget.ListView;import android.widget.TextView;import android.widget.Toast;public class MainActivity extends Activity {MyCustomAdapter dataAdapter = null;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);

    Button myButton = (Button) findViewById(R.id.button1);myButton.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {StringBuffer responseText = new StringBuffer();responseText.append("Bahsasa Pemrograman Yangdikuasai adalah");ArrayList 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 menginisialiasaidengan 7 data

    ArrayList bahasaList = new ArrayList();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", "Erlang", false);bahasaList.add(bahasa);bahasa = new Bahasa("5", "Phyton", true);

  • 8/17/2019 299369920 Modul Pembelajaran Pemrograman Android

    22/58

    bahasaList.add(bahasa);bahasa = new Bahasa("6", "Perl", false);bahasaList.add(bahasa);bahasa = new Bahasa("7", "Pascal", false);bahasaList.add(bahasa);// Buata array adapter dari data bahasaListdataAdapter = new MyCustomAdapter(this, R.layout.bahasa_row,bahasaList);ListView listView = (ListView) findViewById(R.id.listView1);// Assign adapter to ListViewlistView.setAdapter(dataAdapter);listView.setOnItemClickListener(new OnItemClickListener() {public void onItemClick(AdapterView parent, View view,int position, long id) {// When clicked, show a toast with the TextViewtextBahasa bahasa = (Bahasa)parent.getItemAtPosition(position);Toast.makeText(getApplicationContext(),"Clicked on Row: " + bahasa.getName(),Toast.LENGTH_SHORT).show();}});}

    private class MyCustomAdapter extends ArrayAdapter {private ArrayList bahasaList;public MyCustomAdapter(Context context, int textViewResourceId,ArrayList bahasaList) {super(context, textViewResourceId, bahasaList);this.bahasaList = new ArrayList();this.bahasaList.addAll(bahasaList);}private class ViewHolder {TextView id;CheckBox name;}@Override

    public View getView(int position, View convertView, ViewGroupparent) {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(newView.OnClickListener() {public void onClick(View v) {CheckBox cb = (CheckBox) v;Bahasa bahasa = (Bahasa) cb.getTag();Toast.makeText(getApplicationContext(),"Clicked on Checkbox: " +

  • 8/17/2019 299369920 Modul Pembelajaran Pemrograman Android

    23/58

    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 akanseperti iniKlik bahasa yang dikuasai lalu sentuh button Bahasa Pemrograman yang dikuasai maka akanmuncul Toast yang mengiformasikan bahasa-bahasa yang dipilih

    Tutorial Android Membuat Tab Swipe danView PagerMateri kita kali ini adalah Tutorial Android Membuat Tab Swipe dan View Pager. SekarangAplikasi-aplikasi android yang ada di Market sudah semakin bagus, contohnya untuk aplikasiyang menggunakan Tab, kalau dulu untuk berpindah Tab kita harus mengklik Tabnya,sekarang kita punya cara lain yaitu dengan menswipe kekanan atau kekiri. Salah saturahasianya ternyata aplikasi tersebutb memanfaatkan View Pager. Penasaran  ingin buataplikasi yang navigasi Tabnya bisa dengan Swipe. Mari kita mulai dan ikuti langk

    ah-langkahberikut.1. Buat Project dengan nama TSJadwalPelajaran2. Edit activity_main.xml lalu ketikkan kode berikut

    3. Buat Layout Baru dengan nama jadwalfragment_layout.xml lalu ketikkan kode berikut

  • 8/17/2019 299369920 Modul Pembelajaran Pemrograman Android

    24/58

    4. Buat layout baru dengan nama row_jadwal.xml lalu ketikkan kode berikut

    5. Buat Class baru dengan nama Jadwal.java lalu ketikkan kode berikutpackage net.agusharyanto.tsjadwalpelajaran;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 berikutpackage net.agusharyanto.tsjadwalpelajaran;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 {private Activity activity;private ArrayList lJadwal;private static LayoutInflater inflater = null;public AdapterJadwal (Activity activity, inttextViewResourceId,ArrayList 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();

  • 8/17/2019 299369920 Modul Pembelajaran Pemrograman Android

    25/58

    }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 berikutpackage net.agusharyanto.tsjadwalpelajaran;import java.util.ArrayList;import android.os.Bundle;import android.support.v4.app.Fragment;import android.util.Log;import android.view.LayoutInflater;

    import android.view.View;import android.view.ViewGroup;import android.widget.ListView;public class JadwalFragment extends Fragment {//TextView tvhari;ListView listviewJadwal ;ArrayList jadwal_terpilih = new ArrayList();@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroupcontainer,Bundle savedInstanceState) {// Retrieving the currently selected item numberint position =

    getArguments().getInt("position");//getArguments().getInt("position");String[] menus ={"Senin", "Selasa", "Rabu","Kamis","Jumat" };// Creating view corresponding to the fragmentView v = inflater.inflate(R.layout.jadwalfragment_layout,container, false);listviewJadwal = (ListView)v.findViewById(R.id.listViewJadwal);showJadwal(menus[position]);return v;}

  • 8/17/2019 299369920 Modul Pembelajaran Pemrograman Android

    26/58

    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.javapackage net.agusharyanto.tsjadwalpelajaran;import android.os.Bundle;import android.support.v4.app.Fragment;import android.support.v4.app.FragmentManager;import android.support.v4.app.FragmentPagerAdapter;

    public class TabsPagerAdapter extends FragmentPagerAdapter {public TabsPagerAdapter(FragmentManager fm) {super(fm);}@Overridepublic Fragment getItem(int index) {String[] hari ={"Senin", "Selasa", "Rabu","Kamis","Jumat" };JadwalFragment rFragment = new JadwalFragment();// Passing selected item information to fragmentBundle data = new Bundle();data.putInt("position", index);data.putString("hari", hari[index]);rFragment.setArguments(data);

    return rFragment;}@Overridepublic int getCount() {// get item count - equal to number of tabsreturn 5;}}9. Edit Class MainActivity.java lalu ketikkan kode berikutpackage net.agusharyanto.tsjadwalpelajaran;import java.util.ArrayList;import android.app.ActionBar;import android.app.ActionBar.Tab;

    import android.app.FragmentTransaction;import android.os.Bundle;import android.support.v4.app.FragmentActivity;import android.support.v4.view.ViewPager;public class MainActivity extends FragmentActivity implementsActionBar.TabListener {private ViewPager viewPager;private TabsPagerAdapter mAdapter;private ActionBar actionBar;// Tab titles

  • 8/17/2019 299369920 Modul Pembelajaran Pemrograman Android

    27/58

    public static String[] tabs = { "Senin", "Selasa","Rabu","Kamis","Jumat" };public static ArrayList list_jadwal = newArrayList();@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// InitilizationinitData();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 Tabsfor (String tab_name : tabs) {actionBar.addTab(actionBar.newTab().setText(tab_name).setTabListener(this));}/*** on swiping the viewpager make respective tab selected* */

    viewPager.setOnPageChangeListener(newViewPager.OnPageChangeListener() {@Overridepublic void onPageSelected(int position) {// on changing the page// make respected tab selectedactionBar.setSelectedNavigationItem(position);}@Overridepublic void onPageScrolled(int arg0, float arg1, intarg2) {}@Override

    public void onPageScrollStateChanged(int arg0) {}});}@Overridepublic void onTabReselected(Tab tab, FragmentTransaction ft) {// viewPager.setCurrentItem(tab.getPosition());}@Overridepublic void onTabSelected(Tab tab, FragmentTransaction ft) {// on tab selected// show respected fragment viewviewPager.setCurrentItem(tab.getPosition());

    }@Overridepublic void onTabUnselected(Tab tab, FragmentTransaction ft) {}public void initData() {list_jadwal.clear();list_jadwal.add(new Jadwal("Senin","08:00-10:00","Matematika"));list_jadwal.add(new Jadwal("Senin","10:00-12:00","AgamaIslam"));

  • 8/17/2019 299369920 Modul Pembelajaran Pemrograman Android

    28/58

    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","BahasaIndonesia"));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","SeniRupa"));list_jadwal.add(new Jadwal("Rabu","12:00-13:00","Istirahat"));list_jadwal.add(new Jadwal("Rabu","13:00-15:00","BahasaInggris"));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","LogikaAlgoritma"));}

    }10. Sekarang mari kita Run Projectnya.Tampilan Awal Aplikasi.Untuk berpindah Tab kita bisa menyentuh salah satu Tab. Atau melakukan gerakan swipe kekiriGimana, Mantapkan Tab Swipe denganView PagernyaBisa buat tambahan senjata buat yang lagi skripsi atau lagi ada project biar aplikasinyatambah mantabBelajar Android Membuat Tulisan Berjalan- MarqueeBelajar Android lagi yuk, walaupun masih suasana lebaran teta[ harus semangat. P

    ada seritutoial 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 yangdigunakan untuk menmpilkan tulisan bergerak pada halaman web, biasanya digunakan untukmenampilkan informasi penting. Tentunya kita berfikir, bisa nggak yah kita buattulisanbergerak diandroid. Yang paling mudah adalah cari digoogle siapa tahu ada yang p

  • 8/17/2019 299369920 Modul Pembelajaran Pemrograman Android

    29/58

    ernahshare.Sekarang mari kita buat aplikasinya1. Buat project dengan nama ªLearnMarqueeº2.Siapkan layout untuk aplikasi kta, untuk itu Edit activity_main.xml lalu ketikan kodeberikut

    3. Sekarang kita masuk ke otak dari aplikasi kita, Edit MainActivity.java lalu ketikan kode berikutpackage net.agusharyanto.learnmarquee;import android.app.Activity;import android.content.Context;import android.graphics.Color;import android.os.Bundle;import android.view.View;

    import android.view.animation.Animation;import android.view.animation.TranslateAnimation;import android.widget.LinearLayout;import android.widget.TextView;public class MainActivity extends Activity {@Overrideprotected 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 luluskuliah tepat waktu dengan nilai yang baik", this);setticker(ticker_area2, "Calon Mertua juga akan bangga punyamenantu yang baik agamanya dan mapan kehidupannya", this);}public void setticker(LinearLayout parent_layout, String text, Contextcontx) {if (text != "") {TextView view = new TextView(contx);view.setText(text);

  • 8/17/2019 299369920 Modul Pembelajaran Pemrograman Android

    30/58

    view.setTextColor(Color.BLACK);view.setTextSize(25.0F);Context context = view.getContext(); // gets the context of theview// measures the unconstrained size of the view// before it is drawn in the layoutview.measure(View.MeasureSpec.UNSPECIFIED,View.MeasureSpec.UNSPECIFIED);// takes the unconstrained width of the viewfloat width = view.getMeasuredWidth();float height = view.getMeasuredHeight();// gets the screen widthfloat 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 calculationfloat toXDelta = width - (screenWidth - 0);// sets toXDelta to -300 if the text width is smaller that the// screen sizeif (toXDelta < 0) {toXDelta = 0 - screenWidth;// -300;

    } else {toXDelta = 0 - screenWidth - toXDelta;// -300 - toXDelta;}// Animation parametersAnimation 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 programnyaNah gampangkan buat marquee text di androidBelajar Android Studio dengan MembuatAplikasi Android SederhanaSetelah tahapan instalasi selesai dilakukan, kita lanjut dengan membuataplikasi sederhanadengan Android Studio.Dalam belajar sesuatu yang baru biasanya saya belajar dari hal yang mudah-mudahdulu. Ibaratbelajar matematika kia tahu angka dulu baru belajar pertambahan, pengurangan, perkalian danpembagian. Coba bayangkan bisakah kita memahami penambahan dalam matemat

    ika kalautidak tahu angka. Begitu juga dalam pembuatan aplikasi bisakah kita buat aplikasi Androidyang kompleks dan banyak fitur kalau membuat aplikasi yang sederhana saja tidakbisa.Aplikasi Android sederhana yang akan kita buat adalah aplikasi yang dapat membantu kitamenghitung luas persegi panjang.Sekarang mari kita mulai1. Buka Android Studio lalu pilih Start a new Android Studio Project.

  • 8/17/2019 299369920 Modul Pembelajaran Pemrograman Android

    31/58

    Akan tampil jendela Create New Project, isikan seperti di bawah ini.Klik Next lalau centang Phone and TabletKlik Next, lalu pilih Blank ActivityKlik 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 sudahmenghubungkan Android Moto G saya ke komputer, maka Moto G saya akan muncul JendelaChoose Device. Agar lebih cepat runnya Kita pilih saja Choose Running Device.Jika tidak punya device maka bisa pilih ªLaunch Emulatorº kemidan klik OKMaka hasil tampilannya adalah seperti ini.Loh aplikasi persegi panjang kok isinya Hello World. Harusnya kan ada inputan panjang danlebar.2. Untuk menambahkan inputan panjang dan lebar maka kita harus mengedit file layoutnyadalam hal ini activity_main.xml untuk itu replace kode yang ada pada file tersebut dengankode 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">

  • 8/17/2019 299369920 Modul Pembelajaran Pemrograman Android

    32/58

    Nah salah satu android studio ini adalah kita bisa langsung lihat previewnya3. Setelah layout selesai sekarang mari kita kerjakan otak dari aplikasi ini yai

    tu 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;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initUI();initEvent();}private void initUI(){

  • 8/17/2019 299369920 Modul Pembelajaran Pemrograman Android

    33/58

    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() {@Overridepublic 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+"");}@Overridepublic 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;

    }@Overridepublic 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 SimplifiableIfStatementif (id == R.id.action_settings) {return true;}return super.onOptionsItemSelected(item);}

    }4. Kalau dulu di eclipse untuk konfigurasi aplikasi ada difile AndroidManifest.xml, kalau diAndroid Studio konfigurasinya ada pada file build.gradle (module:app)apply plugin: 'com.android.application'android {compileSdkVersion 21buildToolsVersion "21.1.2"defaultConfig {applicationId "net.agusharyanto.persegipanjang"minSdkVersion 15targetSdkVersion 21versionCode 1

    versionName "1.0"}buildTypes {release {minifyEnabled falseproguardFiles getDefaultProguardFile('proguard-android.txt'),'proguard-rules.pro'}}}

  • 8/17/2019 299369920 Modul Pembelajaran Pemrograman Android

    34/58

    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 kitabisa langsung Run ke HP. Karena kalau ke Run menggunakan Emulator itu lambat dan banyakmakan Resource komputer kitaHasil dari aplikasi kitaIsikan nilai Panjang dan Lebar kemudian sentuh tombol Hitung LuasMudahkan buat aplikasi android dengan android studio.Belajar Android Navigation Drawer danSliding MenuKalau beberapa waktu lalu para developer menggunakan Dashboard untuk Tampilan Menunya,sekarang mereka lebih memilih menggunakan Sliding Menu. Facebook, GMAILmenggunakan sliding menu kalau istilah didunia development android dikenal dengan namaNavigation Drawer, disebut Navigation Drawer karena cara kerjanya yangmirip Drawer(Laci). Navigation Drawer mempunyai kelebihan yaitu menunya hanya muncul  jika kitainginkan, sehingga tidak memakan tempat di layar HP. Penasaran dengan Navigation

     Drawer,Mari kita buat project Jadwal Pelajaran yang Navigsinya menggunakan Navigation Drawer1. Buat Project dengan nama NDJadwal Pelajaran2. Pada directory drawable Tambahkan icon ic_drawable.png3. Edit string.xml lalu ketikkan kode berikut

    NDJadwalPelajaranSettingsHello world!

    Senin

    SelasaRabuKamisJumatTambah JadwalAbout

    Open DrawerClose Drawer

    4.edit activity_main.xml lalu ketikkan kode berikut

  • 8/17/2019 299369920 Modul Pembelajaran Pemrograman Android

    35/58

    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" />

    5. Buat Layout baru dengan nama drawer_list_item.xml

    6. Buat Layout baru dengan nama jadwalfragment_layout.xml

    7. Buat Layout baru dengan nama row_jadwal.xml

    8. Buat Layout baru dengan nama fragement_tambah_jadwal.xml

  • 8/17/2019 299369920 Modul Pembelajaran Pemrograman Android

    36/58

    9. Buat Class baru dengan nama Jadwal.javapackage 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 berikutpackage 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 {private Activity activity;private ArrayList lJadwal;private static LayoutInflater inflater = null;public AdapterJadwal (Activity activity, int textViewResourceId,ArrayListal_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 {

  • 8/17/2019 299369920 Modul Pembelajaran Pemrograman Android

    37/58

    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 berikutpackage 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 {

    @Overridepublic View onCreateView (LayoutInflater inflater, ViewGroup container, BundlesavedInstanceState) {View v = inflater.inflate(R.layout.fragment_tambah_jadwal, container, false);return v;}}12. Edit class ListFragment.java lalu ketikkan kode berikutpackage 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 list_jadwal = new ArrayList();TextView tvhari;ListView listviewJadwal ;@Overridepublic 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 fragmentView v = inflater.inflate(R.layout.jadwalfragment_layout, container, false);listviewJadwal = (ListView) v.findViewById(R.id.listViewJadwal);// Updating the action bar titlegetActivity().getActionBar().setTitle(menus[position]);initData();showJadwal(menus[position]);return v;

  • 8/17/2019 299369920 Modul Pembelajaran Pemrograman Android

    38/58

    }public void showJadwal(String hari) {Log.d("TAGS","hari:"+hari);// tvhari.setText("Hari " + hari);ArrayList jadwal_terpilih = new ArrayList();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","PemrogramanAndroid"));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 berikutpackage 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 enclosedprivate DrawerLayout mDrawerLayout;// ListView represents Navigation Drawerprivate ListView mDrawerList;

  • 8/17/2019 299369920 Modul Pembelajaran Pemrograman Android

    39/58

    // ActionBarDrawerToggle indicates the presence of Navigation Drawer in the actionbarprivate ActionBarDrawerToggle mDrawerToggle;// Title of the action barprivate String mTitle = "";@SuppressLint("NewApi")@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mTitle = "Jadwal Pelajaran";getActionBar().setTitle(mTitle);// Getting reference to the DrawerLayoutmDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);mDrawerList = (ListView) findViewById(R.id.drawer_list);// Getting reference to the ActionBarDrawerTogglemDrawerToggle = 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 DrawerLayoutmDrawerLayout.setDrawerListener(mDrawerToggle);// Creating an ArrayAdapter to add items to the listview mDrawerListArrayAdapter adapter = newArrayAdapter(getBaseContext(),R.layout.drawer_list_item,

    getResources().getStringArray(R.array.menus));// Setting the adapter on mDrawerListmDrawerList.setAdapter(adapter);// Enabling Home buttongetActionBar().setHomeButtonEnabled(true);// Enabling Up navigationgetActionBar().setDisplayHomeAsUpEnabled(true);// Setting item click listener for the listview mDrawerListmDrawerList.setOnItemClickListener(new OnItemClickListener() {@Overridepublic void onItemClick(AdapterView parent, View view,int position, long id) {// Getting an array of rivers

    String[] menuItems =getResources().getStringArray(R.array.menus);// Currently selected rivermTitle = menuItems[position];if (mTitle.equals("Tambah Jadwal")){FragmentTambahJadwal fragmentone = newFragmentTambahJadwal();FragmentManager fragmentManager =getFragmentManager();// Creating a fragment transaction

  • 8/17/2019 299369920 Modul Pembelajaran Pemrograman Android

    40/58

    FragmentTransaction ft =fragmentManager.beginTransaction();// Adding a fragment to the fragment transactionft.replace(R.id.content_frame, fragmentone);// Committing the transactionft.commit();}else{// Creating a fragment objectListFragment rFragment = new ListFragment();// Passing selected item information to fragmentBundle data = new Bundle();data.putInt("position", position);//data.putString("url", getUrl(position));rFragment.setArguments(data);// Getting reference to the FragmentManagerFragmentManager fragmentManager = getFragmentManager();// Creating a fragment transactionFragmentTransaction ft =fragmentManager.beginTransaction();// Adding a fragment to the fragment transactionft.replace(R.id.content_frame, rFragment);// Committing the transactionft.commit();}

    // Closing the drawermDrawerLayout.closeDrawer(mDrawerList);}});}@Overrideprotected void onPostCreate(Bundle savedInstanceState) {super.onPostCreate(savedInstanceState);mDrawerToggle.syncState();}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {if (mDrawerToggle.onOptionsItemSelected(item)) {

    return true;}return super.onOptionsItemSelected(item);}/** Called whenever we call invalidateOptionsMenu() */@Overridepublic boolean onPrepareOptionsMenu(Menu menu) {// If the drawer is open, hide action items related to the content viewboolean 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 satuhari, akan menampilkan jadwal dihari tersebut.Wah ternyata Navigation Drawer ini memang mantap. Tambah lagi satu amunisi untuk buat

  • 8/17/2019 299369920 Modul Pembelajaran Pemrograman Android

    41/58

    aplikasi makin mantapBelajar Android Membuat SpinnerNavigation pada Action BarJumpa lagi dengan agus haryanto, kali ini kita masih membahas tentan salah action bar yaituSpinner NavigationMasih melanjutkan project sebelumnya, sekarang kita akan mencoba bentuknavigasi menuyang lain yang sering disebut dengan nama Spinner Navigation. Sesuai dengan namanyaSpinner Navigation adalah menu navigasi yanga di action bar yang bentiknya sepert spinner.sekarang mari kita ikuti langkah pembuatannya1. Buka project Jadwal Pelajaran yang ada pada tutorial sebelumnya2. Buat layout baru dengan nama row_spinnermenu_item.xml

    3. Buat class baru dengan nama SpinnerNavItem.java class ini berfungsi sebagai model dariisi 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 adaicon 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;

  • 8/17/2019 299369920 Modul Pembelajaran Pemrograman Android

    42/58

    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;private Context context;public SpinnerMenuAdapter(Context context,ArrayList spinnerNavItem) {this.spinnerNavItem = spinnerNavItem;this.context = context;}@Overridepublic int getCount() {return spinnerNavItem.size();}@Overridepublic Object getItem(int index) {return spinnerNavItem.get(index);}@Override

    public long getItemId(int position) {return position;}@Overridepublic 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;}@Overridepublic 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 kodingpada Spinner Navigationpackage com.agusharyanto.jadwalpelajaran;import java.util.ArrayList;

  • 8/17/2019 299369920 Modul Pembelajaran Pemrograman Android

    43/58

    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 implementsActionBar.OnNavigationListener{// action barprivate ActionBar actionBar;// Title navigation Spinner dataprivate ArrayList navSpinner;// Navigation adapterprivate SpinnerMenuAdapter adapter;ArrayList list_jadwal = new ArrayList();TextView tvhari;ListView listviewjadwal ;@Overrideprotected 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 titleactionBar.setDisplayShowTitleEnabled(false);// Enabling Spinner dropdown navigationactionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);// Spinner title navigation datanavSpinner = new ArrayList();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 adapteradapter = new SpinnerMenuAdapter(getApplicationContext(), navSpinner);// assigning the spinner navigationactionBar.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"));

  • 8/17/2019 299369920 Modul Pembelajaran Pemrograman Android

    44/58

    list_jadwal.add(new Jadwal("Jumat","08:00-10:00","Pemrograman Java"));list_jadwal.add(new Jadwal("Jumat","10:00-12:00","PemrogramanAndroid"));list_jadwal.add(new Jadwal("Jumat","12:00-13:00","Istirahat"));list_jadwal.add(new Jadwal("Jumat","13:00-15:00","Logika Algoritma"));}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {return true;}/*** On selecting action bar icons* */@Overridepublic boolean onOptionsItemSelected(MenuItem item) {return true;}/*** Actionbar navigation item select listener* */@Overridepublic boolean onNavigationItemSelected(int itemPosition, long itemId) {// Action to be taken after selecting a spinner itemToast.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_terpilih = new ArrayList();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 = newAdapterJadwal(SpinnerNavigationActivity.this, 0,jadwal_terpilih);listviewjadwal.setAdapter(adapterjadwal);}}6. Rubah AndroidManifest.xml untuk Activity yang pertama kali di eksekusi  dariMainActivity ke SpinnerNavigationActivity.

  • 8/17/2019 299369920 Modul Pembelajaran Pemrograman Android

    45/58

    7. Sekarang mari kita Run projectnya.Klik Spinner Navigation di pojok kiri atasPilih Hari JumatBagaimana, mudahkan buatnya, Action Bar di android memang mantap. Tambah lagi senjatakita untuk navigasi menu.Belajar Android Action Bar Studi KasusAplikasi Jadwal PelajaranAndroid Action Bar adalah Salah satu navigasi andalan yang dipakai oleh para developeradalah 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 menubar, tool bar, sliding bar (navigation drawer), tab bar, apa lagi yah,  coba cari didevleoper.android.com dan androidhive.infoUntuk lebih jelasnya ini ada gambar bisa dilihat di http://androidhive.infoPada kesempatan kali ini kita akan coba gunakan action bar sebagai action buttons danoverflow menu untuk membuat aplikasi jadwal pelajaranBagusnya sih kalau buat aplikasi kita buat dulu design user interfacenya. Kalauuntu kebutuhanini 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 lalueditmain.xml

  • 8/17/2019 299369920 Modul Pembelajaran Pemrograman Android

    46/58

    android:orderInCategory="100"android:showAsAction="never"android:title="Kamis"/>

    3. Sekarang kita urus layout user interfacenya, edit file res/layout activity_main.xml

    4. Untuk layout baris pada list view pada directory res/layout buat file layout

    baru dengannama row_jadwal.xml

    5. Buat class baru dengan nama Jadwal.java lalu ketikkan kode berkut

  • 8/17/2019 299369920 Modul Pembelajaran Pemrograman Android

    47/58

    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 berikutpackage 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 {private Activity activity;private ArrayList lJadwal;

    private static LayoutInflater inflater = null;public AdapterJadwal (Activity activity, int textViewResourceId,ArrayListal_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();}

  • 8/17/2019 299369920 Modul Pembelajaran Pemrograman Android

    48/58

    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 berikutpackage 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 list_jadwal = new ArrayList();TextView tvhari;ListView listviewjadwal ;@Overrideprotected 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","PemrogramanAndroid"));list_jadwal.add(new Jadwal("Jumat","12:00-13:00","Istirahat"));list_jadwal.add(new Jadwal("Jumat","13:00-15:00","Logika Algoritma"));

    }@Overridepublic 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* */

  • 8/17/2019 299369920 Modul Pembelajaran Pemrograman Android

    49/58

    @Overridepublic boolean onOptionsItemSelected(MenuItem item) {// Take appropriate action for each action item clickswitch (item.getItemId()) {case R.id.action_senin:showJadwal("Senin");return true;case R.id.action_selasa:// location foundshowJadwal("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_terpilih = new ArrayList();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 menuPilih SeninUntuk saat ini pada saat aplikasi dijalankan tampilannya kosong. harusnya kita bisa langsungmenampilkan jadwal hari ini. Nah silahkan mencoba menyelesiakannyaBelajar Android Bermain dengan RadioGroup dan Radio ButtonDalam kehidupan sehari-hari kita banyak bergaul dengan namanya pilihan.Misalkan yangmasih hangat yaitu kita harus memilih presiden. Atau kita pernah mengerjakan soal pilihanganda dimana kita harus memilih salah satu jawaban. Kita juga pernag

    nonton kuis yanglegendaris yaitu One tobe Milionare bahkan mungkin ada yang coba buat aplikasinya.Salah satu fungsi IT adalah penghematan, Nah kalau pilpres kemarin kita coblos pakai pakusemoga dipemilu selanjutnya kita sudah pakai tablet. Bisa dibayangkan pen