Advertisement
rizkirchm

ImageZoomView

Nov 17th, 2022
1,074
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Kotlin 2.15 KB | Source Code | 0 0
  1. package pkp.mobile.fmcollection.custom_view
  2.  
  3. import android.content.Context
  4. import android.graphics.Bitmap
  5. import android.graphics.Matrix
  6. import android.graphics.drawable.Drawable
  7. import android.util.AttributeSet
  8. import android.view.MotionEvent
  9. import android.view.ScaleGestureDetector
  10. import android.view.View
  11. import android.widget.ImageView
  12. import kotlinx.android.synthetic.main.activity_edit_pdf.*
  13.  
  14. /**
  15.  * created by RIZKI RACHMANUDIN on 17/11/2022
  16.  */
  17. class ImageZoomView: androidx.appcompat.widget.AppCompatImageView {
  18.     private lateinit var mBitmap: Bitmap
  19.  
  20.     private lateinit var mScaleGestureDetector: ScaleGestureDetector
  21.     private var mScaleFactor = 1.0f
  22.  
  23.     private lateinit var mMatrix: Matrix
  24.  
  25.     constructor(context: Context) : super(context) {
  26.         init(context)
  27.     }
  28.  
  29.     constructor(context: Context,  attrs: AttributeSet?) : super(context, attrs) {
  30.         init(context)
  31.     }
  32.  
  33.     constructor(context: Context?, attrs: AttributeSet?, defStyleAttr: Int) : super(context!!, attrs, defStyleAttr) {
  34.         init(context)
  35.     }
  36.  
  37.     private fun init(context: Context?) {
  38.         mScaleGestureDetector = ScaleGestureDetector(context, ScaleListener())
  39.         mMatrix = Matrix()
  40.         mMatrix.setScale(mScaleFactor, mScaleFactor)
  41.     }
  42.  
  43.     override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {
  44.         super.onMeasure(widthMeasureSpec, heightMeasureSpec)
  45.  
  46.     }
  47.  
  48.     override fun onTouchEvent(event: MotionEvent?): Boolean {
  49.         super.onTouchEvent(event)
  50.         mScaleGestureDetector.onTouchEvent(event)
  51.         performClick()
  52.         return true
  53.     }
  54.  
  55.     override fun performClick(): Boolean {
  56.         super.performClick()
  57.  
  58.         return true
  59.     }
  60.  
  61.     private inner class ScaleListener: ScaleGestureDetector.SimpleOnScaleGestureListener() {
  62.         override fun onScale(detector: ScaleGestureDetector): Boolean {
  63.             mScaleFactor *= detector.scaleFactor
  64.             mScaleFactor = 0.1f.coerceAtLeast(mScaleFactor.coerceAtMost(10.0f))
  65. //            mBitmap.scaleX = mScaleFactor
  66. //            mBitmap.scaleY = mScaleFactor
  67.             return true
  68.         }
  69.     }
  70.  
  71. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement