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();
}
}
});
}
}
'Android' 카테고리의 다른 글
Android recyclerView, adapter (2) | 2023.02.01 |
---|---|
Android SQLite3 , RecyclerView , SQLiteOpenHelper 클래스를 상속 , 메뉴 아이콘 이미지를 벡터 이미지로 만드는 방법, CardView 예시 (1) | 2023.01.31 |
Android shared preference(앱 내에 토큰,자동로그인 등 데이터를 저장) (0) | 2023.01.31 |
Android 단방향 데이터 전달, 양방향 데이터 전달 (0) | 2023.01.30 |
Android Activity간 화면전환(Life Cycle), intent (0) | 2023.01.30 |