(kotlin) LoginPage Training

박용석·2023년 8월 4일
1

1. 메인 페이지

class SignInActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        val et_pw = findViewById<EditText>(R.id.et_pw)
        val btn_login = findViewById<Button>(R.id.btn_login)
        val et_login = findViewById<EditText>(R.id.et_login)

        val signUpActivityLauncher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()){result->
            if(result.resultCode == RESULT_OK){
                val data:Intent? = result.data
                val subIdTextValue = data?.getStringExtra("id")
                val subPwTextValue = data?.getStringExtra("pw")

                subIdTextValue?.let{
                    et_login.setText(it)  
                }

                subPwTextValue.let{
                    et_pw.setText(it)
                }
            }
        }

        btn_login.setOnClickListener {
            if(!et_login.text.toString().trim().isEmpty() && !et_pw.text.toString().trim().isEmpty()){
                Toast.makeText(this, "로그인 성공", Toast.LENGTH_SHORT).show()
                val info_id = "아이디: " + et_login.text.toString()
                val intent = Intent(this, HomeActivity::class.java)

                intent.putExtra("info_id", info_id)
                startActivity(intent)

            }else{
                Toast.makeText(this,"아이디/비밀번호를 확인해주세요.", Toast.LENGTH_SHORT).show()
            }
        }
        val btn_join = findViewById<Button>(R.id.btn_join)
        val intent = Intent(this, SignUpActivity::class.java)

        btn_join.setOnClickListener {
            signUpActivityLauncher.launch(intent)
        }
    }
}

회원가입 버튼을 누를경우 registerForActivityResult 를 사용하여 signUpActivityLauncher.launch(intent)로 회원가입 화면인 SignUpActivity로 이동하여 아이디와 패스워드를 입력받고 회원가입을 완료한 후 et_login, et_pw 로 선언한 EditText로 값을 넘겨받을 수 있도록 만들었다.
로그인 버튼을 누를 경우 EditText의 값이 둘 다 입력되어야 HomeActivity로 넘어가게 만들었으며 그렇지 않은 경우에는 Toast 팝업창으로 입력 값을 확인하도록 만들었다.

2. 회원가입 페이지

class SignUpActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_sign_up)
        var btn_join2 = findViewById<Button>(R.id.btn_join2)
        var et_name = findViewById<EditText>(R.id.et_name)
        var et_id2 = findViewById<EditText>(R.id.et_id2)
        var et_pw2 = findViewById<EditText>(R.id.et_pw2)
        btn_join2.setOnClickListener {
            if(et_name.text.toString().trim().isEmpty() || et_id2.text.toString().trim().isEmpty() ||
                    et_pw2.text.toString().trim().isEmpty()){
                Toast.makeText(this,"입력되지 않은 정보가 있습니다.", Toast.LENGTH_SHORT).show()
            }else{
                val intent = Intent(this, SignInActivity::class.java).apply{
                    putExtra("id", et_id2.text.toString())
                    putExtra("pw", et_pw2.text.toString())
                }
                setResult(RESULT_OK, intent)
                finish()
            }
        }
    }
}

회원가입 페이지도 조건문을 걸어서 입력 값이 한 곳이라도 비어있으면 Toast 팝업창을 띄워주었으며 그렇지 않은 경우에는 Intent 안에 있는 함수인 putExtra에 입력 값을 담아주고 setResult를 사용해서 값을 전달해주었다.

3. 홈화면 페이지



class HomeActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_home)
        val info_id = intent.getStringExtra("info_id")
        // intent.getStringExtra("전달했던 데이터의 이름표")
        val imgView1 = findViewById<ImageView>(R.id.imgView1)
        val tv_id = findViewById<TextView>(R.id.tv_id)
        rollImg()
        tv_id.text = info_id
        val btn_exit = findViewById<Button>(R.id.btn_exit)
        btn_exit.setOnClickListener {
            finish()
        }
    }
    fun rollImg(){
        val imgView1 = findViewById<ImageView>(R.id.imgView1)
        val random = Random
        val image = random.nextInt(6)
        val resultImage = when(image){
            0 -> R.drawable.animal1
            1 -> R.drawable.animal2
            2 -> R.drawable.animal3
            3 -> R.drawable.animal4
            4 -> R.drawable.animal5
            else -> R.drawable.animal6
        }
        // 이미지뷰 업데이트
        imgView1.setImageResource(resultImage)
        // contentDescription 업데이트
        imgView1.contentDescription = image.toString()

    }
}

로그인을 하면 뜨게되는 HomeActivity 이며 rollImg 함수를 만들어서 랜덤한 숫자를 받아오고
그 숫자에 맞는 조건문의 숫자로 들어가서 drawable에 저장해둔 이미지를 변수resultImage에 입력받아 그 이미지를 홈 화면이 켜질 때 리소스를 가져와 contentDescription으로 업데이트를 해주게 만들었다.

profile
슬기로운 개발 활동

1개의 댓글

comment-user-thumbnail
2023년 8월 7일

코드 깔끔하게 쓰시네요...! 많이 배우고 갑니다 ㅎㅎㅎ

답글 달기