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爲例
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.