-
Notifications
You must be signed in to change notification settings - Fork 1
FlexibleImageView
Sieun Ju edited this page Feb 1, 2022
·
3 revisions
- ์ ์ค์ฒ๋ฅผ ํตํด ์ด๋ฏธ์ง๋ฅผ Move, Scale, Rotate ์ฒ๋ฆฌ ํ ์ ์๋ ImageView ๊ธฐ๋ฐ ํด๋์ค์ ๋๋ค.
- FlexibleImageView๋ ์ ๋ ๋จ๋ ์ ์ผ๋ก ์์ผ๋ฉด ์๋ฉ๋๋ค. FrameLayout ์ด๋ ConstraintLayout ์ ๊ฐ์ธ๊ณ ์์ด์ผ ํฉ๋๋ค.
- ์ฌ์ฉ์ ์ ์ค์ฒ๋ฅผ ํตํ Move, Scale, Rotate
- ํด๋น ๋ทฐ ๋ฒ์ ๋ฐ์ผ๋ก ๋์ด๊ฐ์์ ๋ค์ ๋๋์ ์ค๋ ์ ๋๋ฉ์ด์
- ์ด๋ฏธ์ง ์บก์ฒ ๊ธฐ๋ฅ
- loadUrl (url : String)
- Function Parameter
- url (String) ๋ก๋ ํ๊ณ ์ถ์ ์ธ๋ถ ์ด๋ฏธ์ง ์ฃผ์๋ ๊ฐค๋ฌ๋ฆฌ ์ด๋ฏธ์ง URL
- ๋ก๋ํ๊ณ ์ถ์ URL ๋ฅผ ํธ์ถํ์ฌ ์ด๋ฏธ์ง๋ทฐ์ ๋ ๋๋ง ์ฒ๋ฆฌํฉ๋๋ค.
- Function Parameter
- centerCrop
- ์ด๋ฏธ์ง ๋ฐ์ด๋๋ฆฌ๋ฅผ FlexibleImageView ๋๋น์ ๋์ด๋ฅผ ๋น์จ์ ๋ง๊ฒ ๊ฝ์ฑ์ฐ๋ ํจ์์ ๋๋ค.
- fitCenter
- ์ด๋ฏธ์ง ๋ฐ์ด๋๋ฆฌ๋ฅผ FlexibleImageView ๋๋น์ ๋์ด๋ฅผ ๋์ค ํ๋์ ๋ง์ถฐ์ ํ๋ ์ฒ๋ฆฌ ํ๋ ํจ์์ ๋๋ค.
- getStateItem: RectF
- ํ์ฌ ์ด๋ฏธ์ง ์ขํ๊ฐ์ ๋ฆฌํด ํ๋ ํจ์
-
captureBitmap() : Bitmap
- FlexibleImageView๋ฅผ ๊ฐ์ธ๊ณ ์๋ ๋ทฐ ๊ธฐ์ค์ผ๋ก ์บก์ฒํ์ฌ Bitmap ์ผ๋ก ๋ฆฌํดํ๋ ํจ์์ ๋๋ค.
-
backgroundCaptureBitmap() : Bitmap
- FlexibleImageView๋ฅผ ํตํด ์์ง์ธ ์ด๋ฏธ์ง ์ขํ๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ฐฑ๊ทธ๋ผ์ด๋ ์ํ๋ก ์บก์ฒ ํ ์ ์๋ ํจ์ฉ๋๋ค.
- ์ฌ๋ฌ๊ฐ์ ์ด๋ฏธ์ง๋ค์ ์์ง์ธ ์ขํ, ์ค์ผ์ผ ๊ฐ๋ง ๋ฏธ๋ฆฌ ์ ์ฅํด๋๊ณ ๋์ค์ Bitmap ์ผ๋ก ๋ณ๊ฒฝํ๊ณ ์ ํ ๋ ์ฌ์ฉํ์๋ฉด ์ข์ต๋๋ค.
Glide.with(requireContext()) .asDrawable() .load(imageUrl) .into(object : CustomTarget<Drawable?>() { override fun onResourceReady( resource: Drawable, transition: Transition<in Drawable?>? ) { val bitmapDrawable = resource as BitmapDrawable GlobalScope.launch { val bitmap = withContext(Dispatchers.IO) { backgroundCaptureBitmap( bitmapDrawable.bitmap, stateItem, flexibleCaptureView.width, flexibleCaptureView.height ) } withContext(Dispatchers.Main) { view.findViewById<AppCompatImageView>(R.id.imgCapture) .setImageBitmap(bitmap) } } } override fun onLoadCleared(placeholder: Drawable?) { } })