ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • android 이미지 다중선택
    개발/Android 2021. 7. 13. 20:51

    현재 메신저 앱을 만들고 있는중인데,

    이미지를 다중 선택하여 전송하는 기능을 구현하여 한번 정리해 보려한다.



    intent 부분

    val intent = Intent()
                intent.type = "image/*"
                intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
                intent.action = Intent.ACTION_PICK
                requestActivity.launch(intent)

    intent에 Intent.EXTRA_ALLOW_MULTIPLE 해당 값을 true로 넣어주어야 멀티초이스를 지원하게 됨.



    requestActivity 부분

    private val requestActivity =
            registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {
                if (it.resultCode == Activity.RESULT_OK && it.data?.data != null) { //갤러리 캡쳐 결과값
                    val clipData = it?.data?.clipData
                    val clipDataSize = clipData?.itemCount
                    if (clipData == null) { //이미지를 하나만 선택할 경우 clipData가 null이 올수 있음
                            val selectedImageUri = it?.data?.data!!
                                                    //TODO 얻어온 이미지 uri로 작업 진행
                        )
    
                    } else {
                        clipData.let { clipData ->
                            for (i in 0 until clipDataSize!!) { //선택 한 사진수만큼 반복
                                val selectedImageUri = clipData.getItemAt(i).uri
                                 //TODO 얻어온 이미지 uri로 작업 진행
                            }
                        }
                    }
    
                }

    위 소스 코드에서 볼수 있듯이. 다중 이미지 선택시 clipData형태로 오게되고 해당 clipData size만큼 for 문을 돌려 uri를 얻어올수 있다.

    해당 이미지 uri를 bitmap으로 바꾸든,

    glide로 이미지 보여주든 개발자가 원하는데로 작업을 하면 된다.

    '개발 > Android' 카테고리의 다른 글

    Android Room TypeConverters  (0) 2021.07.19
    (jetpack) LiveData  (0) 2021.07.16
    Android 데이터 직렬화  (0) 2021.07.15
    android notification 즉시응답  (0) 2021.07.15
    (jetpack) ROOM 사용 방법  (0) 2021.07.12

    댓글

Designed by Tistory.