Add Double Tap Listener To My Custom Imageview
I want to detect double tap on my custom ImageView this is what I have tried but no success: public class TouchImageView extends ImageView { Matrix matrix; // We can
Solution 1:
At last found a working solution:
public class CustomImageView extends ImageView {
private Context context;
private GestureListener mGestureListener;
private GestureDetector mGestureDetector;
public CustomImageView(Context context) {
super(context);
sharedConstructing(context);
}
public CustomImageView(Context context, AttributeSet attrs) {
super(context, attrs);
sharedConstructing(context);
}
public CustomImageView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
sharedConstructing(context);
}
private void sharedConstructing(Context context) {
super.setClickable(true);
this.context = context;
mGestureListener=new GestureListener();
Log.e("Adding", "Listener:::");
mGestureDetector = new GestureDetector( context, mGestureListener, null, true );
setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
mGestureDetector.onTouchEvent(event);
//..my other code logic
invalidate();
return true; // indicate event was handled
}
});
}
public class GestureListener extends GestureDetector.SimpleOnGestureListener {
@Override
public boolean onDoubleTap( MotionEvent e ) {
Log.e("onDoubleTap","onDoubleTap");
return true;
}
}
}
Solution 2:
private static final long DOUBLE_CLICK_TIME_DELTA = 300;//milliseconds
long lastClickTime = 0;
img.setOnClickListener(new View.OnClickListener(){
public void onClick(View view){
long clickTime = System.currentTimeMillis();
if (clickTime - lastClickTime < DOUBLE_CLICK_TIME_DELTA){
onDoubleClick(v);
lastClickTime = 0;
} else {
onSingleClick(v);
}
lastClickTime = clickTime;
}
});
Solution 3:
private static final long DOUBLE_CLICK_TIME_DELTA = 300;
long lastClickTime = 0;
case MotionEvent.ACTION_UP:
view.setAlpha((float) 1.0);
if(!isMoving){
long clickTime = System.currentTimeMillis();
if (clickTime - lastClickTime < DOUBLE_CLICK_TIME_DELTA){
doubleClick = true;
System.out.println("-----------double");
lastClickTime = 0;
} else {
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
if(!doubleClick){
System.out.println("--------------single");
}else
doubleClick = false;
}
},350);
}
lastClickTime = clickTime;
}
break;
Post a Comment for "Add Double Tap Listener To My Custom Imageview"