Senin, 23 September 2019

KONVERSI MATA UANG DENGAN LOGIN

KONVERSI MATA UANG DENGAN LOGIN


A. DESKRIPSI :

Aplikasi android ini seperti namanya adalah aplikasi untuk mengkonversikan mata uang yaitu USD, YEN, dan EURO dari mata uang negara Indonesia yaitu Rupiah. Pada aplikasi ini terdiri dari 5 Button antara lain button1(Rp > USD), button2 (Rp > YEN), button3 (Rp > EURO), button8 (RESET), dan button7 (LOGOUT). Untuk dapat menggunakan aplikasi ini, user diharuskan untuk login terlebih dahulu dengan username dan password.


B. BUAT PROJECT BARU :

1. Membuat Aplikasi Konversi Mata Uang

Untuk membuat aplikasi ini kita buat projeck baru dengan :
Nama Projeck : konversimatauang
Phone : PIXEL 2 API 16
Activity : Empty Activity
Activity Name : MainActivity 
Jika workspace android studio sudah siap digunakan, kita masuk ke tab activity_main.xml lalu kita ubah desainnya hingga seperti ini :


Untuk membuat desain Xml seperti diatas, Berikut ini adalah source code xml nya :

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.konversimatauang.MainActivity">

    <ImageView
        android:id="@+id/imageView"
        android:layout_width="122dp"
        android:layout_height="116dp"
        android:layout_marginStart="141dp"
        android:layout_marginLeft="141dp"
        android:layout_marginTop="82dp"
        android:layout_marginEnd="142dp"
        android:layout_marginRight="142dp"
        android:layout_marginBottom="42dp"
        android:background="#0E59F1"
        app:layout_constraintBottom_toTopOf="@+id/linearLayout"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:srcCompat="@mipmap/ic_launcher" />

    <LinearLayout
        android:id="@+id/linearLayout"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="56dp"
        android:layout_marginLeft="56dp"
        android:layout_marginTop="43dp"
        android:layout_marginEnd="57dp"
        android:layout_marginRight="57dp"
        android:layout_marginBottom="36dp"
        android:orientation="horizontal"
        android:padding="20dp"
        app:layout_constraintBottom_toTopOf="@+id/button"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/imageView">

        <EditText
            android:id="@+id/editText"
            android:layout_width="120dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:ems="10"
            android:hint="0 Rupiah"
            android:inputType="textPersonName"
            android:textSize="20sp" />

        <TextView
            android:id="@+id/textView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="5dp"
            android:layout_weight="1"
            android:text="="
            android:textSize="20sp" />

        <TextView
            android:id="@+id/textView2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:hint="Hasil Konversi"
            android:textSize="20sp" />
    </LinearLayout>

    <Button
        android:id="@+id/button"
        android:layout_width="270dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="161dp"
        android:layout_marginLeft="161dp"
        android:layout_marginTop="10dp"
        android:layout_marginEnd="162dp"
        android:layout_marginRight="162dp"
        android:layout_marginBottom="20dp"
        android:background="#F50000"
        android:onClick="toUSD"
        android:text="Rp > USD"
        android:textColor="#FFFDFD"
        android:textSize="20sp"
        app:layout_constraintBottom_toTopOf="@+id/button2"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/linearLayout" />

    <Button
        android:id="@+id/button2"
        android:layout_width="270dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="161dp"
        android:layout_marginLeft="161dp"
        android:layout_marginTop="10dp"
        android:layout_marginEnd="162dp"
        android:layout_marginRight="162dp"
        android:layout_marginBottom="20dp"
        android:background="#B19502"
        android:onClick="toYEN"
        android:text="Rp > YEN"
        android:textColor="#FFFFFF"
        android:textSize="20sp"
        app:layout_constraintBottom_toTopOf="@+id/button3"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/button" />

    <Button
        android:id="@+id/button3"
        android:layout_width="270dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="70dp"
        android:layout_marginLeft="70dp"
        android:layout_marginTop="10dp"
        android:layout_marginEnd="71dp"
        android:layout_marginRight="71dp"
        android:layout_marginBottom="184dp"
        android:background="#11A806"
        android:onClick="toEURO"
        android:text="Rp > EURO"
        android:textColor="#FFFCFC"
        android:textSize="20sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="1.0"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/button2" />

    <Button
        android:id="@+id/button7"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="65dp"
        android:layout_marginLeft="65dp"
        android:layout_marginTop="75dp"
        android:layout_marginEnd="258dp"
        android:layout_marginRight="258dp"
        android:layout_marginBottom="46dp"
        android:text="Logout"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/button3" />

    <Button
        android:id="@+id/button8"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="162dp"
        android:layout_marginLeft="162dp"
        android:layout_marginTop="12dp"
        android:layout_marginEnd="161dp"
        android:layout_marginRight="161dp"
        android:layout_marginBottom="109dp"
        android:text="Reset"
        android:textSize="20sp"
        android:textStyle="bold|italic"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/button3" />

    <TextView
        android:id="@+id/textView5"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="82dp"
        android:layout_marginLeft="82dp"
        android:layout_marginTop="16dp"
        android:layout_marginEnd="82dp"
        android:layout_marginRight="82dp"
        android:layout_marginBottom="35dp"
        android:text="Ferdian Putra Dinanda - 161021450161"
        app:layout_constraintBottom_toTopOf="@+id/imageView"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

Setelah sudah selesai memasukkan source code xml diatas akan dihasilkan gambar pada Emulator seperti ini :



 Kemudian untuk membuat button dan editText dapat berfungsi kita masuk ke Tab MainActivity.java lalu masukan source code sebagai berikut :
package com.example.konversimatauang;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;

import java.text.NumberFormat;
import java.util.Locale;

public class MainActivity extends AppCompatActivity {
    EditText editText;
    Button button, button2, button3, btnExit, btnReset;
    TextView textView2;
    double angka;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        editText = (EditText) findViewById(R.id.editText);
        button = (Button) findViewById(R.id.button);
        button2 = (Button) findViewById(R.id.button2);
        button3 = (Button) findViewById(R.id.button3);
        textView2 = (TextView) findViewById(R.id.textView2);
        btnExit = (Button) findViewById(R.id.button7);
        btnExit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                finish();
            }
        });
        btnReset = (Button) findViewById(R.id.button8);
        btnReset.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                textView2.setText("");
                editText.setText("");
            }
        });
    }
    public boolean cek(){
        if (editText.getText().toString().isEmpty()){
            Toast.makeText(this, "Silahkan masukan jumlah uang", Toast.LENGTH_SHORT).show();
            return false;
        }
        return true;
    }
    public void toYEN(View v){
        if (!cek()){
            return;
        }
        try{
            angka = Double.parseDouble(editText.getText().toString());
        }catch(Exception ex){
            Toast.makeText(this, "Masukkan angka", Toast.LENGTH_SHORT).show();
        }
        double hasil = angka / 132;
        textView2.setText(NumberFormat.getCurrencyInstance(Locale.JAPAN).format(hasil));
        Toast.makeText(this, "1 Yen = Rp 131", Toast.LENGTH_SHORT).show();
    }
    public void toEURO(View v){
        if (!cek()){
            return;
        }
        try{
            angka = Double.parseDouble(editText.getText().toString());
        }catch(Exception e){
            Toast.makeText(this, "Masukkan angka", Toast.LENGTH_SHORT).show();
        }
        double hasil = angka / 17228;
        textView2.setText(NumberFormat.getCurrencyInstance(Locale.GERMANY).format(hasil));
        Toast.makeText(this, "1 Euro = Rp 15.450", Toast.LENGTH_SHORT).show();
    }
    public void toUSD(View v){
        if (!cek()){
            return;
        }
        try{
            angka = Double.parseDouble(editText.getText().toString());
        }catch(Exception e){
            Toast.makeText(this, "Masukkan angka", Toast.LENGTH_SHORT).show();
        }
        double hasil = angka / 14808;
        textView2.setText(NumberFormat.getCurrencyInstance(Locale.US).format(hasil));
        Toast.makeText(this, "1 U$D = Rp 14087", Toast.LENGTH_SHORT).show();
    }
}
Jika sudah memasukkan source code seperti diatas kita dapat menguji aplikasi konversi mata uang yang sudah kita buat. Hasilnya akan seperti berikut :





2. Membuat Aplikasi Login

Selanjutnya kita buat Aplikasi Login untuk dapat menggunakan Aplikasi Konversi Mata Uang yang sudah kita buat. Langkah pertama, Klik Kanan pada Package yang sama dengan Aplikasi Konversi Mata Uang lalu pilih New > Activity > Empty Activity. Beri nama Activity dengan "Login" lalu Next. Jika sudah akan muncul .java dan .xml baru. Selanjutnya kita desain terlebih dahulu tampilan login sesuai keinginan kita. Kalau yang saya buat tampilannya seperti berikut :




source code yang saya buat untuk mendapatkan tampilan seperti diatas sebagai berikut :
<?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=".Login">

    <TextView
        android:id="@+id/textView3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        android:layout_marginBottom="643dp"
        android:text="LOGIN"
        android:textSize="30sp"
        android:textStyle="bold"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.527"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.0" />

    <TextView
        android:id="@+id/textView4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="111dp"
        android:layout_marginLeft="111dp"
        android:layout_marginTop="60dp"
        android:layout_marginEnd="88dp"
        android:layout_marginRight="88dp"
        android:layout_marginBottom="584dp"
        android:text="APLIKASI KONVERSI MATA UANG"
        android:textSize="16sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/textView3" />

    <ImageView
        android:id="@+id/imageView2"
        android:layout_width="102dp"
        android:layout_height="110dp"
        android:layout_marginStart="144dp"
        android:layout_marginLeft="144dp"
        android:layout_marginTop="25dp"
        android:layout_marginEnd="139dp"
        android:layout_marginRight="139dp"
        android:layout_marginBottom="10dp"
        app:layout_constraintBottom_toTopOf="@+id/editText2"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/textView4"
        app:srcCompat="@mipmap/ic_launcher_round"
        tools:srcCompat="@mipmap/ic_launcher_round" />

    <ImageView
        android:id="@+id/imageView3"
        android:layout_width="49dp"
        android:layout_height="46dp"
        android:layout_marginStart="45dp"
        android:layout_marginLeft="45dp"
        android:layout_marginTop="20dp"
        android:layout_marginEnd="10dp"
        android:layout_marginRight="10dp"
        android:layout_marginBottom="260dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toStartOf="@+id/editText3"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/imageView4"
        app:srcCompat="@android:drawable/ic_secure" />

    <ImageView
        android:id="@+id/imageView4"
        android:layout_width="73dp"
        android:layout_height="68dp"
        android:layout_marginStart="40dp"
        android:layout_marginLeft="40dp"
        android:layout_marginTop="240dp"
        android:layout_marginEnd="20dp"
        android:layout_marginRight="20dp"
        android:layout_marginBottom="30dp"
        app:layout_constraintBottom_toTopOf="@+id/imageView3"
        app:layout_constraintEnd_toStartOf="@+id/editText2"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.49"
        app:srcCompat="@android:drawable/btn_star_big_on" />

    <EditText
        android:id="@+id/editText2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="26dp"
        android:layout_marginLeft="26dp"
        android:layout_marginTop="54dp"
        android:layout_marginEnd="83dp"
        android:layout_marginRight="83dp"
        android:layout_marginBottom="42dp"
        android:ems="10"
        android:hint="username"
        android:inputType="textPersonName"
        app:layout_constraintBottom_toTopOf="@+id/editText3"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toEndOf="@+id/imageView4"
        app:layout_constraintTop_toBottomOf="@+id/imageView2" />

    <EditText
        android:id="@+id/editText3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="40dp"
        android:layout_marginLeft="40dp"
        android:layout_marginTop="10dp"
        android:layout_marginEnd="80dp"
        android:layout_marginRight="80dp"
        android:layout_marginBottom="260dp"
        android:ems="10"
        android:hint="password"
        android:inputType="textPersonName"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toEndOf="@+id/imageView3"
        app:layout_constraintTop_toBottomOf="@+id/editText2" />

    <Button
        android:id="@+id/button4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="120dp"
        android:layout_marginLeft="120dp"
        android:layout_marginTop="34dp"
        android:layout_marginEnd="203dp"
        android:layout_marginRight="203dp"
        android:layout_marginBottom="169dp"
        android:text="Sign in"
        android:textSize="20sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/editText3" />

</androidx.constraintlayout.widget.ConstraintLayout>
Jika sudah mendesain tampilan dari login, kita langsung ke  Tab Login.java kemudian masukkan source code seperti berikut :
package com.example.konversimatauang;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;


public class Login extends AppCompatActivity {
    EditText username, password;
    Button btnLogin;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);
        username = (EditText) findViewById(R.id.editText2);
        password = (EditText) findViewById(R.id.editText3);
        btnLogin = (Button) findViewById(R.id.button4);
        btnLogin.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String usernameKey = username.getText().toString();
                String passwordKey = password.getText().toString();

                if (usernameKey.equals("ferdian") && passwordKey.equals("dinanda")){
                    Toast.makeText(getApplicationContext(), "LOGIN SUKSES",
                            Toast.LENGTH_SHORT).show();
                Intent intent = new Intent(Login.this, MainActivity.class);
                startActivity(intent);
            } else {
                AlertDialog.Builder builder = new AlertDialog.Builder(Login.this);
                builder.setMessage("username atau password salah")
                        .setNegativeButton("Retry", null).create().show();
            }
        }
        });
    }
}

Keterangan :
1. Pada login ini saya membuat username "ferdian" dan password "dinanda" untuk dapat masuk ke dalam Aplikasi Konversi Mata Uang.
2. Agar kedua Activity dapat terhubung, perhatikan source code pada  Tab Login.java
      if (usernameKey.equals("ferdian") && passwordKey.equals("dinanda")){
                    Toast.makeText(getApplicationContext(), "LOGIN SUKSES",
                            Toast.LENGTH_SHORT).show();
                Intent intent = new Intent(Login.this, MainActivity.class);
                startActivity(intent);
source code diatas berfungsi untuk menghubungkan Login dengan Konversi Mata Uang. 

Jika sudah memasukkan source code seperti diatas kita dapat menguji pada Emulator yang ada.
Hasil seperti ini :


Jika kita Klik SIGN IN, maka akan langsung masuk ke Aplikasi Konversi Mata Uang dengan tampilan seperti ini :



Demikian pembuatan Aplikasi Konversi Mata Uang dengan Login. Semoga ilmu diatas dapat bermanfaat. Silahkan dicoba untuk desain dan codingan yang sudah saya buat, apabila ada kesulitan tulis saja dikolom komentar. Terima Kasih, Sekian.