본문 바로가기
Android

Android [로그인앱]

by leopard4 2023. 1. 31.

 

main 

 

package com.leopard4.userloginapp;

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.util.Patterns;
import android.widget.Toast;


public class MainActivity extends AppCompatActivity {

    EditText editEmail;
    EditText editPass;
    EditText editPassOk;
    Button button;
    Button btnLogin;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        button = findViewById(R.id.button);
        editEmail = findViewById(R.id.editEmail);
        editPass = findViewById(R.id.editPass);
        editPassOk = findViewById(R.id.editPassOk);
        btnLogin = findViewById(R.id.btnLogin);

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                String email = editEmail.getText().toString().trim();
                // 이메일이 잘못되면 토스트 메세지 출력
                if (!Patterns.EMAIL_ADDRESS.matcher(email).matches()) {
                    Toast.makeText(MainActivity.this, "이메일 형식이 잘못되었습니다.", Toast.LENGTH_SHORT).show();
                    return;
                }

                // 비밀번호는 6자리 이상 12자리 이하로 받습니다.
                String pass = editPass.getText().toString().trim();
                if (pass.length() < 6 || pass.length() > 12) {
                    Toast.makeText(MainActivity.this, "비밀번호는 6자리 이상 12자리 이하로 입력해주세요.", Toast.LENGTH_SHORT).show();
                    return;
                }

                // 비밀번호 확인
                String passOk = editPassOk.getText().toString().trim();
                if (!pass.equals(passOk)) {
                    Toast.makeText(MainActivity.this, "비밀번호가 일치하지 않습니다.", Toast.LENGTH_SHORT).show();
                    return;
                }

                // 모든 조건이 만족되면, 회원가입 완료 토스트 메세지 출력
                Toast.makeText(MainActivity.this, "회원가입이 완료되었습니다.", Toast.LENGTH_SHORT).show();

                // 회원가입이 완료되면, 아바타 선택 화면으로 이동  이메일 패스워드도 전달
                Intent intent = new Intent(MainActivity.this, AvataActivity.class);
                intent.putExtra("email", email);
                intent.putExtra("pass", pass);
                startActivity(intent);

                finish();

            }
        });

        btnLogin.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(MainActivity.this, LoginActivity.class);
                startActivity(intent);
            }
        });

    }
}

 

avata

package com.leopard4.userloginapp;

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

import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;

public class AvataActivity extends AppCompatActivity {

    ImageView imgAvata;
    Button btnChoose;
    int avataType = -1;
    Button btnRabbit;
    Button btnTurtle;
    String email;
    String pass;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_avata);

        imgAvata = findViewById(R.id.imgAvata);
        btnChoose = findViewById(R.id.btnChoose);
        btnRabbit = findViewById(R.id.btnRabbit);
        btnTurtle = findViewById(R.id.btnTurtle);
        email = getIntent().getStringExtra("email");
        pass = getIntent().getStringExtra("pass");

        // 토끼버튼을 누르면 토끼 이미지, 거북이버튼을 누르면 거북이 이미지를 imgAvata에 출력
        btnRabbit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                imgAvata.setImageResource(R.drawable.rabbit);
                avataType = 0;
            }
        });
        btnTurtle.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                imgAvata.setImageResource(R.drawable.turtle);
                avataType = 1;
            }
        });



        btnChoose.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                // 아바타를 선택 안했을 경우에 대한 코드
                if(avataType == -1){
                    Toast.makeText(AvataActivity.this, "아바타를 선택해주세요", Toast.LENGTH_SHORT).show();
                    return;
                }

                // 아바타 선택이 완료되면 회원가입 완료 Alert창 출력
                AlertDialog.Builder builder = new AlertDialog.Builder(AvataActivity.this);
                builder.setTitle("회원가입 완료");
                builder.setMessage("완료하시겠습니까?");
                builder.setNegativeButton("NO", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        finish();
                    }
                });
                builder.setPositiveButton("YES", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {

                        // 이메일, 패스워드, 아바타타입을
                        // SharedPreference에 저장
                        SharedPreferences sp = getSharedPreferences("ResusterApp_SP", MODE_PRIVATE); // 자동로그인,토큰등을 저장
                        SharedPreferences.Editor editor = sp.edit();
                        editor.putString("email", email);
                        editor.putString("pass", pass);
                        editor.putInt("avataType", avataType);
                        editor.apply();

                        // todo:웰컴 액티비티를 띄운다.
                        Intent intent = new Intent(AvataActivity.this, WelcomeActivity.class);
                        intent.putExtra("email", email);
                        intent.putExtra("type", "register");

                        startActivity(intent);

                        finish();

                    }
                });
                builder.show();
            }


        });


    }
}

 

welcome

package com.leopard4.userloginapp;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class WelcomeActivity extends AppCompatActivity {

    TextView txtEmail;
    Button btnNext;
    TextView txtMsg;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_welcome);

        txtEmail = findViewById(R.id.txtEmail);
        btnNext = findViewById(R.id.btnNext);
        txtMsg = findViewById(R.id.txtMsg);

        SharedPreferences sp = getSharedPreferences("ResusterApp_SP", MODE_PRIVATE);

        String email = getIntent().getStringExtra("email");
        String type = getIntent().getStringExtra("type");

        txtEmail.setText(email+"님 환영합니다");

        if (type.equals("Login")) {
            txtMsg.setText("메인화면 입니다.");
        } else {
            txtMsg.setText("회원가입 성공");
        }

        btnNext.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(WelcomeActivity.this, MainActivity.class);
                startActivity(intent);
            }
        });
    }

}

login

package com.leopard4.userloginapp;

import androidx.appcompat.app.AppCompatActivity;

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

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class LoginActivity extends AppCompatActivity {

    Button button;
    EditText editEmail;
    EditText editPass;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);

        editEmail = findViewById(R.id.editEmail);
        editPass = findViewById(R.id.editPass);
        button = findViewById(R.id.button);

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                // 유저가 입력한 이메일과 비번
                String email2 = editEmail.getText().toString().trim();
                String pass2 = editPass.getText().toString().trim();

                // 저장되어있던 이메일과 비번 가져온다.
                SharedPreferences sp = getSharedPreferences("ResusterApp_SP", MODE_PRIVATE);
                String email = sp.getString("email", "no data");
                String pass = sp.getString("pass", "no data");
                int avata = sp.getInt("avataType", -1);

                if (email.equals(email2) && pass.equals(pass2)) {
                    Toast.makeText(LoginActivity.this, "로그인 성공", Toast.LENGTH_SHORT).show();
                    Intent intent = new Intent(LoginActivity.this, WelcomeActivity.class);
                    intent.putExtra("email", email2);
                    intent.putExtra("type", "Login");
                    startActivity(intent);

            } else {
                    Toast.makeText(LoginActivity.this, "이메일과 비밀번호를 확인해주세요", Toast.LENGTH_SHORT).show();
                }

            }
        });
    }

}