LAPORAN SEMENTARA
MODUL 3
PROGRAM TIMER ANDROID STUDIO
“APLIKASI TIMER COUNT DOWN”
NAMA : Priyo Budi Anggono
NIM : 40040318650030
1. MainActivity.java
Script Code MainActivity.java :
package com.example.priyopraktikum3;
import android.os.Bundle;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.android.material.snackbar.Snackbar;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import java.util.Locale;
public class MainActivity extends AppCompatActivity {
private static final long START_TIME_IN_MILLIS = 600000;
private TextView DisplayCountDown;
private Button TombolStart;
private Button TombolReset;
private android.os.CountDownTimer CountDownTimer;
private boolean TimerRunning;
private long TimeLeftInMillis = START_TIME_IN_MILLIS;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
DisplayCountDown = findViewById(R.id.display);
TombolStart = findViewById(R.id.btnstart);
TombolReset = findViewById(R.id.btnreset);
TombolStart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (TimerRunning) {
pauseTimer();
} else {
startTimer();
}
}
});
TombolReset.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
resetTimer();
}
});
updateCountDownText();
}
private void startTimer() {
CountDownTimer = new CountDownTimer(TimeLeftInMillis, 1000) {
@Override
public void onTick(long millisUntilFinished) {
TimeLeftInMillis = millisUntilFinished;
updateCountDownText();
}
@Override
public void onFinish() { TimerRunning = false;
TombolStart.setText("Start");
TombolStart.setVisibility(View.INVISIBLE);
TombolReset.setVisibility(View.VISIBLE);
}
}.start(); TimerRunning = true;
TombolStart.setText("pause");
TombolReset.setVisibility(View.INVISIBLE);
}
private void pauseTimer() {
CountDownTimer.cancel();
TimerRunning = false;
TombolStart.setText("Start");
TombolReset.setVisibility(View.VISIBLE);
}
private void resetTimer() {
TimeLeftInMillis = START_TIME_IN_MILLIS;
updateCountDownText();
TombolReset.setVisibility(View.INVISIBLE);
TombolReset.setVisibility(View.VISIBLE);
}
private void updateCountDownText() {
int minutes = (int) (TimeLeftInMillis / 1000) / 60;
int seconds = (int) (TimeLeftInMillis / 1000) % 60;
String timeLeftFormatted = String.format(Locale.getDefault(), "%02d:%02d",
minutes, seconds);
DisplayCountDown.setText(timeLeftFormatted);
}
}
2. activity_main.xml
Design dan Script Code activity_main.xlm :
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<Button android:id="@+id/btnstart"
android:layout_width="88dp"
android:layout_height="48dp"
android:layout_marginStart="161dp"
android:layout_marginTop="69dp"
android:layout_marginEnd="162dp"
android:layout_marginBottom="37dp"
android:text="Start"
app:layout_constraintBottom_toTopOf="@+id/btreset"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/display"
android:layout_marginLeft="161dp"
android:layout_marginRight="162dp"
tools:ignore="UnknownId" />
<Button
android:id="@+id/btnreset"
android:layout_width="wrap_content"
android:layout_height="48dp"
android:layout_marginStart="161dp"
android:layout_marginTop="32dp"
android:layout_marginEnd="162dp"
android:layout_marginBottom="64dp"
android:text="Reset"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/btnstart"
android:layout_marginRight="162dp"
android:layout_marginLeft="161dp" />
<TextView android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_marginTop="32dp"
android:text="Program Timer Count Down"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:textSize="20sp"/>
<TextView
android:id="@+id/display"
android:layout_width="157dp"
android:layout_height="80dp"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:layout_marginStart="176dp"
android:layout_marginTop="291dp"
android:layout_marginEnd="176dp"
android:layout_marginBottom="57dp"
android:text="00:00"
android:textColor="@color/black"
android:textSize="60sp"
app:layout_constraintBottom_toTopOf="@+id/btnstart"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView2" />
</androidx.constraintlayout.widget.ConstraintLayout>
3. Hasil Simulasi
Tampilan Awal Tampilan Ketika Start
Tampilan Ketika Pause Tampilan Ketika Reset
Ulasan :
1. Dalam praktikum Modul 3 ini menggunakan template yang telah tersedia di Android
Studio, yaitu Empty Activity. Dengan template itu, kita dapat menambah design dan
code sesuka kita. Dalam membuat aplikasi Timer Count Down, hanya membutuhkan
Text View dan Button. Text View berguna untuk menampilkan angka Timer pada
aplikasi, dan Button untuk mengoperasikan nya.
2. MainActivity.java digunakan untuk memberi inputan dan menjalankan variable
(display timer, button start, dan button reset) yang akan gunakan pada program aplikasi
Timer Count down.
3. Activity_main.xml digunakan Untuk mengedit dengan mengatur ukuran, mengubah
posisi, dan memberi nama pada teks “Program Timer Countdown”, display timer,
tombol “START” yang apabila tombol diklik maka TIMER akan berjalan dan tombol
“RESET” apabila tombol diklik maka TIMER akan mereset hasil pause seperti semula.
Kesimpulan :
Kesimpulan yang dapat diambil dari Modul 3 tentang percobaan Aplikasi Timer Count Down,
yaitu :
1. MainActivity.java digunakan untuk memberi inputan dan menjalankan variable
(display timer, button start, dan button reset) yang akan gunakan pada program aplikasi
Timer Count down.
2. Activity_main.xml digunakan Untuk mengedit dengan mengatur ukuran, mengubah
posisi, dan memberi nama pada teks “Program Timer Countdown”, display timer,
tombol “START” yang apabila tombol diklik maka TIMER akan berjalan dan tombol
“RESET” apabila tombol diklik maka TIMER akan mereset hasil pause seperti semula.