展会信息港展会大全

android viewpager
来源:互联网   发布日期:2015-10-02 17:21:43   浏览:1407次  

导读:viewpager 是一个好用,又华丽丽的控件。1. 禁止viewpager 左右滑动,但不影响viewpager 每个paer上的事件public class MainView ...

viewpager 是一个好用,又华丽丽的控件。

1. 禁止viewpager 左右滑动,但不影响viewpager 每个paer上的事件

public class MainView extends ViewPager{

private boolean isScrollable;

public MainView(Context context) {

super(context);

}

public MainView(Context context, AttributeSet attrs) {

super(context, attrs);

}

@Override

public boolean onTouchEvent(MotionEvent ev) {

if (isScrollable == false) {

return false;

} else {

return super.onTouchEvent(ev);

}

}

@Override

public boolean onInterceptTouchEvent(MotionEvent ev) {

if (isScrollable == false) {

return false;

} else {

return super.onInterceptTouchEvent(ev);

}

}

public boolean isScrollable() {

return isScrollable;

}

public void setScrollable(boolean isScrollable) {

this.isScrollable = isScrollable;

}

}

2.在别的控件嵌套了viewpager后,可能会拦截viewpager的滑动事件(这个在仿网易的1个样式中有用到)。

public class MyViewPager extends ViewPager {

int mLastMotionY;

int mLastMotionX;

public MyViewPager(Context context) {

super(context);

}

public MyViewPager(Context context, AttributeSet attrs) {

super(context, attrs);

}

@Override

public boolean dispatchTouchEvent(MotionEvent ev) {

getParent().requestDisallowInterceptTouchEvent(true); //只需这句话,让父类不拦截触摸事件就可以了。

return super.dispatchTouchEvent(ev);

}

}

3.viewpager 嵌套viewpager 或者 是需要动态改变 viewpager 是否需要被父view拦截事件的时候(这个就需要进行判断然后动态的返回 true 或 false)

这个是被嵌套的 viewpager的代码,

public class TopViewPager extends ViewPager{

//后在onTouchEvent,onInterceptTouchEvent,dispatchTouchEvent里面告诉父View,也就是ViewPager不要拦截该控件上的触摸事件。

//

public TopViewPager(Context context, AttributeSet attrs) {

super(context, attrs);

// TODO Auto-generated constructor stub

}

public TopViewPager(Context context) {

super(context);

// TODO Auto-generated constructor stub

}

float curX = 0f;

float downX = 0f;

@Override

public boolean onTouchEvent(MotionEvent arg0) {

// TODO Auto-generated method stub

//switch (arg0.getAction()) {

//case value:

//

//break;

//

//default:

//break;

//}

curX = arg0.getX();

if(arg0.getAction() == MotionEvent.ACTION_DOWN){

downX = curX;

}

int curIndex = getCurrentItem();

if(curIndex == 0){

System.out.println("00");

if(downX = curX(=)原来放在上面发现会有手势 滑动不成功的时候,放下来后解决了。

getParent().requestDisallowInterceptTouchEvent(true);

}

}else if(curIndex == getAdapter().getCount()-1){

if(downX >= curX){

getParent().requestDisallowInterceptTouchEvent(true);

}else{

getParent().requestDisallowInterceptTouchEvent(true);

}

}else{

getParent().requestDisallowInterceptTouchEvent(true);

}

return super.onTouchEvent(arg0);

}

}

赞助本站

人工智能实验室

相关热词: android开发 教程

AiLab云推荐
展开

热门栏目HotCates

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