ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 갤러리에서 사진 가져오기
    Android 2022. 7. 21. 18:45

    안드로이드 앱에서 기존 사진을 가져오는 방법으로 다음 두 가지가 있다.

    1. 기본 갤러리 앱 사용

    2. 커스텀 갤러리 화면 만들기

     

    기본 갤러리 앱을 사용해 사진을 가져와보자.

    암시적 Intent를 사용하면 쉽게 갤러리 앱을 사용할 수 있다.

     

    1.  기본 갤러리 앱 실행

    Intent 객체를 생성하고 갤러리 액티비티 실행하기 위한 정보를 세팅한다.

    startActivityForResult의 두 번째 인자로 나중에 확인을 위한 request Code 값을 넣자.

     private fun startDefaultGalleryApp() {
            val intent = Intent()
            intent.type = "image/*"
            intent.action = Intent.ACTION_GET_CONTENT
            startActivityForResult(intent, DEFAULT_GALLERY_REQUEST_CODE)
    }

     

    2. 갤러리 앱 실행 결과 처리하기 

    // 갤러리 화면에서 이미지를 선택한 경우 현재 화면에 보여준다.
        override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
            super.onActivityResult(requestCode, resultCode, data)
    
            if (resultCode != Activity.RESULT_OK) {
                return
            }
    
            when (requestCode) {
                DEFAULT_GALLERY_REQUEST_CODE -> {
                    data?:return
                    val uri = data.data as Uri
                   	// 이미지 URI를 가지고 하고 싶은거 하면 된다.
                }
    
                else -> {
                    Toast.makeText(this, "사진을 가져오지 못했습니다.", Toast.LENGTH_SHORT).show()
                }
            }
        }

    갤러리 액티비티로부터 결과 데이터를 처리하기 위해서는 onActivityResult() 함수를 오버라이딩한다.

    해당 함수의 인자는 3개

    첫 번째 인자 RequestCode는 startActivityForResult() 함수의 두 번째 인자로 넘겨줬던 값과 동일한 값이 넘어오고
    두 번째 인자는 resultCode로 사진을 정상적으로 선택하였다면 RESULT_OK 값이 넘어오며 뒤로 가기 버튼으로 작업을 취소한 경우 RESULT_CANCELED 값이 넘어온다. 해당 코드값을 확인하여 액티비티에서 적절한 처리를 해주면 된다.

    마지막 세 번째 인자로 갤러리 액티비티로부터 넘어온 결과 데이터가 담겨있는 Intent 객체이다.

     

    결론 : 커스텀 갤러리 화면을 만들자

    구현 로직이 간단한 것을 알 수 있는데, 실제 유명 서비스 (카카오톡, 페북 등등)의 경우 이렇게 기본 갤러리 앱을 사용하는 경우는 거의 없다. 서비스 성격에 맞게 각각의 갤러리 화면을 만들어서 사용하라고 하셨다.

    'Android' 카테고리의 다른 글

    툴바 만들기  (0) 2022.07.28
    버튼에 기능 넣기  (0) 2022.07.25
    계산기 레이아웃 디자인 해보기  (0) 2022.07.24
    BTS 갤러리 앱 만들어보기  (0) 2022.07.20
    안드로이드 개발자 로드맵  (0) 2022.07.15
Designed by Tistory.