展会信息港展会大全

Gallery中嵌套ListView,Gallery不能滑动的问题
来源:互联网   发布日期:2015-11-26 10:09:41   浏览:2028次  

导读:直接代码,请看注释/* * 引入相关类 * */import android.content.Context;import android.util.AttributeSet;import android.view.MotionEvent;import android.view.ViewConfiguration;import android.......

直接代码,请看注释

/*

* 引入相关类

* */

import android.content.Context;

import android.util.AttributeSet;

import android.view.MotionEvent;

import android.view.ViewConfiguration;

import android.widget.Gallery;

/*

* 继承Gallery,重写onInterceptTouchEvent(MotionEvent ev)方法

* */

public class BetterGallery extends Gallery {

private float mLastMotionX;//滑动过程中,x方向的初始坐标

private float mLastMotionY;//滑动过程中,y方向的初始坐标

private int mTouchSlop;//手指大小的距离

/*

* 三个构造函数

* */

public BetterGallery(Context context, AttributeSet attrs, int defStyle) {

super(context, attrs, defStyle);

init();

}

public BetterGallery(Context context, AttributeSet attrs) {

super(context, attrs);

init();

}

public BetterGallery(Context context) {

super(context);

init();

}

/*

* 初始化,设置x方向移动的最小距离为手指大小时,拦截处理事件,可以设置需要的大小

* */

private void init() {

final ViewConfiguration configuration = ViewConfiguration

.get(getContext());

mTouchSlop = configuration.getScaledTouchSlop();

}

/*

* 重写的方法,最关键的地方

* */

public boolean onInterceptTouchEvent(MotionEvent ev) {

final int action = ev.getAction();//获取触摸事件类型

final float x = ev.getX();//每次触摸事件的x坐标

final float y = ev.getY();//每次触摸事件的y坐标

switch (action) {

case MotionEvent.ACTION_DOWN://按下事件

mLastMotionX = x;//初始化每次触摸事件的x方向的初始坐标,即手指按下的x方向坐标

mLastMotionY = y;//初始化每次触摸事件的y方向的初始坐标,即手指按下的y方向坐标

break;

case MotionEvent.ACTION_MOVE:

final int deltaX = (int) (mLastMotionX - x);//每次滑动事件x方向坐标与触摸事件x方向初始坐标的距离

final int deltaY = (int) (mLastMotionY - y);//每次滑动事件y方向坐标与触摸事件y方向初始坐标的距离

boolean xMoved = Math.abs(deltaX) > mTouchSlop && Math.abs(deltaY/deltaX) < 1;

//判断触摸事件处理的传递方向,该业务中是,

//x方向的距离大于手指,并且y方向滑动的距离小于x方向的滑动距离时,Gallery消费掉此次触摸事件

//如果需要,请在您的业务中,改变判断的逻辑

if (xMoved) {//Gallery需要消费掉此次触摸事件

return true;//返回true就不会将此次触摸事件传递给子View了,我的业务中是ListView

}

break;

}

return false;//将此次触摸事件传递给子View,即ListView

}

}

赞助本站

人工智能实验室

相关热词: Gallery 嵌套 ListView 滑动

AiLab云推荐
推荐内容
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港