我在ImageView上加了OnGestureListener: @Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
// 参数解释:
// e1:第1个ACTION_DOWN MotionEvent
// e2:最后一个ACTION_MOVE MotionEvent
// velocityX:X轴上的移动速度,像素/秒
// velocityY:Y轴上的移动速度,像素/秒
// 触发条件 :
// X轴的坐标位移大于FLING_MIN_DISTANCE,且移动速度大于FLING_MIN_VELOCITY个像素/秒
return onSliding(e1, e2, velocityX, velocityY);
} /**
* 滑动
* @param e1
* @param e2
* @param velocityX
* @param velocityY
* @return
*/
private boolean onSliding(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
if (listener == null) {
return false;
} if (!listener.isCanSliding()) {
return false;
} //未获取触点坐标
if (e1==null || e2==null){
return false;
}
listener.beforeSliding(); if ((e1.getX() - e2.getX()) > FLING_MIN_DISTANCE)//&& Math.abs(velocityX) > FLING_MIN_VELOCITY
{
// 当像左侧滑动的时候
//设置View进入屏幕时候使用的动画
listener.showNext();
Log.v(TAG, "sliding next:" + String.valueOf(e2.getX()));
} else if ((e2.getX() - e1.getX()) > FLING_MIN_DISTANCE)//&& Math.abs(velocityX) > FLING_MIN_VELOCITY
{
// 当像右侧滑动的时候
listener.showPrevious();
Log.v(TAG, "sliding previous:" + String.valueOf(e2.getX()));
} this.target.setPressed(false); Log.v("onFling", velocityX + " - " + velocityY);
listener.afterSliding();
return true;
}如果手势不是沿接近X轴的方向移动,取得到e1为null,否则能取得e1。但我把手势加到RelativeLayout上时,手势沿并非x轴的方法移动则到取到e1,这是怎么回事,哪位大哥帮忙解答一下。
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
// 参数解释:
// e1:第1个ACTION_DOWN MotionEvent
// e2:最后一个ACTION_MOVE MotionEvent
// velocityX:X轴上的移动速度,像素/秒
// velocityY:Y轴上的移动速度,像素/秒
// 触发条件 :
// X轴的坐标位移大于FLING_MIN_DISTANCE,且移动速度大于FLING_MIN_VELOCITY个像素/秒
return onSliding(e1, e2, velocityX, velocityY);
} /**
* 滑动
* @param e1
* @param e2
* @param velocityX
* @param velocityY
* @return
*/
private boolean onSliding(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
if (listener == null) {
return false;
} if (!listener.isCanSliding()) {
return false;
} //未获取触点坐标
if (e1==null || e2==null){
return false;
}
listener.beforeSliding(); if ((e1.getX() - e2.getX()) > FLING_MIN_DISTANCE)//&& Math.abs(velocityX) > FLING_MIN_VELOCITY
{
// 当像左侧滑动的时候
//设置View进入屏幕时候使用的动画
listener.showNext();
Log.v(TAG, "sliding next:" + String.valueOf(e2.getX()));
} else if ((e2.getX() - e1.getX()) > FLING_MIN_DISTANCE)//&& Math.abs(velocityX) > FLING_MIN_VELOCITY
{
// 当像右侧滑动的时候
listener.showPrevious();
Log.v(TAG, "sliding previous:" + String.valueOf(e2.getX()));
} this.target.setPressed(false); Log.v("onFling", velocityX + " - " + velocityY);
listener.afterSliding();
return true;
}如果手势不是沿接近X轴的方向移动,取得到e1为null,否则能取得e1。但我把手势加到RelativeLayout上时,手势沿并非x轴的方法移动则到取到e1,这是怎么回事,哪位大哥帮忙解答一下。
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货