이미지가 여러개 있을때 랜덤하게 변경가능하게 만들어볼까 한다.
1번 액티비티에서 2번 액티비티로 넘어가면 2번 액티비티에 이미지를 뛰어주는데 이 이미지는 랜덤하게 뜨는걸로 만들어보자.
안드로이드 스튜디오에 이미지 넣는건 간단한데 res폴더안에 drawble 파일이 있을것이다. 여기에 드래그앤 드랍으로 넣으면 준비는 완료.
먼저 xml에서 ImageView를 하나 넣는다. id는 자신이 원하는 id로 지정해두고 이미지가 나올 위치를 맞춰주면 xml에서 할 일은 끝. 이미지가 여러개더라도 하나만 넣으면 된다.
이제 코드상에서 이 이미지들을 arrayOf()로 묶어준다.
val imageID = arrayOf(
R.drawable.이미지이름,
R.drawable.이미지이름,
R.drawable.이미지이름,
R.drawable.이미지이름,
R.drawable.이미지이름
)
이미지 이름은 영어여야만 하니 한글과 숫자라면 수정해줘야한다.
arrayOf()에 이미지들을 넣고 이것을 변수 imageID로 선언
val imageView = findViewById< ImageView >(R.id.이미지id)를 넣어
처음에 넣어둔 이미지값을 초기화해준다.
이후에
val randomImageId = imageID[Random.nextInt(imageID.size)]
imageView.setImageResource(randomImageId) 를 입력
여기서 imageID는 아까 선언해둔 이미지들이 들어있는 배열 변수이며 이미지들이 들어있는 곳이고 뒤에 [Random.nextInt(imageID.size)]는 배열의 크기 내에서 무작위 정수를 생성하여 배열에서 무작위 이미지 ID를 선택한다.
imageView 앱의 레이아웃에서 정의한 이미지 뷰이며 , 무작위 이미지를 표시할 이미지 뷰를 가리킨다.
setImageResource(randomImageId)는 선택된 이미지의 리소스 ID(randomImageId)를 사용하여 이미지 뷰에 이미지를 설정하고 이 코드로 이미지 뷰가 해당 이미지로 업데이트되어 화면에 표시되게 된다.
정리하면 xml에 imageView 하나를 넣어두고, arrayOf()가 를 통해 이미지들을 넣고 변수를 선언후, imageView를 초기화.
새로운 변수를 하나 다시 설정하고 그곳에 arrayOf()가 담긴 변수를 넣어주고 배열 크기 내에서 무작위 이미지를 뽑아줄[Random.nextInt(imageID.size)] 코드를 작성하고 imageView.setImageResource(randomImageId) 코드를 작성하여 처음에 넣어두었던 imageView에 다른 이미지들도 뜨게 설정하고 randomImageId를 통해 이미지 뷰에 랜덤하게 이미지가 뜨게끔해주는것이다.
최종코드를 정리하면 다음과 같다
class mainActivity : AppCompatActivity() {
val imageID = arrayOf(
R.drawable.이미지이름,
R.drawable.이미지이름,
R.drawable.이미지이름,
R.drawable.이미지이름,
R.drawable.이미지이름
)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val imageView = findViewById< ImageView >(R.id.imageView2)
val randomImageId = imageID[Random.nextInt(imageID.size)]
imageView.setImageResource(randomImageId)
}
}
이렇게하면 1번 액티비티에서 2번 액티비티로 넘어가면 2번 액티비티에 이미지를 랜덤하게 뛰어준다.
유익한 자료 감사합니다.