展会信息港展会大全

Android 解决Gallery下ScrollView滑动事件冲突
来源:互联网   发布日期:2015-10-03 10:53:48   浏览:2030次  

导读:在Gallery下,里面内容过长超出屏幕,这时我们可以用ScrollView来滚动,但是这样做了以后,会发现一个问题,Gallery的滑动事件和ScrollView的滑动事件起冲突,这时我们可...

在Gallery下,里面内容过长超出屏幕,这时我们可以用ScrollView来滚动,但是这样做了以后,会发现一个问题,Gallery的滑动事件和ScrollView的滑动事件起冲突,这时我们可以自定义Gallery控件来避免这个问题:

下面贴出代码:

[java]

import android.content.Context;

import android.util.AttributeSet;

import android.view.KeyEvent;

import android.view.MotionEvent;

import android.widget.Gallery;

public class TestGallery extends Gallery {

private float gTouchStartX;

private float gTouchStartY;

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

super(context, attrs, defStyle);

}

public TestGallery(Context context, AttributeSet attrs) {

super(context, attrs);

}

public TestGallery(Context context) {

super(context);

}

@Override

public boolean onInterceptTouchEvent(MotionEvent ev) {

int action = ev.getAction();

switch(action){

case MotionEvent.ACTION_DOWN:

gTouchStartX = ev.getX();

gTouchStartY = ev.getY();

super.onTouchEvent(ev);

break;

case MotionEvent.ACTION_MOVE:

final float touchDistancesX = Math.abs(ev.getX()-gTouchStartX);

final float touchDistancesY = Math.abs(ev.getY()-gTouchStartY);

if(touchDistancesY *2 >= touchDistancesX){

return false;

}else{

return true;

}

case MotionEvent.ACTION_CANCEL:

break;

case MotionEvent.ACTION_UP:

break;

}

return false;

}

@Override

public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,

float velocityY) {

if(e2.getX() > e1.getX()){

onKeyDown(KeyEvent.KEYCODE_DPAD_LEFT, null);

}else{

onKeyDown(KeyEvent.KEYCODE_DPAD_RIGHT, null);

}

return false;

}

}

赞助本站

人工智能实验室

相关热词: android开发 教程

AiLab云推荐
推荐内容
展开

热门栏目HotCates

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