20230808 랜덤 이미지

기메단·2023년 8월 8일
0

TIL

목록 보기
17/44

두 가지 방법으로 랜덤으로 이미지가 나오게 구현해봤다.

  • 배열을 이용한 랜덤 이미지 기능 구현

class HomeActivity : AppCompatActivity() {

    private val imageArray = arrayOf (
        R.drawable.profile,
        R.drawable.profile1,
        R.drawable.profile2,
        R.drawable.profile3,
        R.drawable.profile4
    )

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_home)

        val finishBtn = findViewById<Button>(R.id.finishBtn)
        val idText = findViewById<TextView>(R.id.getId)

        val getId = intent.getStringExtra("ID")

        val imageView = findViewById<ImageView>(R.id.profileview)
        setRandomImage(imageView)

        idText.text = getId

        finishBtn.setOnClickListener {
            finish()
        }
    }
    private fun setRandomImage(imageView : ImageView) {
        val randomIndex = (imageArray.indices).random() 
        //indices : 최소 인덱스부터 최대인덱스까지 랜덤으로 불러옴. 
        val randomImageResourceId = imageArray[randomIndex]
        imageView.setImageResource(randomImageResourceId)
        // setImageResource : ImageView의 이미지를 변경하기 위해 사용. 
    }
}
  • when

class HomeActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_home)

        val finishBtn = findViewById<Button>(R.id.finishBtn)
        val idText = findViewById<TextView>(R.id.getId)

        val getId = intent.getStringExtra("ID")

        val imageView = findViewById<ImageView>(R.id.profileview)
        when (Random().nextInt(5)) { 
        // (0..4)까지의 인덱스
            0 -> imageView.setImageResource(R.drawable.profile)
            1-> imageView.setImageResource(R.drawable.profile1)
            2 -> imageView.setImageResource(R.drawable.profile2)
            3 -> imageView.setImageResource(R.drawable.profile3)
            4 -> imageView.setImageResource(R.drawable.profile4)

        }

        idText.text = getId

        finishBtn.setOnClickListener {
            finish()
        }
    }

}

일단 둘 다 잘된다. 귀찮아서 첫번째로 구현했던 방법대로 냅둘려고 했는데 시간도 남고 해서 해봤는데 하길 잘했다 생각한다. 별다른 변수 선언 없이 random.nextInt로 0~4 사이의 무작위 값만 주니 너무나 간단히 작동한다. 두 코드 전부 짧지만 when으로 작성했을 때가 코드도 훨씬 보기 쉽고 구현하기 간단하다고 느낀다. 앞으로도 계속 코딩해보면서 어떻게 해야 간결하고 클린 코드로 작성할 수 있을까 고민해봐야할 거 같다.
(현실 : 알고리즘 입문 단계에도 벽느껴서 코드 제대로 못짬)

4개의 댓글

comment-user-thumbnail
2023년 8월 8일

저도 맨날 제껄로 구현해보고 다른 방법도 분석해보거나 도전해보는데 도움이 많이 되는 것 같습니다! 🙂
배열로 구현하는 방법도 잘 보고 갑니당

답글 달기
comment-user-thumbnail
2023년 8월 8일

아하! 저도 아래와 같은 방법으로 했는데 배열로 하는 방법도 있군요. 다양하게 해보시는 모습 멋지십니다 ㅎㅎ

답글 달기
comment-user-thumbnail
2023년 8월 9일

저도 배열로 구현하려다가 실패했었는데 setRandomImage란게 있었군요?

답글 달기
comment-user-thumbnail
2023년 8월 9일

배열로 랜덤이미지를 구현하신거보면 생각하는 방향이 비범하십니다.

답글 달기