Android merupakan bukan hal yang baru bagi masyarakat, OS buatan raksasa internet saat ini yaitu GOOGLE peran nya sangat penting dalam dunia teknologi saat ini. Mulai dari pelajar sampai orang pekerja pasti bisa menjalankan sistem operasi satu ini.
kali ini saya akan membuat suatu aplikasi yang dimana berguna untuk sistem absensi siswa.
mari kita mulai.
- AndroidManifest
| androidManifest |
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.projek.rekkyar"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="KAMMI" android:roundIcon="@drawable/teamwork" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".AbsenActivity"></activity> <activity android:name=".RegisterActivity" /> <activity android:name=".LoginActivity" /> <activity android:name=".SplashActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.DETAIL" /> <category android:name="android intent.category.DETAIL" /> </intent-filter> <meta-data android:name="android.support.PARENT_ACTIVITY" android:value="MainActivity" /> </activity> </application> <uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.INTERNET" /> </manifest>
- MAINACTIVITY
| mainActivity |
package com.projek.rekkyar;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.text.Layout;
import android.view.AbsSavedState;
import android.view.View;
import android.widget.ImageView;
import android.widget.Toast;
import com.google.firebase.auth.FirebaseAuth;
public class MainActivity extends AppCompatActivity {
private ImageView loginphoto;
private ImageView iv;
private Object ImageView;
FirebaseAuth MFirebaseAuth;
private FirebaseAuth.AuthStateListener mAuthStateListener;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ImageView = (ImageView)findViewById(R.id.ivadmin);
iv =(ImageView)findViewById(R.id.ivadmin);
iv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(MainActivity.this, LoginActivity.class);
startActivity(i);
}
});
ImageView =(ImageView)findViewById(R.id.ivlogout);
iv =(ImageView)findViewById(R.id.ivlogout);
iv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FirebaseAuth.getInstance().signOut();
Intent i = new Intent(MainActivity.this, LoginActivity.class);
startActivity(i);
}
});
ImageView =(ImageView)findViewById(R.id.ivdata);
iv =(ImageView)findViewById(R.id.ivdata);
iv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(MainActivity.this, AbsenActivity.class);
startActivity(i);
}
});
}
}
- MAINXML
<?xml version="1.0" encoding="utf-8"?>
<ScrollView
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:background="@drawable/bgapps"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="32dp"
android:layout_marginRight="20dp"
android:layout_marginLeft="20dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="RECKY ARIANTO"
android:textSize="25sp"
android:textColor="#ffff"
android:textStyle="bold"
android:id="@+id/txtproject"/>
<TextView
android:text="161021450265"
android:layout_below="@+id/txtproject"
android:layout_marginTop="6dp"
android:textSize="15sp"
android:textColor="#52baff"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<ImageView
android:id="@+id/login_photo"
android:layout_width="62dp"
android:layout_height="62dp"
android:layout_alignParentRight="true"
android:src="@drawable/teamwork" />
</RelativeLayout>
<GridLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:alignmentMode="alignMargins"
android:columnOrderPreserved="false"
android:rowCount="3"
android:columnCount="2">
<androidx.cardview.widget.CardView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_columnWeight="1"
android:layout_rowWeight="1"
app:cardElevation="10dp"
app:cardCornerRadius="12dp"
android:layout_margin="12dp">
<LinearLayout
android:id="@+id/acadmin"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical"
android:padding="16dp">
<ImageView
android:id="@+id/ivadmin"
android:layout_width="80dp"
android:layout_height="80dp"
android:src="@drawable/admin" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:text="ADMIN"
android:textColor="#6f6f6f"
android:textSize="18sp" />
</LinearLayout>
</androidx.cardview.widget.CardView>
<androidx.cardview.widget.CardView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_columnWeight="1"
android:layout_rowWeight="1"
app:cardElevation="10dp"
app:cardCornerRadius="12dp"
android:layout_margin="12dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="16dp"
android:gravity="center">
<ImageView
android:id="@+id/ivdata"
android:layout_width="80dp"
android:layout_height="80dp"
android:src="@drawable/contact" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="18sp"
android:layout_marginTop="12dp"
android:textColor="#6f6f6f"
android:text="DATA"/>
</LinearLayout>
</androidx.cardview.widget.CardView>
<androidx.cardview.widget.CardView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_columnWeight="1"
android:layout_rowWeight="1"
app:cardElevation="10dp"
app:cardCornerRadius="12dp"
android:layout_margin="12dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="16dp"
android:gravity="center">
<ImageView
android:layout_width="80dp"
android:layout_height="80dp"
android:src="@drawable/bookmark"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="18sp"
android:layout_marginTop="12dp"
android:textColor="#6f6f6f"
android:text="ADMIN"/>
</LinearLayout>
</androidx.cardview.widget.CardView>
<androidx.cardview.widget.CardView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_columnWeight="1"
android:layout_rowWeight="1"
app:cardElevation="10dp"
app:cardCornerRadius="12dp"
android:layout_margin="12dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="16dp"
android:gravity="center">
<ImageView
android:layout_width="80dp"
android:layout_height="80dp"
android:src="@drawable/bookmark"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="18sp"
android:layout_marginTop="12dp"
android:textColor="#6f6f6f"
android:text="ADMIN"/>
</LinearLayout>
</androidx.cardview.widget.CardView>
<androidx.cardview.widget.CardView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_columnWeight="1"
android:layout_rowWeight="1"
app:cardElevation="10dp"
app:cardCornerRadius="12dp"
android:layout_margin="12dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="16dp"
android:gravity="center">
<ImageView
android:layout_width="80dp"
android:layout_height="80dp"
android:src="@drawable/bookmark"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="18sp"
android:layout_marginTop="12dp"
android:textColor="#6f6f6f"
android:text="ADMIN"/>
</LinearLayout>
</androidx.cardview.widget.CardView>
<androidx.cardview.widget.CardView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_columnWeight="1"
android:layout_rowWeight="1"
app:cardElevation="10dp"
app:cardCornerRadius="12dp"
android:layout_margin="12dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="16dp"
android:gravity="center">
<ImageView
android:layout_width="80dp"
android:layout_height="80dp"
android:src="@drawable/bookmark"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="18sp"
android:layout_marginTop="12dp"
android:textColor="#6f6f6f"
android:text="ADMIN"/>
</LinearLayout>
</androidx.cardview.widget.CardView>
<androidx.cardview.widget.CardView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_columnWeight="1"
android:layout_rowWeight="1"
app:cardElevation="10dp"
app:cardCornerRadius="12dp"
android:layout_margin="12dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="16dp"
android:gravity="center">
<ImageView
android:id="@+id/ivlogout"
android:layout_width="80dp"
android:layout_height="80dp"
android:src="@drawable/bug" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="18sp"
android:layout_marginTop="12dp"
android:textColor="#6f6f6f"
android:text="LOGOUT"/>
</LinearLayout>
</androidx.cardview.widget.CardView>
</GridLayout>
</LinearLayout>
</ScrollView>
- LOGIN
package com.projek.rekkyar;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.Toast;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
public class LoginActivity extends AppCompatActivity {
private EditText usermail, userpass;
private Button btnlogin;
private ProgressBar loadingbar;
private FirebaseAuth mAuth;
private Intent MainActivity;
private ImageView loginPhoto;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
usermail = findViewById(R.id.editMail);
userpass = findViewById(R.id.editPass);
btnlogin = findViewById(R.id.btnlogin);
loadingbar = findViewById(R.id.loadingbar);
mAuth = FirebaseAuth.getInstance();
MainActivity = new Intent(this, com.projek.rekkyar.MainActivity.class);
loginPhoto = findViewById(R.id.login_photo);
loginPhoto.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent registerActivity = new Intent(getApplicationContext(),RegisterActivity.class);
startActivity(registerActivity);
finish();
}
});
loadingbar.setVisibility(View.INVISIBLE);
btnlogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
loadingbar.setVisibility(View.VISIBLE);
btnlogin.setVisibility(View.INVISIBLE);
final String mail = usermail.getText().toString();
final String password = userpass.getText().toString();
if (mail.isEmpty() || password.isEmpty()) {
showMessage("Please Verify All Field");
btnlogin.setVisibility(View.VISIBLE);
loadingbar.setVisibility(View.INVISIBLE);
}
else
{
signIn(mail,password);
}
}
});
}
private void signIn(String mail, String password) {
mAuth.signInWithEmailAndPassword(mail,password).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
loadingbar.setVisibility(View.INVISIBLE);
btnlogin.setVisibility(View.VISIBLE);
updateUI();
}
else {
showMessage(task.getException().getMessage());
btnlogin.setVisibility(View.VISIBLE);
loadingbar.setVisibility(View.INVISIBLE);
}
}
});
}
private void updateUI() {
Toast.makeText(LoginActivity.this,"Berhasil Masuk",Toast.LENGTH_LONG).show();
startActivity(MainActivity);
finish();
}
private void showMessage(String text) {
Toast.makeText(getApplicationContext(),text,Toast.LENGTH_LONG).show();
}
@Override
protected void onStart() {
super.onStart();
FirebaseUser user = mAuth.getCurrentUser();
if(user != null) {
//user is already connected so we need to redirect him to home page
updateUI();
}
}
}
- LOGINXML
<?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"
android:background="@drawable/bgapps"
tools:context=".LoginActivity">
<EditText
android:id="@+id/editMail"
android:layout_width="273dp"
android:layout_height="49dp"
android:background="@drawable/edit_text_style"
android:ems="10"
android:hint="Email"
android:inputType="textEmailAddress"
android:textColorHint="#fafafa"
app:layout_constraintBottom_toTopOf="@+id/guideline"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<EditText
android:id="@+id/editPass"
android:layout_width="273dp"
android:layout_height="49dp"
android:layout_marginTop="20dp"
android:background="@drawable/edit_text_style"
android:ems="10"
android:hint="Password"
android:inputType="textPassword"
android:textColorHint="#fafafa"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/editMail" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_end="366dp" />
<Button
android:id="@+id/btnlogin"
android:layout_width="130dp"
android:layout_height="wrap_content"
android:layout_marginBottom="80dp"
android:text="Login"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.498"
app:layout_constraintStart_toStartOf="parent"
android:background="@drawable/edit_text_style"
android:textColor="#fafafa"/>
<ImageView
android:id="@+id/login_photo"
android:layout_width="108dp"
android:layout_height="133dp"
android:layout_marginTop="120dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.498"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/admin" />
<ProgressBar
android:id="@+id/loadingbar"
style="?android:attr/progressBarStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="@+id/btnlogin"
app:layout_constraintEnd_toEndOf="@+id/btnlogin"
app:layout_constraintStart_toStartOf="@+id/btnlogin"
app:layout_constraintTop_toTopOf="@+id/btnlogin" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Belum punya Akun? Klik Avatar di atas."
app:layout_constraintBottom_toTopOf="@+id/loadingbar"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.497"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/editPass" />
</androidx.constraintlayout.widget.ConstraintLayout>
- REGISTERJAVA
package com.projek.rekkyar;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;
import android.os.Bundle;
//firebase
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuth;
public class RegisterActivity extends AppCompatActivity {
EditText usermail, userpass;
Button btnSignUp;
TextView tvSignIn;
FirebaseAuth mFirebaseAuth;
ProgressBar loadbar2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
mFirebaseAuth = FirebaseAuth.getInstance();
usermail = findViewById(R.id.editText);
userpass = findViewById(R.id.editText2);
btnSignUp = findViewById(R.id.button2);
tvSignIn = findViewById(R.id.textView);
loadbar2 = findViewById(R.id.loadbar2);
btnSignUp.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String email = usermail.getText().toString();
String pwd = userpass.getText().toString();
loadbar2.setVisibility(View.VISIBLE);
btnSignUp.setVisibility(View.INVISIBLE);
if (email.isEmpty()){
usermail.setError("Please enter email id");
usermail.requestFocus();
}
else if(pwd.isEmpty()){
userpass.setError("Please enter your password");
userpass.requestFocus();
}
else if(email.isEmpty() && pwd.isEmpty()){
Toast.makeText(RegisterActivity.this,"Fields Are Empty!",Toast.LENGTH_SHORT).show();
}
else if(!(email.isEmpty() && pwd.isEmpty())){
mFirebaseAuth.createUserWithEmailAndPassword(email, pwd).addOnCompleteListener(RegisterActivity.this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if(!task.isSuccessful()){
Toast.makeText(RegisterActivity.this,"SignUp Unsuccessful, Please Try Again",Toast.LENGTH_SHORT).show();
}
else {
startActivity(new Intent(RegisterActivity.this,MainActivity.class));
}
}
});
}
else{
Toast.makeText(RegisterActivity.this,"Error Occurred!",Toast.LENGTH_SHORT).show();
}
}
});
tvSignIn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(RegisterActivity.this,LoginActivity.class);
startActivity(i);
}
});
}
}
- REGISTERXML
<?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=".RegisterActivity">
<EditText
android:id="@+id/editText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="313dp"
android:layout_marginEnd="85dp"
android:layout_marginRight="85dp"
android:layout_marginStart="84dp"
android:layout_marginLeft="84dp"
android:layout_marginTop="152dp"
android:ems="10"
android:hint="Email"
android:inputType="textEmailAddress"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<EditText
android:id="@+id/editText2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:layout_marginEnd="85dp"
android:layout_marginStart="85dp"
android:layout_marginTop="8dp"
android:ems="10"
android:hint="Password"
android:inputType="textPassword"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/editText"
app:layout_constraintVertical_bias="0.052" />
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="136dp"
android:layout_marginEnd="163dp"
android:layout_marginStart="163dp"
android:text="Sudah ada akun? Sign in disini"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:layout_marginEnd="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:text="Sign Up"
android:textColor="#fff"
android:background="@drawable/edit_text_style"
app:layout_constraintBottom_toTopOf="@+id/textView"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/editText2" />
<ImageView
android:id="@+id/imageView"
android:layout_width="145dp"
android:layout_height="136dp"
android:layout_marginTop="104dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/teamwork" />
<ProgressBar
android:id="@+id/loadbar2"
style="?android:attr/progressBarStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="@+id/button2"
app:layout_constraintEnd_toEndOf="@+id/button2"
app:layout_constraintStart_toStartOf="@+id/button2"
app:layout_constraintTop_toTopOf="@+id/button2"
app:layout_constraintVertical_bias="0.0" />
</androidx.constraintlayout.widget.ConstraintLayout>
- SPLASHJAVA
package com.projek.rekkyar;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.ImageView;
import android.widget.TextView;
public class SplashActivity extends AppCompatActivity {
private TextView tv;
private ImageView iv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash);
tv = (TextView) findViewById(R.id.tv);
iv = (ImageView) findViewById(R.id.iv);
Animation myanim = AnimationUtils.loadAnimation(this,R.anim.mytransisi);
tv.startAnimation(myanim);
iv.startAnimation(myanim);
final Intent i = new Intent(this,MainActivity.class);
Thread timer =new Thread() {
public void run () {
try{
sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
finally {
startActivity(i);
finish();
}
}
};
timer.start();
}
}
- SPLASHXML
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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:id="@+id/activity_splash"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorPrimary"
tools:context=".SplashActivity">
<LinearLayout
android:gravity="center"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ImageView
android:id="@+id/iv"
android:layout_width="200dp"
android:layout_height="200dp"
android:layout_gravity="center"
android:src="@drawable/teamwork" />
<TextView
android:id="@+id/tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="Rekky Project"
android:textColor="@color/putih"
android:textSize="25sp"
android:textStyle="bold" />
</LinearLayout>
</RelativeLayout>
CONTOH VIDEO
UAS MOBILE PROGRAMMING
APLIKASI PENCATAT KEUANGAN HARIAN
Pada kali ini saya akan membagikan tentang aplikasi pencatat keuangan yang saya buat, yaitu "DOMPETQU" aplikasi ini berbasis di android KITKAT keatas. jika di intsall di bawah minimum spek android tidak akan bisa.
oke langsung saja kita lihat aplikasi nya.
- SPLASH SCREEN
| splash |
- HALAMAN UTAMA
![]() |
| tampilan awal |
Pada Tampilan awal kita akan menemukan 4 nama dan 4 kolom isi lalu di tambah dengan 4 tombol yang berfungsi SIMPAN,LIHAT,UBAH dan HAPUS.
jika kita mengisi kolom yang tersedia dan menekan tombol SIMPAN makan akan berhasil dan keluar notifokasi "berhasil KAKA"
lalu jika kita ingin melihat hasil, maka akan keluar seperti.
![]() |
| tampil data |
namun jika kita ingin merubah data nya. isi kan "ID" yang tertera di hasil lalu pilih yang ingin di ubah dan tekan lagi tombol UBAH. maka akan berubah seperti ini.
![]() |
| ubah data |
Ubah data berhasil. lanjut untuk menghapus data. Cara nya sama yaitu dengan mengisi kan "ID" yang ingin di hapus, lalu tekan tombol hapus makan akan jadi seperti ini.
![]() |
| hapus data |
Aplikasi yang saya buat ini menggunakan SQLITE android yang dimana memakai CRUD sebagai navigasi nya.
| desain mainactivity xml |
<?xml version="1.0" encoding="utf-8"?><RelativeLayout 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" android:background="@color/colorPrimary"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:orientation="vertical"> <TextView android:id="@+id/textView" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="JENIS" /> <EditText android:id="@+id/editText" android:layout_width="match_parent" android:layout_height="wrap_content" android:ems="10" android:inputType="textPersonName" android:text="TAMBAH/KURANG" /> <TextView android:id="@+id/textView2" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="NOMINAL" /> <EditText android:id="@+id/editText2" android:layout_width="match_parent" android:layout_height="wrap_content" android:ems="10" android:inputType="number" android:text="" /> <TextView android:id="@+id/textView3" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="DESKRIPSI" /> <EditText android:id="@+id/editText3" android:layout_width="match_parent" android:layout_height="200dp" android:ems="10" android:inputType="textPersonName" /> <TextView android:id="@+id/textView4" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="ID" /> <EditText android:id="@+id/editText4" android:layout_width="match_parent" android:layout_height="wrap_content" android:ems="10" android:inputType="textPersonName" /> <Button android:id="@+id/button1" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="SIMPAN" /> <Button android:id="@+id/button2" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="LIHAT HASIL" /> <Button android:id="@+id/button3" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="UBAH" /> <Button android:id="@+id/button4" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="HAPUS" /> </LinearLayout> </RelativeLayout>
- Source Code untuk mainActivity.java
package com.e.dompetnya; import androidx.appcompat.app.AlertDialog;import androidx.appcompat.app.AppCompatActivity; import android.database.Cursor;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.Toast; public class MainActivity extends AppCompatActivity { DataBaseHelper myDb; EditText editJenis,editNominal,editDeskripsi,editId; Button btnSimpan; Button btnList; Button btnUbah; Button btnHapus; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); myDb = new DataBaseHelper(this); editJenis = (EditText) findViewById(R.id.editText); editNominal = (EditText) findViewById(R.id.editText2); editDeskripsi = (EditText) findViewById(R.id.editText3); editId = (EditText) findViewById(R.id.editText4); btnSimpan = (Button) findViewById(R.id.button1); btnList = (Button) findViewById(R.id.button2); btnUbah = (Button) findViewById(R.id.button3); btnHapus = (Button) findViewById(R.id.button4); AddBtnSimpan(); viewBtnList(); UpdateData(); DeleteData(); } public void DeleteData() { btnHapus.setOnClickListener( new View.OnClickListener() { @Override public void onClick(View v) { Integer deleteRows = myDb.deleteData(editId.getText() .toString()); if (deleteRows > 0) Toast.makeText(MainActivity.this,"Data di Hapus",Toast.LENGTH_LONG).show(); else Toast.makeText(MainActivity.this,"Data gagal Hapus",Toast.LENGTH_LONG).show(); } } ); } public void AddBtnSimpan() { btnSimpan.setOnClickListener( new View.OnClickListener() { @Override public void onClick(View v) { boolean isInserted= myDb.insertData(editJenis.getText().toString(), editNominal.getText().toString(), editDeskripsi.getText().toString()); if (isInserted =true) Toast.makeText(MainActivity.this,"Berhasil KAKA", Toast.LENGTH_LONG).show(); else Toast.makeText(MainActivity.this,"Gagal KAKA", Toast.LENGTH_LONG).show(); } } ); } public void UpdateData() { btnUbah.setOnClickListener( new View.OnClickListener() { @Override public void onClick(View v) { boolean isUpdate = myDb.updateData(editId.getText() .toString() ,editJenis.getText() .toString() ,editNominal.getText() .toString() ,editDeskripsi.getText() .toString()); if (isUpdate == true ) Toast.makeText(MainActivity.this,"DIupdate KAKA", Toast.LENGTH_LONG).show(); else Toast.makeText(MainActivity.this,"Gagal KAKA", Toast.LENGTH_LONG).show(); } } ); } public void viewBtnList() { btnList.setOnClickListener( new View.OnClickListener() { @Override public void onClick(View v) { Cursor res = myDb.getAllData(); if (res.getCount() == 0) { //show message showMessage("eror guys","Nothing found"); return; } StringBuffer buffer = new StringBuffer(); while (res.moveToNext()) { buffer.append("Id :"+ res.getString(0)+"\n"); buffer.append("JENIS :"+ res.getString(1)+"\n"); buffer.append("NOMINAL :"+ res.getString(2)+"\n"); buffer.append("DESKRIPSI :"+ res.getString(3)+"\n\n"); } //show all data showMessage("Data",buffer.toString()); } } ); } public void showMessage(String title,String Message) { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setCancelable(true); builder.setTitle(title); builder.setMessage(Message); builder.show(); } }
- Source Code Database nya(SQLite)
package com.e.dompetnya; import android.content.ContentValues;import android.content.Context;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper; import androidx.annotation.Nullable; public class DataBaseHelper extends SQLiteOpenHelper { public static final String DATABASE_NAME = "transaksi.db"; public static final String TABLE_NAME = "transaksi_table"; public static final String BARIS_1 = "Id"; public static final String BARIS_2 = "JENIS"; public static final String BARIS_3 = "NOMINAL"; public static final String BARIS_4 = "DESKRIPSI"; public DataBaseHelper(Context context) { super(context, DATABASE_NAME, null, 1); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL("create table " + TABLE_NAME +" (ID INTEGER PRIMARY KEY AUTOINCREMENT,JENIS TEXT,NOMINAL INTEGER,DESKRIPSI TEXT)"); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL("DROP TABLE IF EXISTS " +TABLE_NAME); onCreate(db); } public boolean insertData(String JENIS,String NOMINAL,String DESKRIPSI) { SQLiteDatabase db = this.getWritableDatabase(); ContentValues contentValues = new ContentValues(); contentValues.put(BARIS_2 ,JENIS); contentValues.put(BARIS_3 ,NOMINAL); contentValues.put(BARIS_4 ,DESKRIPSI); long result = db.insert(TABLE_NAME,null ,contentValues); if (result == -1) return false; else return true; } public Cursor getAllData() { SQLiteDatabase db = this.getWritableDatabase(); Cursor res = db.rawQuery("select * from "+TABLE_NAME,null); return res; } public boolean updateData(String id,String JENIS,String NOMINAL,String DESKRIPSI) { SQLiteDatabase db = this.getWritableDatabase(); ContentValues contentValues = new ContentValues(); contentValues.put(BARIS_1 ,id); contentValues.put(BARIS_2 ,JENIS); contentValues.put(BARIS_3 ,NOMINAL); contentValues.put(BARIS_4 ,DESKRIPSI); db.update(TABLE_NAME, contentValues, "Id = ?",new String[] { id }); return true; } public Integer deleteData (String id) { SQLiteDatabase db = this.getWritableDatabase(); return db.delete(TABLE_NAME, "Id = ?",new String[] {id}); } }
- Source Code SplashScreen JAVA
package com.dompet; import androidx.appcompat.app.AppCompatActivity; import android.content.Intent;import android.os.Bundle;import android.view.animation.Animation;import android.view.animation.AnimationUtils;import android.widget.ImageView;import android.widget.TextView; import org.w3c.dom.Text; public class MainActivity extends AppCompatActivity { private TextView tv ; private ImageView iv ; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv = (TextView) findViewById(R.id.tv); iv = (ImageView) findViewById(R.id.iv); Animation myanim = AnimationUtils.loadAnimation(this,R.anim.mytransisi); tv.startAnimation(myanim); iv.startAnimation(myanim); final Intent i = new Intent(this,HomeActivity.class); Thread timer =new Thread() { public void run() { try { sleep(5000); } catch (InterruptedException e) { e.printStackTrace(); } finally { startActivity(i); } } }; timer.start(); } }
- Source Code SplashScreen XML





