Glide??
Glide는 구글에서 만든 이미지 로더 라이브러리다.
Glide의 with()는 Picasso와는 다르게 Context뿐 아니라 Activity와 Fragment도 인자로 사용할 수 있다.
나는 갤러리에서 이미지를 가져와 이미지뷰에 첨부할때 사용함
사용하면 진짜 간편쓰~
https://github.com/bumptech/glide
//glide
implementation ("com.github.bumptech.glide:glide:4.13.0")
annotationProcessor ("com.github.bumptech.glide:compiler:4.13.0")
URL을 사용하기 때문에 Manifest.xml파일에 Internet 사용 권한을 추가해줘야 한다.
application 태그 밖에 추가
<uses-permission android:name="android.permission.INTERNET"/>
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
binding = FragmentFrontprofileBinding.inflate(inflater,container, false)
binding.profileIv.setOnClickListener {
//갤러리 호출
val intent = Intent(Intent.ACTION_PICK)
//호출할 앱이 이미지 형식의 파일을 선택할 수 있도록 인텐트의 타입을 "image/*"로 설정
intent.type = "image/*"
//갤러리 앱이 닫힌 후에 실행되는 코드 블록을 정의
activityResult.launch(intent)
}
return binding.root
}
//이미지 가져오기
//activityResult라는 변수에 이 Contract를 사용하여 액티비티를 시작하고 결과를 처리하는 기능 정의
private val activityResult : ActivityResultLauncher<Intent> = registerForActivityResult(
ActivityResultContracts.StartActivityForResult()){
//결과 코드 ok && 결과 널 아닐때
if (it.resultCode == RESULT_OK && it.data != null){
//값 담기
//갤러리에서 선택된 이미지의 URI를 얻기
val uri = it.data!!.data
//액티비티가 아닌 프래그먼트이기때문에 this가 아닌 requireContext()사용
//with()메서드
//Glide를 사용하여 URI에서 이미지를 로드하고, binding.profileIv에 표시
Glide.with(requireContext()).load(uri) //이미지
.into(binding.profileIv) //이미지 보여줄 위치
}
}
Glide 메서드
1. with()
View, Fragment 혹은 Activity로부터 Context를 가져온다.
2. load()
이미지를 보여줄 View를 지정한다.
3. placeholder()
Glide로 이미지 로딩을 시작하기전에 보여줄 이미지를 설정한다.
4. error()
리소스를 불러오다가 에러가 발생했을 경우 보여줄 이미지를 설정한다.
5. fallback()
load할 URL이 null인 경우 등 비어있을 때 보여줄 이미지를 설정한다.