package com.bdyl.view;
import com.bdyl.constance.Logs;
import android.content.Context;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
import android.widget.ImageView;
public class MyImage extends ImageView {
private float mOldX;
private float mOldY;
private float mCurrentX;
private float mCurrentY;
private int state = -1;
public static final int left = 1;
public static final int right = 2;
public static final int normal = 3;
public MyImage(Context context, AttributeSet attrs) {
super(context, attrs);
}
/*
*重写触摸事件
*/
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
// 按下
case MotionEvent.ACTION_DOWN:
mOldX = event.getX();
mOldY = event.getY();
state = normal;
break;
// 移动,根据座标判断移动方向(偏移量是需要定义dimen,这里为了方便)
case MotionEvent.ACTION_MOVE:
mCurrentX = event.getX();
mCurrentY = event.getY();
if (mCurrentX - mOldX > 0 && Math.abs(mCurrentY - mOldY) < 10) {
state = right;
Logs.v("向右>>>>");
}
else if (mCurrentX - mOldX < 0
&& Math.abs(mCurrentY - mOldY) < 10) {
state = left;
Logs.v("向向左>>>>");
}
else if (mCurrentY - mOldY > 0
&& Math.abs(mCurrentX - mOldX) < 10) {
}
else if (mCurrentY - mOldY < 0
&& Math.abs(mCurrentX - mOldX) < 10) {
}
break;
// 释放
case MotionEvent.ACTION_UP:
switch (state) {
case right:
mMoveListener.last();
Logs.v("向right up ");
break;
case left:
mMoveListener.next();
Logs.v("向向左 up ");
break;
case normal:
mMoveListener.click();
break;
}
break;
}
return true;
}
private OnMovePicture mMoveListener;
public void setOnMovePicture(OnMovePicture move){
mMoveListener= move;
}
/*
*左右滑动点击的回调接口
*/
public interface OnMovePicture{
void next();
void last();
void click();
}
}
自定义view重写触摸事件-imageview为例
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.