GESTURE DETECTOR ON VIEWS | IMAGEVIEW | TEXTVIEW | BUTTON | RELATIVELAYOUT

Gesture Detector

        Gesture detector is used to find detect gestures like single tap,double tap, single tap confirmed, onfling , scrolling etc,.

 

activity_layout.xml

<Button     
       android:textColor="@android:color/white" 
       android:backgroundTint="@android:color/holo_blue_dark" 
       android:text="touch me "
       android:layout_centerInParent="true" 
       android:id="@+id/button"
       android:layout_width="match_parent"     
       android:layout_height="110dp" />
 

Declare gesture detector object
 lateinit var mygestureDetector: GestureDetector

 

Define gesture detector object in oncreate

 mygestureDetector = GestureDetector(this@MainActivity, MyGestureDetector())
 
 
Define touch listener object  
 var touchListener = View.OnTouchListener{
    v,event->
    mygestureDetector.onTouchEvent(event)
}
 
 
Set  touch listener on View

button.setOnTouchListener(touchListener)

 

Gesture Detector class 

class MyGestureDetector : GestureDetector.SimpleOnGestureListener() {
    var GESTURETAGBUTTON = "MAINACTIVITYTOUCHMEBUTTON"
    override fun onSingleTapUp(e: MotionEvent?): Boolean {
        Log.d(GESTURETAGBUTTON,"single tap up")
        return super.onSingleTapUp(e)
    }

    override fun onDown(e: MotionEvent?): Boolean {
        Log.d(GESTURETAGBUTTON,"on down")

        return super.onDown(e)
    }

    override fun onFling(e1: MotionEvent?, e2: MotionEvent?, velocityX: Float, velocityY: Float): Boolean {
        Log.d(GESTURETAGBUTTON,"on fling\t Veloxity x \t\t"+velocityX+"\t\tveloxity y\t\t"+velocityY)
        //handle the values here        return super.onFling(e1, e2, velocityX, velocityY)
    }

    override fun onDoubleTap(e: MotionEvent?): Boolean {
        Log.d(GESTURETAGBUTTON,"double  tap ")
        return super.onDoubleTap(e)
    }

    override fun onScroll(e1: MotionEvent?, e2: MotionEvent?, distanceX: Float, distanceY: Float): Boolean {
        Log.d(GESTURETAGBUTTON,"on scroll\t   \t\t"+distanceX+"\t\tveloxity y\t\t"+distanceY)
        //handle the values here        return super.onScroll(e1, e2, distanceX, distanceY)
    }
    override fun onContextClick(e: MotionEvent?): Boolean {
        return super.onContextClick(e)
    }

    override fun onSingleTapConfirmed(e: MotionEvent?): Boolean {
        Log.d(GESTURETAGBUTTON,"single confirmed")
        return super.onSingleTapConfirmed(e)
    }

    override fun onShowPress(e: MotionEvent?) {
        super.onShowPress(e)
        Log.d(GESTURETAGBUTTON,"on show press")
    }

    override fun onDoubleTapEvent(e: MotionEvent?): Boolean {
        Log.d(GESTURETAGBUTTON,"on double tap")
        return super.onDoubleTapEvent(e)
    }

    override fun onLongPress(e: MotionEvent?) {
        super.onLongPress(e)
        Log.d(GESTURETAGBUTTON,"on long press")

    }
}

 


 


Comments

Popular posts from this blog

Share Text, Images, Multiple Images Using Kotlin

ButterKnife with Kotlin