개발

03/20 주특기 1주차 개인과제(3)

sos000303 2024. 3. 20. 20:07
728x90

깃허브 주소

 

GitHub - Winterwood0118/Week4_Homework

Contribute to Winterwood0118/Week4_Homework development by creating an account on GitHub.

github.com

Lv3 자기소개 페이지 만들기(HomeActivity)

  1. HomeActivity를 생성해 주세요.
  2. SignInActivity에서 받은 extra data(아이디)를 화면에 표시합니다.
  3. ImageView, TextView 외에 각종 Widget을 활용해 자유롭게 화면을 디자인 해주세요.
    • 이름, 나이, MBTI 등 자기소개등이 들어가는 위젯을 자유롭게 디자인해주세요.
  4. 종료 버튼이 눌리면 SignInActivity로 이동하도록 구현합니다. (finish 활용)

 

import android.os.Bundle
import android.widget.Button
import android.widget.ImageView
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity

class HomeActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_home)
        val mainIV = findViewById<ImageView>(R.id.iv_logo)
        val idValueTV = findViewById<TextView>(R.id.tv_id_value_home)
        val nameValueTV = findViewById<TextView>(R.id.tv_name_value_home)
        val mbtiValueTV = findViewById<TextView>(R.id.tv_mbti_value_home)
        val hobbyValueTV = findViewById<TextView>(R.id.tv_hobby_value_home)
        val finishBtn = findViewById<Button>(R.id.btn_finish)
        var randomNum = intent.getIntExtra("random", 1)
        var imageResource = imageResources[randomNum]

        idValueTV.text = intent.getStringExtra("extra_id")
        mainIV.setImageResource(imageResource)

        //사진 누르면 바꾸기 기능 추가해봄
        mainIV.setOnClickListener{
            randomNum = (0..4).filter { it != randomNum }.random()
            imageResource = imageResources[randomNum]
            mainIV.setImageResource(imageResource)
        }

        finishBtn.setOnClickListener {
            finish()
        }

    }
}

Lv1에서 엑스트라로 넘겨주었던 id를 받아와 출력해주는 기능을 만들었다.

아래 랜덤의 경우에는 Lv3 이후에 요구하는 액티비티를 시작할 때 5가지의 이미지 중 랜덤한 이미지를 띄우는 기능에서 나온 코드이며 외에도 이미지를 눌렀을 때 이미지를 바꾸는 기능을 추가해봤다.

처음에는 random을 이용한 resource 바꾸기를 아래와 같이 작성했다.

val imageResource = resources.getIdentifier("img_$randomNum)}", "drawable", packageName)

하지만 스튜디오에서 권장하지 않는 코드라는 안내문이 나와서 아래처럼 img들을 Array로 관리하고 index에 맞는 Array의 원소를 띄우는 형식으로 바꾸웠다.

val imageResources = arrayOf(
    R.drawable.img_1,
    R.drawable.img_2,
    R.drawable.img_3,
    R.drawable.img_4,
    R.drawable.img_5
)
728x90