• Tidak ada hasil yang ditemukan

Android Book_by Me

N/A
N/A
Protected

Academic year: 2021

Membagikan "Android Book_by Me"

Copied!
124
0
0

Teks penuh

(1)

Complete

Complete

Complete

Complete

A Practical Reference

Marlisa S | 7409040029

(2)

Kata Pengantar

Assalamualaikum Wr. Wb.

Segala puji syukur kami ucapkan atas ke hadirat Tuhan Yang Maha Esa yang masih melimpahkan rahmat dan karunianya kepada kita semua sehingga Modul Android ini dapat terselesaikan dengan baik. Modul ini dimaksudkan dalam rangka pemenuhan penugasan perkuliahan mata kuliah Pemrograman Lanjut-Android.

Kami mengucapkan terima kasih sebanyak-banyaknya kepada pihak-pihak yang telah membantu kami selama proses penyusunan modul ini berlangsung, sehingga modul ini dapat terselesaikan dengan baik dan tepat waktu sesuai dengan waktu yang ditentukan. Penulis menyadari bahwa masih banyak kekurangan dan ketidaksempurnaan dari modul ini. Oleh karena itu sekiranya kami mengharapkan kritik dan saran yang bersifat membangun demi terwujudnya kesempurnaan dari modul ini.

Akhir kata dalam penyusunan modul ini kami sebagai penulis berharap semoga modul ini nantinya dapat bermanfaat bagi penulis sendiri maupun untuk pembaca pada umumnya.

Surabaya, 23 Juli 2011

(3)

Daftar isi

Kata Pengantar ... 2

Pendahuluan ... 4

User Interface Using XML Layouts ... 14

Basic Widgets ... 23

SelectionWidgets ... 30

Date,Time,Tabs ... 41

Drawer ... 45

Hard & Soft Keyboard ... 49

Menus ... 63 Intents ... 77 Preferences ... 86 File ... 98 Fonts ... 103 SQL Database ... 106

Location Based Services ... 113

(4)

PENDAHULUAN

Android adalah sistem operasi untuk telepon seluler yang berbasis Linux. Android menyediakan platform terbuka bagi para pengembang buat menciptakan aplikasi mereka sendiri untuk digunakan oleh bermacam peranti bergerak. Awalnya, Google Inc. membeli Android Inc., pendatang baru yang membuat peranti lunak untuk ponsel. Kemudian untuk mengembangkan Android, dibentuklah Open Handset Alliance, konsorsium dari 34 perusahaan peranti keras, peranti lunak, dan telekomunikasi, termasuk Google, HTC, Intel, Motorola, Qualcomm, T-Mobile, dan Nvidia.

Pada saat perilisan perdana Android, 5 November 2007, Android bersama Open Handset Alliance menyatakan mendukung pengembangan standar terbuka pada perangkat seluler. Di lain pihak, Google merilis kode–kode Android di bawah lisensi Apache, sebuah lisensi perangkat lunak dan standar

terbuka perangkat seluler. Di dunia ini terdapat dua jenis

distributor sistem operasi Android. Pertama yang mendapat dukungan penuh dari Google atau Google Mail Services (GMS) dan kedua adalah yang benar–benar bebas distribusinya tanpa dukungan langsung Google atau dikenal sebagai Open Handset Distribution (OHD).

Android versi 1.1

Pada 9 Maret 2009, Google merilis Android versi 1.1. Android versi ini dilengkapi dengan pembaruan estetis pada aplikasi, jam alarm, voice search (pencarian suara), pengiriman pesan dengan Gmail, dan pemberitahuan email.

Android versi 1.5 (Cupcake)

Pada pertengahan Mei 2009, Google kembali merilis telepon seluler dengan menggunakan Android dan SDK (Software Development Kit) dengan versi 1.5 (Cupcake). Penambahan fitur dalam seluler versi ini yakni kemampuan merekam dan menonton video dengan modus kamera, mengunggah video ke Youtube dan gambar ke Picasa langsung dari telepon, dukungan Bluetooth A2DP, kemampuan terhubung secara otomatis ke headset Bluetooth, animasi layar, dan keyboard pada layar yang dapat disesuaikan dengan sistem.

Android versi 1.6 (Donut)

Donut (versi 1.6) dirilis pada September dengan

(5)

sebelumnya, penggunaan baterai indikator dan kontrol applet VPN. Fitur lainnya adalah galeri yang memungkinkan pengguna untuk memilih foto yang akan dihapus; kamera, camcorder dan galeri yang dintegrasikan; CDMA / EVDO, 802.1x, VPN, Gestures, dan

Text-to-speech engine; kemampuan dial kontak; teknologi text to change

speech (tidak tersedia pada semua ponsel; pengadaan resolusi VWGA.

Android versi 2.0/2.1 (Eclair)

3 Desember 2009 kembali diluncurkan ponsel Android dengan versi 2.0/2.1 (Eclair), perubahan yang dilakukan adalah pengoptimalan hardware, peningkatan Google Maps 3.1.2, perubahan UI dengan browser baru dan dukungan HTML5, daftar kontak yang

baru, dukungan flash untuk kamera 3,2 MP, digital Zoom, dan

Bluetooth 2.1.

Aplikasi terkenal yang diubah ke dalam sistem operasi

Android adalah Shazam, Backgrounds, dan WeatherBug. Sistem operasi Android dalam situs Internet juga dianggap penting untuk menciptakan aplikasi Android asli, contohnya oleh MySpace dan Facebook.

Android versi 2.2 (Froyo: Frozen Yoghurt)

Pada 20 Mei 2010, Android versi 2.2 (Froyo) diluncurkan. Perubahan-perubahan umumnya terhadap versi-versi sebelumnya antara lain dukungan Adobe Flash 10.1, kecepatan kinerja dan aplikasi 2 sampai 5 kali lebih cepat, intergrasi V8 JavaScript engine yang dipakai Google Chrome yang mempercepat kemampuan rendering pada browser, pemasangan aplikasi dalam SD Card, kemampuan WiFi Hotspot portabel, dan kemampuan auto update dalam aplikasi Android Market.

Android versi 2.3 (Gingerbread)

Pada 6 Desember 2010, Android versi 2.3 (Gingerbread) diluncurkan. Perubahan-perubahan umum yang didapat dari Android versi ini antara lain peningkatan kemampuan permainan (gaming), peningkatan fungsi copy paste, layar antar muka (User Interface) didesain ulang, dukungan format video VP8 dan WebM, efek audio baru (reverb, equalization, headphone virtualization, dan bass boost), dukungan kemampuan Near Field Communication (NFC), dan dukungan jumlah kamera yang lebih dari satu.

(6)

Interface pada Honeycomb juga berbeda karena sudah didesain untuk tablet. Honeycomb juga mendukung multi prosesor dan juga akselerasi perangkat keras (hardware) untuk grafis.

Android versi 3.1

Android 3.1 adalah merilis platform tambahan yang banyak menyempurnakan fitur yang diperkenalkan pada Android 3.0. Ini didasarkan pada UI tablet-dioptimalkan sama dan fitur yang ditawarkan di Android 3.0 dan menambahkan beberapa kemampuan

baru bagi pengguna dan pengembang. Fitur-fitur yang ditambahkan

antara lain Open Accessory API untuk interaksi yang kaya dengan peripherals, USB host API, Input from mice, joysticks, and gamepads, Resizable Home screen widgets, MTP API for integrating with external cameras, RTP API.

Gb 1.1 Tampilan home screen pada Android emulator

Download dan Instalasi

Sebelum memulai Android, sebaiknya komputer telah terinstal Java Development Kit (JDK) sebagai pendukung.

Jika telah terinstal, yang perlu disiapkan adalah instalasi eclipse-java-galileo-SR2-win32, ADT-0.9.9 serta android-sdk-windows.

(7)

Selesai mendownload, saatnya instalasi. Letakan hasil download tersebut pada satu folder eclipse. Pastikan features dan plugins pada ADT digandakan ke dalam masing – masing features dan plugins pada folder eclipse.

Gb 1.2 Folder – folder android

Kemudian jalankan aplikasi eclipse, akan ada tampilan awal muncul seperti ini

(8)

Sekali eclipse dijalankan terdapat default penyimpanan workspace yang akan digunakan unuk menyimpan project – project. Kita dapat menggantinya dengan menekan tombol browse.

Disarankan untuk melakukan pengecekan folder penyimpanan project, supaya menghindari kesalahan folder yang dilacak. Jadi kejelasan tempat penyimpanan project kita, akan sangat membantu dalam pencarian. Setelah memastikan folder tersebut, tekan OK. Dalam poin ini, download dan aplikasi eclipse telah selesai namun sebelum memulai project baru, terdapat instalasi yang harus kita lakukan, yaitu instalasi SDK.

Instalasi SDK

Setelah masuk ke dalam aplikasi eclipse, pilih Windows – Android SDK and AVD Manager.

Terdapat tampilan seperti berikut, klik New untuk membuat AVD (Android Virtual Devices).

(9)

Kemudian isikan nama, target tipe android yang akan digunakan saat melaunch emulator. Ukuran AVD dengan standard 1024 MB. Setelah ok, klik create AVD.

Setelah selesai, akan ada tampilan gambar berikut, kemudian klik start untuk memulainya dan launch.

(10)

Membuat Project Android Baru

Buat project baru, klik File – New – Android Project , seperti pada gambar

(11)

Project name – nama dari project yang akan dibuat.

Package name – nama package. Nama tersebut akan

digunakan dalam Java files. Ketentuannya menggunakan nama domain company, seperti com.april dsb.

Activity name – nama activity dari aplikasi android. In

Android, think of an activity as a screen containing some actions, hence the name "activity"

Application name – nama yang ditampilkan dalam User

(12)

Open the HelloAndroid.java file, located inside HelloAndroid > src > com.example.helloandroid)

package com.example.helloandroid; import android.app.Activity; import android.os.Bundle;

public class HelloAndroid extends Activity {

/** Called when the activity is first created. */ @Override

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Kumpulan source code Code java untuk activity pada UI Generated kode java file untuk manajeme n resource source file. Kumpulan resources aplikasi non code Images Layout activity File generated-build file yang digunakan oleh eclipse dan ADT plugins, sehingga tidak dimodifikasi pusat pengaturan aplikasi yang dibuat.

(13)

} }

Bagian paling dasar dari aplikasi android adalah activity.

Sebuah activity menampilkan UI dari aplikasi android,

berupa widgets seperti buttons, labels, text boxes, dll.

Ketika activity dijalankan. sebuah onCreate() yang

merupakan event handler dipanggil.

The activity loads its UI from the XML file named main.xml.

This is represented by the constant named R.layout.main (generated automatically by the Eclipse as you save your project).

If you examine the main.xml file located in the res/layout

folder

Secara default, main.xml berisi scipt ini:

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/re s/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> </LinearLayout>

(14)

User Interface Using

XML Layouts

(15)

Tampilan User Interface (UI) dari aplikasi eclipse mengandung beberapa widget seperti buttons, labels, textbox dan lain - lain. Biasanya mendefinisikan UI menggunakan sebuah XML file (misalnya, main.xml yang berada di lokasi res/layout folder).

contoh sederhana penggunaan file xml Praktikum 1.1

Penggunaan widget button

>> Layout activity pada file main.xml, ubah seperti berikut ini: <?xml version="1.0"encoding="utf-8"?> <Button android:text="" android:id="@+id/Button01" android:layout_width="fill_par ent" android:layout_height="fill_pa rent"> </Button>

# fill_parent merupakan tampilan layout penuh. Jika width tampilan button maka memanjang, jika height tampilan button melebar. Kedua layout height dan weight merupakan fill_parent sehingga menjadi seperti gambar di samping #

source code java package com.april; import android.app.Activity; import java.util.Date; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button;

(16)

super.onCreate(savedInstanceState); setContentView(R.layout.main);

btn= (Button)findViewById(R.id.Button01); btn.setOnClickListener(new OnClickListener() {

public void onClick(View v) { updateTime(); }

}); }

private void updateTime(){

btn.setText(new Date().toString());

} }

# Deklarasi variabel btn dari widget Button.

# EditText (atau textBox) widget merupakan extension dari TextView yang mengijinkan get dan set text untuk update.

# findViewById merupakan sebuah fungsi untuk mencari resource widget menggunakan Id pada layout main.xml.

# R.id.Button01 merupakan cara untuk mengakses resource yang

memiliki id Button01 pada Layout yang secara default dialiaskan

sebagai R.

# updateTime() memanggil fungsi tersebut dengan memanggil setText

untuk tanggal berupa string ke button dengan nama variabel btn.

Views dan Views Group

View merupakan representasi dari komponen User Interface. View berada di area screen dan responsible dengan drawing serta event handling.

Beberapa view dapat dikelompokan menjadi viewgroups. Contoh dari viewgroups antara lain frame layout, linear layout dll. Sebuah viewgroup berasal dari dasar class android.view.viewgroup.

(17)

Android supports the following ViewGroups: „ LinearLayout „ AbsoluteLayout „ TableLayout „ RelativeLayout „ FrameLayout „ ScrollView

Penggunaan Linear Layout

Linear Layout merupakan salah satu bentuk Layout pada Android. Dengan menggunakan dasar Layout ini maka dasar aplikasi kita akan bersifat statis/fixed sehingga tidak bisa digerakkan/scroll.

Komponen untuk menerima inputan, maka yang digunakan adalah

EditText. Sebenarnya ada cara lain namun untuk dasar kita akan menggunakan EditText. Adapun script untuk membuatnya adalah sebagai berikut:

Karena penempatan layout pada XML sifatnya tersusun dari atas ke bawah, maka letakkan dua buah EditText pada Linear Layout layer kedua baris pertama dan dua buah Button pada Linear Layout

(18)

Berikutnya anda dapat menjalankan program xml sederhana tersebut dengan hasil sebagai berikut:

(19)

Tabel Layout yang mengatur peletakan child views element dalam baris dan kolom, namun tidak ditampilkan garis kolom dan barisnya.

Komponen TextView sendiri merupakan komponen yang akan menampilkan text. Untuk contoh kali ini, teks telah diinputkan langsnug pada main.xml. Berikut contoh untuk menghasilkan tulisan pada baris pertama:

Untuk baris kedua, sebagai berikut:

# android:gravity untuk mengatur letak textview tersebut rata kanan. Untuk padding besar kecilnya lapisan textview yang dibuat.

Pada script main.xml, susunan komponennya seperti ini: <?xml version="1.0"encoding="utf-8"?>

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:stretchColumns="*"> <TableRow>

<TextView android:text= "open .."

android:padding= "3dip"/>

<TextView android:text= "ctrl-o"

android:gravity="right"

android:padding="3dip"/>

</TableRow> <TableRow>

(20)

android:gravity="right"

android:padding="3dip"/>

</TableRow> </TableLayout>

Jika dijalankan pada android project, hasilnya sebagai berikut:

Penggunaan Relative Layout

Relative Layout merupakan peletakan layout child dengan posisi relatif dari parent / siblings elements (penggunaan id @). Susunan script main.xml dengan menggunakan relative layout, sebagai berikut:

(21)

# Penggunaan relative layout dengan memanggil id (@nama_id) dari widget yang akan diatur.

# EditText yang digunakan untuk meanpung teks yang diketik, diatur letaknya dengan penggunaan

android:layout_below="@id/TextView01”. Berarti TextView dipanggil

untuk diletakan di atas EditText.

# id Button01 memiliki android:layout_alignParentRight="true”, berarti Button01 yang berupa OK, memiliki aturan rata kanan dan berada di bawah EditText, berdasarkan

android:layout_below="@id/EditText01".Diberi jarak 10px untuk

widget yang akan diletakan di sebelah kiri Button OK.

# id Button02 yang berupa Button Cancel, memanggil id Button01 untuk peletakan di sebelah kiri.

android:layout_toLeftOf="@id/Button01".

Hasil dari code main.xml adalah sebagai berikut

Penggunaan Absolut Layout

Absolute Layout memungkinkan kita untuk menentukan posisi X dan Y dari childrennya.

(22)

# 120px, pengukurannya pada sumbu x seperti pada gambar, diukur dari sebelah kiri.

# ukuran 32px berada pada sumbu y dengan pengukuran mulai dari atas.

(23)
(24)

Penggunaan Single Button

Dalam bab ini, kita mulai menggunakan secara rinci script MainActivity.java.

# android:hint="First Last Name" merupakan teks (petunjuk) yang

transparan pada EditTeks jika dimasukan suatu teks, hint tersebut hilang.

(25)

# onClick merupakan suatu event yang terjadi setelah Button diklik. # TextView dengan nama txtUserName melakukan pengesetan teks melalui getText().toString(); dengan menampilkan teksnya. # Jika string yang dimasukan di editText dicocokan pada textView merupakan April Fatmasari, maka teks pada TextView diset menjadi ("OK, please wait .. ").

# Toast merupakan tampilan suatu pesan dengan cepat, berupa "Bienvenido".

>> Jika di-run, maka tampilan pada emulatornya adalah

(26)

Contoh script main.xml yang menggunakan CheckBox, seperti berikut:

(27)

# Pada fungsi onClick, mengandung maksud, jika ChekBox01 berupa ckCream dipilih, maka string yang ditampilkan adalah “ cream”. # Jika CheckBox berupa Sugar dipilih, maka ditampung string berupa “ sugar”.

#Kemudian string tesebut ditampilkan dalam suatu pesan cepat melaui Toast.

Hasil yang ditampilkan pada emulator

Penggunaan RadioButon dan CheckButton

User Interfae menggunakan dapat menggunakan

RadioButton dan CheckButton secara bersamaan. Untuk contoh di bawah ini, digunakan kumpulan RadioButton yaitu RadioGrup dengan 2 buah CheckButton.

Penggunaan RadioGrup hanya bisa memilih satu saja sedangkan jika tidak digrup dapat memilih lebih dari satu.

(28)
(29)

# Toast untuk menampilkan pesan singkat seperti pada gambar. Pesan – pesan tersebut akan tampil jika memilih salah satu radio button atau checkbutton.

Pemilihan CheckButton dan CheckBox

(30)

Selection

Widgets

(31)

RadioButton dan CheckButton cocok untuk digunakan suatu kumpulan pilihan yang tidak banyak. Jika pilihan sangat banyak dapat

menggunakan widget berupa listbox, combobox, drop-down list dan

sebagainya.

Android memiliki framework data adapter yang

memberikan interface umum untuk pilihan baik berupa static array maupun isi database.

Selection views – merupakan widget untuk menampilkan daftar pilihan yang menggunakan adapter sebagai penyuplai pilihan. Penggunaan Simple List

(32)

source code java

# setListAdapter digunakan untuk penggunaan semacam arraylist yang berisi array items bertipe String.

# Pada fungsi onListItemClick untuk menampilkan pesan saat diklik pada position array items.

(33)

Penggunaan spinner sama dengan drop down selector. Fungsi spinner dan ListView hampir sama namun ListView memiliki ruang yang lebih kecil.

(34)

source code java

#ArrayAdapter pada spinner digunakan sebagai tampungan kalimat string. Agar layout pilihan spinner dapat terlihat naik, turun

(35)

pengaturannya ada di dalam setDropDownViewResource, pemanggilannya melalui spin.

#Pada gambar terlihat pilihan kita adalah silly dengan checkbutton yang kita pilih berwarna hijau, penjelasan tersebut berdasarkan fungsi onItemSelected. Tulisan yang muncul pada textview merah berdasar salah satu posisi array yang kita pilih dalam array item, misal: “silly”. Penggunaan GridView

GridView merupakan Viewgroup yang menampilkan item – item dalam dua dimensi grid yang dapat discroll.

(36)

source code java

#GridView juga menampung string dalam bentuk array sehingga menggunakan ArrayAdapter. Fungsi onItemClick merupakan pilihan kata yang ditampilkan TextView seperti pada gambar.

Selection Widget 2

Penggunaan AutoCompleteTextView

Ketika user mengetikkan kata, teks berfungsi sebagai filter prefix kemudian membandingkan input teks dengan daftar kata yang paling mendekati. Daftar pilihan ditampilkan seperti Spinner.

(37)
(38)

Penggunaan Galeri Widget

Galeri widget ini dapat ditampilkan dengan menggeser ke kanan maupun ke kiri

(39)
(40)
(41)

Date,

Time,

Tabs

(42)
(43)
(44)

# Widgets DatePicker dan TimePicker terdapat dalam android untuk membantu user memasukan tanggal dan waktu.

#Widgets datePicker dan dialogs DatePickerDialog untuk mengatur tanggal yang dipilih mulai dari tahun, bulan dan hari.

(45)
(46)
(47)
(48)
(49)
(50)
(51)
(52)
(53)
(54)
(55)
(56)

(57)
(58)

XML layout

<?xmlversion="1.0"encoding="utf-8"?>

<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"

android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background = "#FFCC00" > <EditText android:id="@+id/Customer"

android:hint="Enter your name" android:layout_width="fill_parent" android:layout_height="wrap_content" android:inputType="textCapWords" android:nextFocusDown="@+id/Phone"> </EditText> <EditText android:id="@+id/Phone"

android:hint="Enter your phone number"

android:layout_width="fill_parent" android:layout_height="wrap_content" android:inputType="phone"> </EditText> <RadioGroup android:id="@+id/Flavour" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <RadioButton android:id="@+id/nonflav" android:text="None" android:textColor = "#003300" android:layout_width="wrap_content" android:layout_height="wrap_content" android:checked="true"> </RadioButton> <RadioButton android:id="@+id/cheesflav" android:text="Cheese" android:textColor = "#003300" android:layout_width="wrap_content" android:layout_height="wrap_content"> </RadioButton> <RadioButton android:id="@+id/doubleflav"

android:text="Double Cheese" android:textColor = "#003300"

(59)

android:layout_width="wrap_content" android:layout_height="wrap_content"> </RadioButton> </RadioGroup> <RadioGroup android:id="@+id/Shape" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <RadioButton android:id="@+id/round" android:text="Round" android:textColor = "#003300" android:layout_width="wrap_content" android:layout_height="wrap_content"> </RadioButton> <RadioButton android:id="@+id/square" android:text="Square" android:textColor = "#003300" android:layout_width="wrap_content" android:layout_height="wrap_content" android:checked="true"> </RadioButton> </RadioGroup> <CheckBox android:id="@+id/Pepperoni" android:text="Pepperoni" android:textColor = "#003300" android:layout_width="wrap_content" android:layout_height="wrap_content"> </CheckBox> <CheckBox android:id="@+id/Mushroom" android:text="Mushroom" android:textColor = "#003300" android:layout_width="wrap_content" android:layout_height="wrap_content" android:checked="true"> </CheckBox> <CheckBox android:id="@+id/Veggie" android:text="Veggies" android:textColor = "#003300" android:layout_width="wrap_content"

(60)

android:text="Chicken" android:textColor = "#003300" android:layout_width="wrap_content" android:layout_height="wrap_content"> </CheckBox> <Button android:id="@+id/OK"

android:text="SMS - Place your order"

android:textColor = "#CC0000" android:layout_width="wrap_content" android:layout_height="wrap_content"> </Button> </LinearLayout> Android Activity package assignment.pizza; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.CheckBox; import android.widget.EditText; import android.widget.RadioButton; import android.widget.Toast;

public class pizzamania extends Activity { /** Called when the activity is first created. */

EditText name; EditText phone; Button OK; RadioButton none; RadioButton cheese; RadioButton doublecheese; RadioButton round; RadioButton square; CheckBox pepper; CheckBox mush; CheckBox veggie; CheckBox chick; @Override

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

setContentView(R.layout.main);

(61)

phone = (EditText)findViewById(R.id.Phone); OK = (Button)findViewById(R.id.OK);

none = (RadioButton)findViewById(R.id.nonflav); cheese = (RadioButton)findViewById(R.id.cheesflav); doublecheese = (RadioButton)findViewById(R.id.doubleflav); round = (RadioButton)findViewById(R.id.round);

square = (RadioButton)findViewById(R.id.square); pepper = (CheckBox)findViewById(R.id.Pepperoni); mush = (CheckBox)findViewById(R.id.Mushroom); veggie = (CheckBox)findViewById(R.id.Veggie); chick = (CheckBox)findViewById(R.id.Chicken);

OK.setOnClickListener(new OnClickListener() {

public void onClick(View v) { String info = "";

if (name.length()== 0 || phone.length()==0){

Toast.makeText(getApplicationContext(), "Name and Phone are require", Toast.LENGTH_SHORT).show();

} else{

info = info + "Customer\t : " + name.getText().toString()+ ", " +

phone.getText().toString();

info += "\nFlavour\t\t :"; if(cheese.isChecked()){ info += " Cheese"; }

else if(doublecheese.isChecked()){ info += " Double Cheese"; }

else{

info += " Original"; }

info += "\nShape\t\t\t :"; if(square.isChecked()){ info += " Square"; } else{ info += " Round"; } info += "\nTopping\t\t : \n";

(62)

if (mush.isChecked()){ info += " - Mushroom\n"; } if (veggie.isChecked()){ info += " - Veggies\n"; } if (chick.isChecked()){ info += " - Chicken\n"; }

Toast.makeText(getApplicationContext(), info, Toast.LENGTH_SHORT).show(); }

else {

Toast.makeText(getApplicationContext(), "Choose Topping First!", Toast.LENGTH_SHORT).show();

} } } }); } }

(63)
(64)

Menus 1

Menu mengekspos fungsi aplikasi tanpa mengkonsumsi ruang 'banyak' tampilan

Android menyediakan dua jenis menu dikenal sebagai: Pilihan menu dan menu konteks.

1. Menu pilihan dipicu dengan menekan tombol Menu pada perangkat keras, sementara

2. Menu konteks adalah dibesarkan oleh tekan dan tahan pada widget yang berhubungan dengan menu.

Context Menu XML

<LinearLayoutandroid:id="@+id/LinearLayout01" android:layout_width="fill_parent" android:layout_height="fill_parent"

xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical">

<EditTextandroid:layout_height="wrap_content" android:id="@+id/etMessage1" android:text="Hello world" android:layout_width="fill_parent" android:layout_margin="5dp"/> <EditTextandroid:layout_height="wrap_content"

(65)

android:text="Hello mundo" android:layout_width="fill_parent" android:layout_margin="5dp"/> <TextViewandroid:id="@+id/TextView01"

android:layout_width="wrap_content" android:layout_height="wrap_content"

android:text="Press the Menu key, or \nLong-press text-boxes" android:layout_gravity="center"/> </LinearLayout> Listing Program import android.app.Activity; import android.os.Bundle; import android.text.Html; import android.text.Spanned; import android.view.ContextMenu; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.ContextMenu.ContextMenuInfo; import android.widget.EditText;

public class Demo extends Activity { EditText etMessage1; EditText etMessage2;

Integer[] arrayPointSize= {10, 20, 30, 40, 50}; @Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState); setContentView(R.layout.main);

etMessage1= (EditText)findViewById(R.id.etMessage1); etMessage2= (EditText)findViewById(R.id.etMessage2); registerForContextMenu(etMessage1);

registerForContextMenu(etMessage2); }

public boolean onCreateOptionsMenu(Menu menu) { populateMyFirstMenu(menu);

return super.onCreateOptionsMenu(menu); }

public void onCreateContextMenu(ContextMenu menu, View v,

ContextMenuInfo menuInfo)

{

(66)

populateMySecondMenu(menu);

}

}

private void populateMyFirstMenu(Menu menu) { int groupId= 0; int order= 0; menu.add(groupId, 1, 1, "10 points"); menu.add(groupId, 2, 2, "20 points"); menu.add(groupId, 3, 3, "30 points"); menu.add(groupId, 4, 4, "40 points"); menu.add(groupId, 5, 5, "50 points"); menu.add(groupId, 6, 8, "Red text"); menu.add(groupId, 7, 7, "Green Text"); menu.add(groupId, 8, 6, "Blue text"); }

private void populateMySecondMenu(Menu menu) {

int groupId= 0; int order= 0; menu.add(groupId, 9, 1, "Bold"); menu.add(groupId, 10, 2, "Italic"); menu.add(groupId, 11, 3, "Normal"); }

public boolean onContextItemSelected(MenuItem item) {

return(applyMenuOption(item)); }

@Override

public boolean onOptionsItemSelected(MenuItem item) {

return(applyMenuOption(item)); }

private boolean applyMenuOption(MenuItem item){ int menuItemId= item.getItemId(); // 1, 2, 3, ...11

String strMsg2 = etMessage2.getText().toString(); if(menuItemId<= 5) { int newPointSize= arrayPointSize[menuItemId-1]; etMessage1.setTextSize(newPointSize); etMessage2.setTextSize(newPointSize); } else {

// either change color on text1 or style on text2

if(menuItemId== 6)

(67)

else if(menuItemId== 7)

etMessage1.setTextColor(0xff00ff00); // green

else if(menuItemId== 8)

etMessage1.setTextColor(0xff0000ff); // blue

else if(menuItemId== 9)

etMessage2.setText(beautify(strMsg2, "BOLD")); //bold

else if(menuItemId== 10)

etMessage2.setText(beautify(strMsg2, "ITALIC")); //italic

else if(menuItemId== 11)

etMessage2.setText(beautify(strMsg2, "NORMAL")); //normal

}

return false; }

private Spanned beautify (String originalText, String selectedStyle) {

Spanned answer = null; if(selectedStyle.equals("BOLD"))

answer = Html.fromHtml("<b>"+ originalText+"</b"); else if(selectedStyle.equals("ITALIC"))

answer = Html.fromHtml("<i>"+ originalText+"</i>"); else if(selectedStyle.equals("NORMAL"))

answer = Html.fromHtml("<normal>"+ originalText+"</normal");

return answer; } //beautify

} Output

(68)

Option/Context Menu XML <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <EditText android:id="@+id/msg1" android:text="Hello World" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_margin = "5dp"> </EditText> <EditText android:id="@+id/msg2" android:text="Hola Mundo" android:layout_width="fill_parent" android:layout_height="wrap_content"

android:layout_margin = "5dp"> </EditText>

<TextView

android:text="Press the MENU key, or \nHold text-boxes" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center"/> </LinearLayout> Listing Program import android.app.Activity; import android.os.Bundle; import android.text.Html; import android.text.Spanned; import android.view.ContextMenu; import android.view.Menu; import android.view.MenuItem; import android.view.SubMenu; import android.view.View; import android.view.ContextMenu.ContextMenuInfo; import android.widget.EditText;

public class Opt2 extends Activity { EditText msg1;

EditText msg2;

Integer[] arrayPointSize = {10, 20, 30, 40, 50};

(69)

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); msg1 = (EditText)findViewById(R.id.msg1); msg2 = (EditText)findViewById(R.id.msg2); registerForContextMenu(msg1); registerForContextMenu(msg2); } @Override

public boolean onCreateOptionsMenu(Menu menu){ populateMyFirstMenu(menu);

return super.onCreateOptionsMenu(menu); }

@Override

public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo){ super.onCreateContextMenu(menu, v, menuInfo); if (v.getId() == msg1.getId()) populateMyFirstMenu(menu); if (v.getId() == msg2.getId()) populateMySecondMenu(menu); }

private void populateMyFirstMenu(Menu menu) { int groupId = 0;

MenuItem item1 = menu.add(groupId, 1, 1, "10 points"); MenuItem item2 = menu.add(groupId, 2, 2, "20 points"); MenuItem item3 = menu.add(groupId, 3, 3, "30 points"); MenuItem item4 = menu.add(groupId, 4, 4, "40 points"); MenuItem item6 = menu.add(groupId, 6, 8, "Red text"); MenuItem item7 = menu.add(groupId, 7, 7, "Green text");

MenuItem item8 = menu.add(groupId, 8, 6, "Blue text"); item1.setIcon(R.drawable.icon); item2.setIcon(R.drawable.icon); item3.setIcon(R.drawable.icon); item4.setIcon(R.drawable.icon); item1.setShortcut('1', '1'); item2.setShortcut('2', '2');

(70)

int smItemId = 5; int smOrder = 5; SubMenu mySubMenu =

menu.addSubMenu(smGroupId, smItemId, smOrder, "Sub-Menu"); mySubMenu.setHeaderIcon(R.drawable.icon); mySubMenu.setIcon(R.drawable.icon);

MenuItem sub1 = mySubMenu.add(smGroupId, 5, 1, "Sub Menu 5-1");

MenuItem sub2 = mySubMenu.add(smGroupId, 5, 2, "Sub Menu 5-2");

MenuItem sub3 = mySubMenu.add(smGroupId, 5, 3, "Sub Menu 5-3");

}

private void populateMySecondMenu(ContextMenu menu) { int groupId = 0; menu.add(groupId, 9, 1, "Bold"); menu.add(groupId, 10, 2, "Italic"); menu.add(groupId, 11, 3, "Normal"); } @Override

public boolean onContextItemSelected(MenuItem item){ return(applyMenuOption(item));

}

@Override

public boolean onOptionsItemSelected(MenuItem item){ return(applyMenuOption(item));

}

private boolean applyMenuOption(MenuItem item) { int menuItemId= item.getItemId(); String strMsg2 = msg2.getText().toString(); if(menuItemId <= 5) { int newPointSize= arrayPointSize[menuItemId-1]; msg1.setTextSize(newPointSize); msg2.setTextSize(newPointSize); } else if (menuItemId == 5)

msg1.setText("You have selected :\n" + item.getTitle()+ " Id : " + menuItemId); else if(menuItemId== 6) msg1.setTextColor(0xffff0000); else if(menuItemId== 7) msg1.setTextColor(0xff00ff00); else if(menuItemId== 8)

(71)

msg1.setTextColor(0xff0000ff); else if(menuItemId== 9) msg2.setText(beautify(strMsg2, "BOLD")); else if(menuItemId== 10) msg2.setText(beautify(strMsg2, "ITALIC")); else if(menuItemId== 11) msg2.setText(beautify(strMsg2, "NORMAL")); return false; }

private Spanned beautify(String originalText, String selectedStyle) { Spanned answer = null;

if(selectedStyle.equals("BOLD"))

answer = Html.fromHtml("<b>" + originalText + "</b");

else if(selectedStyle.equals("ITALIC"))

answer = Html.fromHtml("<i>" + originalText + "</i>");

else if(selectedStyle.equals("NORMAL")) answer = Html.fromHtml("<normal>" + originalText + "</normal");

return answer; Output

Menus 2

Another App Using Menus that include Icons & Text XML

(72)

android:layout_height="fill_parent" android:orientation="vertical" android:stretchColumns ="1,2,3" xmlns:android="http://schemas.android.com/apk/res/android" > <TableRow android:id="@+id/tableRow1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <TextView android:id="@+id/text0" android:layout_width="fill_parent" android:layout_height="100px" android:background="#ff006666" android:text="TextView" android:layout_span="3" > </TextView> </TableRow> <TableRow android:id="@+id/tableRow2" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <RelativeLayout android:id="@+id/myRelativeLayout" android:layout_width="wrap_content" android:layout_height="wrap_content" > <EditText android:id="@+id/text1" android:layout_width="fill_parent" android:layout_height="wrap_content"

android:hint="Type something..."

android:textSize="18sp" android:layout_alignTop="@+id/myRadioGroup" android:layout_alignBottom="@+id/myRadioGroup" android:layout_toRightOf="@+id/myRadioGroup" android:padding="10px" android:paddingLeft="20px"> </EditText> <RadioGroup android:id="@+id/myRadioGroup" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical"

(73)

android:layout_alignParentTop="true" android:layout_alignParentLeft="true" > <RadioButton android:id="@+id/radio1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Radio1"> </RadioButton> <RadioButton android:id="@+id/radio2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Radio2"dx> </RadioButton> </RadioGroup> </RelativeLayout> </TableRow> <TableRow android:id="@+id/tableRow3" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="#ffff9900" android:orientation="vertical" android:layout_weight="2" > <ListView android:id="@+id/list1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:isScrollContainer="true"> </ListView> </TableRow> </TableLayout> Listing Program import java.util.ArrayList; import android.app.Activity; import android.os.Bundle; import android.view.ContextMenu; import android.view.Menu; import android.view.MenuItem; import android.view.SubMenu; import android.view.View; import android.view.ContextMenu.ContextMenuInfo; import android.widget.ArrayAdapter;

(74)

public class Opt3 extends Activity { TextView text0; EditText text1; RadioButton radio1; RadioButton radio2; ListView list1; ArrayList<String> arrOptions; ArrayAdapter<String> adaOptions;

final int PICK1 = Menu.FIRST; final int PICK2 = Menu.FIRST + 1; final int PICK3 = Menu.FIRST + 2; final int PICK4 = Menu.FIRST + 3; @Override

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

setContentView(R.layout.main);

text0 = (TextView)findViewById(R.id.text0); text1 = (EditText)findViewById(R.id.text1); radio1 =(RadioButton)findViewById(R.id.radio1); radio2 =(RadioButton)findViewById(R.id.radio2); list1 = (ListView)findViewById(R.id.list1); arrOptions = new ArrayList<String>(); adaOptions = new ArrayAdapter<String>( this, R.layout.main1, arrOptions); list1.setAdapter(adaOptions);

registerForContextMenu(list1); registerForContextMenu(text1); }

@Override

public boolean onCreateOptionsMenu(Menu menu) {

super.onCreateOptionsMenu(menu);

MenuItem item1 = menu.add(0, PICK1, Menu.NONE, "Option UNO");

MenuItem item2 = menu.add(0, PICK2, Menu.NONE, "Option DOS");

MenuItem item3 = menu.add(0, PICK3, Menu.NONE, "Option TRES");

MenuItem item4 = menu.add(1, PICK4, Menu.NONE, "Option CUATRO"); //set icons item1.setIcon(R.drawable.icon); item2.setIcon(R.drawable.icon); item3.setIcon(R.drawable.icon); item4.setIcon(R.drawable.icon);

(75)

item1.setShortcut('1', 'u'); item2.setShortcut('2', 'd'); item3.setShortcut('3', 't'); item4.setShortcut('4', 'c');

SubMenu mySubMenu5 = menu.addSubMenu(0, 0, Menu.NONE, "Sub-Menu-CINCO");

mySubMenu5.setHeaderIcon(R.drawable.icon); mySubMenu5.setIcon(R.drawable.icon);

MenuItem sub51 = mySubMenu5.add(0,0,Menu.NONE,"Sub Menu 5-1");

MenuItem sub52 = mySubMenu5.add(0,0,Menu.NONE,"Sub Menu 5-2");

MenuItem sub53 = mySubMenu5.add(0,0,Menu.NONE,"Sub Menu 5-3");

return true; }

@Override

public boolean onOptionsItemSelected(MenuItem item) {

try {

super.onOptionsItemSelected(item); int itemID = item.getItemId();

//title to display is taken from current menu item

String msg= item.getTitle().toString();

//add selection to historical array and show in listview

arrOptions.add(msg);

adaOptions.notifyDataSetChanged(); //values in the green TextView box include:

msg += "\n" + "radio1: " + Boolean.toString(radio1.isChecked());

msg += "\n" + "radio2: " + Boolean.toString(radio2.isChecked());

msg += "\n" + "Text: " + text1.getText();

text0.setText("Menu: " + msg); } catch (Exception e) { text0.setText(e.getMessage()); } return false; }

public void onCreateContextMenu(ContextMenu menu, View v,

(76)

menu.add(0, PICK1, Menu.NONE, "Option-1 UNO special"); menu.add(0, PICK2, Menu.NONE, "Option-2 DOS special"); }

@Override

public boolean onContextItemSelected(MenuItem item) { super.onContextItemSelected(item); String msg = item.getTitle().toString(); text0.setText(msg); arrOptions.add(msg); adaOptions.notifyDataSetChanged(); return false; } } Output

(77)
(78)

Intents

Android Activity

Sebuah aplikasi Android dapat mencakup sejumlah activity : • Suatu activity menggunakan metode setContentView (...) untuk mengekspos (biasanya) UI tunggal dari mana sejumlah tindakan bisa dilakukan.

• Kegiatan yang independen satu sama lain, namun mereka biasanya bekerja sama pertukaran data dan tindakan.

• Biasanya, salah satu kegiatan yang ditetapkan sebagai yang pertama (utama) yang harus disajikan kepada pengguna saat aplikasi

diluncurkan.

• Pindah dari satu aktivitas ke aktivitas lainnya dilakukan dengan menanyakan kegiatan saat ini untuk menjalankan suatu niat. • Kegiatan berinteraksi satu sama lain dalam mode asynchronous.

Argumen utama dari sebuah Intent adalah:

1. Action built-in untuk dilakukan, seperti ACTION_VIEW,

ACTION_EDIT, ACTION_MAIN, ... atau yang dibuat pengguna-aktivitas 2. Data data primer untuk beroperasi pada, seperti nomor telepon untuk dipanggil (dinyatakan sebagai Uri a).

(79)
(80)

Complete Example XML <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:id="@+id/label1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="#ff0000cc"

android:text="This is Activity1"

android:textStyle="bold" android:textSize="20sp" /> <EditText android:id="@+id/text1" android:layout_width="fill_parent" android:layout_height="54px" android:text="tel:555-1234"

(81)

android:textSize="18sp" /> <Button

android:id="@+id/btnCallActivity2"

android:layout_width="149px"

android:layout_height="wrap_content"

android:text="Make Phone Call"

android:textStyle="bold"/> </LinearLayout> Listing Program import android.app.Activity; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; public class intents1 extends Activity {

TextView label1; EditText text1; Button btnCallActivity2; @Override

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

setContentView(R.layout.main); try {

setContentView(R.layout.main);

label1 = (TextView)findViewById(R.id.label1); text1 = (EditText)findViewById(R.id.text1);

btnCallActivity2 = (Button)findViewById(R.id.btnCallActivity2); btnCallActivity2.setOnClickListener(new ClickHandler()); }

catch (Exception e) {

Toast.makeText(getBaseContext(), e.getMessage(), Toast.LENGTH_LONG).show();

} }

private class ClickHandler implements OnClickListener { public void onClick(View v) {

(82)

startActivity(myActivity2); }

catch (Exception e) {

Toast.makeText(getBaseContext(), e.getMessage(),

Toast.LENGTH_LONG).show(); } } } } Output Intents 2 Android Intents

Kegiatan biasanya menyajikan antarmuka pengguna tunggal visual dari mana nomor dari

tindakan dapat dilakukan.

Pindah dari satu aktivitas ke aktivitas lainnya dilakukan dengan memiliki aktivitas saat memulai yang berikutnya melalui maksud disebut.

Android Bundles

Bahasa pemrograman yang paling mendukung gagasan metode panggilan-IPC dengan argumen yang mengalir birectionally dari pemanggil dengan metode dipanggil.

(83)

menggunakan objek Intent.

Khususnya di Android, penelepon tidak berhenti menunggu kegiatan dipanggil untuk kembali hasil. Sebaliknya sebuah listeningmethod [onActivityResult (...)] harus digunakan.

Android Bundles

Biasanya ekspresi IPC daftar parameter aktual, dan daftar parameter formal digunakan untuk ditunjuk tanda tangan dari argumen particpating, dan data ini disuplai.

Alih-alih menggunakan daftar parameter formal yang tradisional /

aktual, Android bergantung pada konsep Intents untuk mendirikan

Inter-processcommunication. Maksud opsional membawa daftar nama yang sebenarnya atau bundel untuk pertukaran data.

(84)
(85)
(86)
(87)

Preferences

Android menyediakan empat mekanisme berikut untuk menyimpan dan mengambil data:

1. preferensi, 2. file,

3. Database, dan 4. Jaringan.

Preferences merupakan mekanisme ringan Android untuk menyimpan dan mengambil pasangan kunci-nilai tipe data primitif (Peta juga disebut, dan Array asosiatif.

Biasanya digunakan untuk menyimpan informasi negara dan data bersama antara kegiatan beberapa aplikasi.

Pada setiap value> entri <key kuncinya adalah string dan nilai harus menjadi tipe data primitif.

Preferensi mirip dengan Kumpulan namun mereka yang gigih sementara Bundel tidak.

Using Preferences API calls

Anda memiliki pilihan untuk memilih API tiga Preferensi suatu: 1. getPreferences () dari dalam Kegiatan Anda, untuk mengakses preferensi aktivitas spesifik

2. getSharedPreferences () dari dalam Aktivitas Anda untuk mengakses aplikasi-tingkat preferensi

3. getDefaultSharedPreferences (), pada PreferencesManager, untuk mendapatkan preferensi bersama yang bekerja di konser dengan kerangka preferensi keseluruhan Android

(88)
(89)
(90)
(91)
(92)

Example 2 XML

<LinearLayoutandroid:layout_width="fill_parent" android:layout_height="fill_parent"

xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/LinLayout1Vertical"

android:orientation="vertical">

<LinearLayoutandroid:layout_height="wrap_content" android:id="@+id/LinLayout2Horizontal" android:layout_width="fill_parent"> <Buttonandroid:layout_width="wrap_content"

android:layout_height="wrap_content" android:id="@+id/btnPrefSimple" android:text="Pref Simple UI"/> <Buttonandroid:layout_width="wrap_content"

android:layout_height="wrap_content" android:id="@+id/btnPrefFancy" android:text="Pref Fancy UI"/> </LinearLayout>

<TextViewandroid:layout_height="wrap_content" android:layout_width="fill_parent" android:background="#ff006666" android:id="@+id/txtCaption1" android:text="This is some sample text"/> </LinearLayout>

Listing Program

import android.app.Activity; import android.os.Bundle;

(93)

import java.util.Date; import android.content.SharedPreferences; import android.graphics.Color; import android.graphics.Typeface; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; import android.widget.Toast;

public class tujuhduapreferen extends Activity implements OnClickListener {

Button btnSimplePref; Button btnFancyPref; TextView txtCaption1;

Boolean fancyPrefChosen = false; View myLayout1Vertical;

final int mode = Activity.MODE_PRIVATE; final String MYPREFS = "MyPreferences_001"; SharedPreferences mySharedPreferences; SharedPreferences.Editor myEditor; @Override

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

setContentView(R.layout.main);

myLayout1Vertical = (View)findViewById(R.id.LinLayout1Vertical); txtCaption1 = (TextView) findViewById(R.id.txtCaption1); txtCaption1.setText("This is a sample line \n“"

+ "suggesting the way the UI looks \n" + "after you choose your preference"); mySharedPreferences = getSharedPreferences(MYPREFS, 0); myEditor = mySharedPreferences.edit();

if (mySharedPreferences != null

&& mySharedPreferences.contains("backColor")) {

applySavedPreferences(); }

else {

Toast.makeText(getApplicationContext(),

"No Preferences found", 1).show(); }

btnSimplePref = (Button) findViewById(R.id.btnPrefSimple); btnSimplePref.setOnClickListener(this);

(94)

public void onClick(View v) {

myEditor.clear();

if (v.getId() == btnSimplePref.getId()) {

myEditor.putInt("backColor", Color.BLACK);// black background

myEditor.putInt("textSize", 12); // humble small font

} else {

myEditor.putInt("backColor", Color.BLUE); // fancy blue

myEditor.putInt("textSize", 20); // fancy big

myEditor.putString("textStyle", "bold"); // fancy bold

myEditor.putInt("layoutColor", Color.GREEN);//fancy gree

}

myEditor.commit(); applySavedPreferences(); }

protected void onPause() {

myEditor.putString("DateLastExecution", new Date().toLocaleString());

myEditor.commit(); super.onPause(); }

public void applySavedPreferences() {

// extract the <key/value> pairs, use default param for missing data

int backColor = mySharedPreferences.getInt("backColor",Color.BLACK); int textSize = mySharedPreferences.getInt("textSize", 12);

String texStyle = mySharedPreferences.getString("textStyle", "normal"); int layoutColor = mySharedPreferences.getInt("layoutColor",Color.DKGRAY); String msg = "color " + backColor + "\n"+ "size " + textSize + "\n"

+ "style " + textStyle;Toast.makeText(getApplicationContext(), msg, 1).show();

txtCaption1.setBackgroundColor(backColor);txtCaption1.setTextSize(textSize);i f (textStyle.compareTo("normal")==0)

{

txtCaption1.setTypeface(Typeface.SERIF,Typeface.NORMAL); }

else {

txtCaption1.setTypeface(Typeface.SERIF,Typeface.BOLD); }

myLayout1Vertical.setBackgroundColor(layoutColor);}} Output

(95)

Example 3

XML

<LinearLayoutandroid:layout_width="fill_parent" android:layout_height="fill_parent"

xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/LinLayout1"

android:background="#ff0000ff" android:orientation="vertical"> <TextViewandroid:layout_height="wrap_content"

android:layout_width="fill_parent" android:id="@+id/captionBox"

android:text="SharePreferences Container: Customer Data" android:layout_margin="5px"

android:textStyle="bold"> </TextView>

<EditTextandroid:layout_height="wrap_content" android:id="@+id/txtPref" android:layout_width="fill_parent" android:layout_margin="10px"> </EditText> </LinearLayout> Listing Program import java.sql.Date; import android.app.Activity; import android.os.Bundle; import android.content.SharedPreferences; import android.widget.*;

(96)

long custNumber = 0; String custDateLastCall; TextView captionBox; EditText txtPref;

final int mode = Activity.MODE_PRIVATE; @Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState); setContentView(R.layout.main);

txtPref = (EditText)findViewById(R.id.txtPref); captionBox = (TextView) findViewById(R.id.captionBox); captionBox.setText("SharedPreference Container: \n\n"+ "we are working on customer Macarena \n" + "fake an interruption, press 'Back Button' \n" + "re-execute the application.");

int mode = Activity.MODE_PRIVATE; SharedPreferences mySharedPreferences = getSharedPreferences(MYPREFS, mode); if (mySharedPreferences != null &&

mySharedPreferences.contains("custName")) { showSavedPreferences(); } else {

txtPref.setText("nada"); }

} @Override

protected void onPause() { savePreferences(); super.onPause(); }

protected void savePreferences() {

SharedPreferences mySharedPreferences =

getSharedPreferences(MYPREFS, mode);

SharedPreferences.Editor myEditor = mySharedPreferences.edit(); myEditor.putString("custName", "Maria Macarena");

myEditor.putInt("custAge", 21);

myEditor.putFloat("custCredit", 1500000.00F); myEditor.putLong("custNumber", 9876543210L); myEditor.putString("custDateLastCall", new Date(custNumber).toLocaleString());

myEditor.commit(); }//savePreferences

public void showSavedPreferences() {

(97)

SharedPreferences mySharedPreferences = getSharedPreferences(MYPREFS, mode);

custName =

mySharedPreferences.getString("custName", "defNameValue");

custAge = mySharedPreferences.getInt("custAge", 18);

custCredit = mySharedPreferences.getFloat("custCredit", 1000.00F);

custNumber =

mySharedPreferences.getLong("custNumber", 1L);

custDateLastCall =

mySharedPreferences.getString("custDateLastCall",new Date(mode).toLocaleString());

String msg = "name: " + custName + "\nAge: " + custAge

+ "\nCredit: " + custCredit + "\nLastCall: " + custDateLastCall; txtPref.setText(msg); }} Output

(98)
(99)

File

Data anda pilihan penyimpanan adalah sebagai berikut:

1. Shared PreferencesStore primitif swasta dalam pasangan kunci-nilai.

2. Internal StorageStore data pribadi pada memori perangkat. 3. Eksternal StorageStore data publik pada penyimpanan eksternal bersama.

4. SQLiteDatabasesStore data terstruktur dalam database pribadi. 5. Network ConnectionStore data pada web dengan server jaringan Anda sendiri.

Example 2 XML

<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="vertical"> <Buttonandroid:id="@+id/close"

(100)

android:layout_width="fill_parent" android:layout_height="fill_parent" android:singleLine="false" android:gravity="top" /> </LinearLayout> Listing Program import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class files extends Activity {

private final static String NOTES="notes.txt"; private EditText editor;

@Override

public void onCreate(Bundle icicle) { super.onCreate(icicle);

setContentView(R.layout.main);

editor=(EditText)findViewById(R.id.editor); Button btn=(Button)findViewById(R.id.close); btn.setOnClickListener(new Button.OnClickListener() {

public void onClick(View v) { finish(); } }); } } Output

(101)

Example 3 XML <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/widget28" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#ff0000ff" android:orientation="vertical" > <EditText android:id="@+id/txtData" android:layout_width="fill_parent" android:layout_height="180px"

android:text="Enter some data here ..."

android:textSize="18sp"/> <Button

android:id="@+id/btnWriteSDFile"

android:layout_width="143px"

android:layout_height="44px"

android:text="1. Write SD File"/> <Button

android:id="@+id/btnClearScreen"

android:layout_width="141px"

android:layout_height="42px"

(102)

android:text="3. Read SD File"/> <Button android:id="@+id/btnClose" android:layout_width="141px" android:layout_height="43px" android:text="4. Close"/> </LinearLayout>

(103)
(104)
(105)
(106)
(107)

SQL Database

1. SQLite mengimplementasikan sebagian besar standar

SQL-92 untuk SQL.

2. Hal ini memiliki dukungan parsial untuk memicu dan

memungkinkan query yang paling kompleks (kecuali dibuat untuk bergabung luar).

3. SQLite tidak menerapkan batasan integritas referensial

melalui model kendala kunci asing.

4. SQLite menggunakan model data yang mengetik santai.

5. Alih-alih menetapkan jenis untuk seluruh kolom, jenis

ditugaskan untuk nilai-nilai individu. Hal ini mirip dengan tipe Variant dalam Visual Basic.

6. Oleh karena itu memungkinkan untuk memasukkan string

(108)

Referensi

Dokumen terkait

Konsentrasi merkuri total yang terdapat di dalam bahan tanah dengan perlakuan bioamelioran (perlakuan C) lebih tinggi jika dibandingkan perlakuan pemberian NPK 15- 15-15

Hasil penelitian ini menunjukkan bahwa penambahan ekstrak daun beluntas dan kulit manggis pada produksi telur itik asin berpengaruh nyata terhadap preferensi

Oleh karena rasanya yang pahit, hanya sebagian orang saja yang mengkonsumsi daunnya, sebagian besar yang lain memilih untuk tidak mengkonsumsinya. Padahal kita

Therefore, the main focus on research is how genre study can help ESL writers overcome the challenges and meet the requirements and expectations of their

Dengan lirik berbahasa Inggris, Bad Ass menjadi cerminan generasi milenia yang tanpa malu-malu telah menyerap segala sesuatu yang ditolak oleh kaum konservatif sebagai Indonesia,

Pada penelitian ini, penulis memaparkan data yang berhubungan dengan penerapan kombinasi metode inkuiri dan pengajaran timbal balik, terhadap pemahaman konsep dan

Mata kuliah Translation ini merupakan mata kuliah keahlian bagi mahasiswa Program Studi bahasa Inggris FKIP UNRI, yang bertujuan untuk memberikan dan membekali mahasiswa

Puji dan syukur penulis ucapkan kepada Allah SWT atas rahmat dan karunia yang dilimpahkan-Nya, sehingga proposal skripsi yang berjudul “Pengaruh Penggunaan Metode Akad Wadiah