-
갤러리에서 사진 가져오기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