Modul
2
WIDGET
Tujuan
Praktikan diharapkan dapat menggunakan Android Studio untuk membuat program sederhana pada
smartphone/ emulator. Di akhir praktikum ini, praktikan diharapkan:
Persiapan
1. Buku ajar (jika ada)/diktat kuliah/materi dari sumber lain
2. Alat tulis
3. Kertas Buram
4. Lembar jawaban
5. Lembar penilaian (disiapkan oleh asisten)
6. Komputer yang sudah di-install Android Studio & Emulator didalamnya
7. Android Smartphone (Jika tidak menginstall emulator)
Materi Pokok
Praktikum ini mengasumsikan bahwa praktikan telah mempelajari macam-macam widget pada
Android. Praktikum ini mengasumsikan bahwa mahasiswa telah mempelajari berbagai jenis dan
komponen widget dengan benar beserta dengan cara-cara penginputan datan dan pemasangannya.
Praktikan diharapkan mampu menggunakan setiap widget yang dipilih/digunakan dalam program.
Selain itu praktikan diharapkan mampu mengombinasikan berbagai komponen widget yang dapat
digunakan untuk setiap widget tersebut. Agar mahasiswa dapat mencapai tujuan dalam pertemuan
praktikum ketiga ini, mahasiswa harus aktif dalam membuat program dan menyelesaikan setiap
kasus serta mencoba mempraktekkan tugas-tugas dalam praktikum ini.
9
Proses
Praktikan membuat sebuah project atau menyelesaikan sebuah studi kasus yang berhubungan
dengan widget dan bisa melakukan pemasangannya, kemudian mahasiswa dapat menggunakan
komponen-komponen widget untuk melakukan proses penginputan maupun pengeluaran data dan
mempelajari struktur komponen widget dalam program Java Android dengan melihat source code
program Java, kemudian berdiskusi sesuai dengan panduan aktifitas yang ada. Sedangkan waktu
untuk mengerjakan project (membuat program/coding) secara individual harus diselesaikan di
dalam laboratorium dalam waktu 40 menit. Berikutnya untuk sesi latihan, ada soal tentang
pengembangan program yang juga harus diselesaikan di laboratorium dalam waktu 60 menit.
Terakhir adalah bagian tugas, yaitu project yang dikerjakan dirumah dan wajib dikumpulkan pada
pertemuan berikutnya.
Aktivitas
1. Mahasiswa membaca buku ajar (jika ada)/ diktat kuliah/materi dari sumber lain tentang Widget
/ widget view sebagai materi bab kedua. Temukan bagian penting dalam topik Komponen Dasar
Swing ini, kemudian tulis sebagai ringkasan hasil belajar.
2. Widget merupakan tampilan aplikasi mini yang dapat disematkan dalam aplikasi lain (seperti
Layar utama) dan menerima update berkala. Tampilan ini disebut sebagai Widget dalam
antarmuka pengguna, dan Anda dapat memublikasikannya dengan penyedia Widget Aplikasi.
3. Berikut adalah beberapa komponen dari widget pada pemrograman perangkat bergerak:
● TextView
● EditText
● Button
activity_main.xml
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<Button
android:id="@+id/btnSave"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Save" />
<Button
android:id="@+id/btnOpen"
android:layout_width="wrap_content"
10
android:layout_height="wrap_content"
android:text="Open" />
<ImageButton
android:id="@+id/img1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:src="@drawable/ic_launcher_background" />
<EditText
android:id="@+id/txtName"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<CheckBox
android:id="@+id/chkAutoSave"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="AutoSave" />
<CheckBox
android:id="@+id/star"
style="?android:attr/starStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<RadioGroup
android:id="@+id/rdGp1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<RadioButton
android:id="@+id/rdb1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Option1" />
<RadioButton
android:id="@+id/rdb2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Option2" />
</RadioGroup>
<ToggleButton
android:id="@+id/toggle1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
MainActivity.java
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Toast;
import android.widget.ToggleButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
11
setContentView(R.layout.activity_main);
//button view
Button btnOpen = (Button) findViewById(R.id.btnOpen);
btnOpen.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
DisplayToast("You have click the Open button");
}
});
Button btnSave = (Button) findViewById(R.id.btnSave);
btnSave.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
DisplayToast("You have click the Save Button");
}
});
CheckBox checkBox = (CheckBox)findViewById(R.id.chkAutoSave);
checkBox.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if (((CheckBox)v).isChecked())
DisplayToast("Chekbox is checked");
else
DisplayToast("Checkbox is unchecked");
}
});
RadioGroup radioGroup =(RadioGroup)findViewById(R.id.rdGp1);
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group,int checkedId) {
RadioButton rb1 = (RadioButton)findViewById(R.id.rdb1);
if (rb1.isChecked()) {
DisplayToast("Option 1 is checked");
}
else{
DisplayToast("Option 2 is checked");
}
}
});
ToggleButton toggleButton = (ToggleButton) findViewById(R.id.toggle1);
toggleButton.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v) {
if (((ToggleButton)v).isChecked())
DisplayToast("Toggle button is On");
else
DisplayToast("Toggle button is Off");
}
});
}
private void DisplayToast(String msg) {
Toast.makeText(getBaseContext(), msg, Toast.LENGTH_SHORT).show();
}
}
12
● Bila sudah selesai menyesuaikan semua kode, coba jalankan projek dan hasil dari
tampilan utamanya akan menjadi seperti berikut,
● Langkah berikutnya, buatlah sebuah file .xml bernama cell.xml kedalam folder
/res/drawable dengan mengikuti Langkah-langkahnya seperti berikut,
⮚ Klik kanan folder drawable dan pilih New -> Drawable Resources File.
⮚ Setelah itu kita akan diarahkan ke halaman pop-up untuk konfigurasi file
.xml yang akan dibuat. Beri nama cell.xml untuk projek kita dan klik OK.
13
● Jika sudah selesai dibuat, sesuaikan kode didalam cell.xml seperti berikut,
cell.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<ImageView
android:id="@+id/imageView1"
android:layout_width="88dp"
android:layout_height="122dp"
android:layout_gravity="center_horizontal" />
<TextView
android:id="@+id/keterangan"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="keterangan" />
</LinearLayout>
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<GridView
android:id="@+id/grid"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:columnWidth="100dip"
android:gravity="center"
android:horizontalSpacing="5dip"
android:numColumns="auto_fit"
android:stretchMode="columnWidth"
android:verticalSpacing="40dip" />
</LinearLayout>
14
MainActivity.java
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
GridView g = (GridView) findViewById(R.id.grid);
// set adapter gridview
g.setAdapter(new IconAdapter());
// beri action saat click
g.setOnItemClickListener((AdapterView.OnItemClickListener) this);
}
● Setelah selesai membuat activity baru, AS akan membuat 2 file baru yaitu
activity_splash.xml dan Splash.java secara otomatis.
● Buka activity_splash.xml dan sesuaikan kodenya menjadi seperti berikut
activity_splash.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/kk" >
<ProgressBar
android:id="@+id/progressBar1"
style="?android:attr/progressBarStyleLarge"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="164dp" />
</RelativeLayout>
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<EditText
android:id="@+id/editTextTanggal"
17
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginTop="16dp"
android:ems="10"
android:hint="Tanggal" >
<requestFocus />
</EditText>
<EditText
android:id="@+id/editTextJam"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/editTextTanggal"
android:layout_marginTop="17dp"
android:ems="10"
android:hint="Jam" />
</RelativeLayout>
Splash.java
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Window;
MainActivity.java
import androidx.appcompat.app.AppCompatActivity;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.app.TimePickerDialog;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
18
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.TimePicker;
import java.util.Calendar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final Calendar c = Calendar.getInstance();
hari = c.get(Calendar.DAY_OF_MONTH);
bulan = c.get(Calendar.MONTH);
tahun = c.get(Calendar.YEAR);
edtTanggal = (EditText) findViewById(R.id.editTextTanggal);
edtJam = (EditText) findViewById(R.id.editTextJam);
edtTanggal.setOnTouchListener(new View.OnTouchListener() {
@SuppressWarnings("deprecation")
@Override
public boolean onTouch(View v, MotionEvent event) {
showDialog(0);
return true;
}
});
edtJam.setOnTouchListener(new View.OnTouchListener() {
@SuppressWarnings("deprecation")
@Override
public boolean onTouch(View v, MotionEvent event) {
showDialog(1);
return true;
}
});
}
● Lalu yang terdapat file penting yang harus disesuaikan juga yaitu
AndroidManifest.xml dimana kita perlu membuat activity Splash untuk berjalan
pertama kali ketika aplikasi dibuka.
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.elreginaldcaesarosan.uas.latihampertemuan2_3">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".Splash">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
</manifest>
Membuat ListActivity
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<!--List View -->
<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="17dp"
android:id="@+id/list_view"
/>
<TextView
android:text="Pilih Mata Kuliah :"
android:textStyle="bold"
android:layout_marginBottom="16dp"
android:layout_alignParentTop="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentStart="true"
android:id="@+id/textView"/>
</RelativeLayout>
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
@Override
public void onItemClick(AdapterView<?> parent, View view, int
position, long id) {
Toast.makeText(MainActivity.this, "Memilih : "
+ MataKuliah[position], Toast.LENGTH_LONG).show();
}
});
}
}
Latihan
Buatlah sebuah list bertingkat dengan tingkatan sebagai berikut,
List Genre Buku -> GridView Buku sesuai genre yang dipilih -> Detail Buku
22
Penutup
Tugas
Buatlah sebuah aplikasi untuk menghitung BP (Battle Power) dari Hero yang kalian inputkan dengan
tampilan sebagai berikut!
Petunjuk :