andorid自己定义ViewPager之——子ViewPager滑到边缘后直接滑动父ViewPager
近期的项目中,有一个需求要用ViewPager中嵌套ViewPager去实现整个效果。没做不论什么处理做出来后,仅仅能不停的滑动子ViewPager,父ViewPager就无法滑动了,这样肯定是不满足的,分析了一下原因,非常显示是整个滑动事件都被子ViewPager消耗掉了,所以仅仅能对ViewPager做一下自己定义处理。才干够实现。
下面是这个需求实现后的效果图:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGNxNTIxMTMxNDEyMw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" height="402" width="254" alt="">
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGNxNTIxMTMxNDEyMw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" height="402" width="278" alt="">
从图上就能够看出:我们用ViewPager中嵌套了ViewPager,并且要实现的是子ViewPager滑动到最后一页时,再滑就是滑动父ViewPager.以下将自己定义的ViewPager代码贴出来。大家能够參考下。
- /**********************************************************
- * @文件名:MyViewPager.java
- * @创建时间:2014年11月18日 下午4:24:25
- * @改动历史:2014年11月18日创建初始版本号
- **********************************************************/
- public class MyViewPager extends ViewPager
- {
- //父ViewPager的引用
- private ViewPager viewPager;
- private boolean flag = true;
- private float mLastMotionX;
- public BookstoreViewPager(Context context)
- {
- super(context);
- }
- public BookstoreViewPager(Context context, AttributeSet attrs)
- {
- super(context, attrs);
- }
- public ViewPager getViewPager()
- {
- return viewPager;
- }
- //处理前必须调用此方法初始化冲突ViewPager
- public void setViewPager(ViewPager viewPager)
- {
- this.viewPager = viewPager;
- }
- @Override
- public boolean dispatchTouchEvent(MotionEvent ev)
- {
- final float x = ev.getX();
- switch (ev.getAction())
- {
- case MotionEvent.ACTION_DOWN:
- // 使父控件不处理不论什么触摸事件
- viewPager.requestDisallowInterceptTouchEvent(true);
- flag = true;
- mLastMotionX = x;
- break;
- case MotionEvent.ACTION_MOVE:
- if (flag)
- {
- if (x - mLastMotionX > 5 && getCurrentItem() == 0)
- {
- flag = false;
- viewPager.requestDisallowInterceptTouchEvent(false); //将事件交由父控件处理
- }
- if (x - mLastMotionX < -5 && getCurrentItem() == getAdapter().getCount() - 1)
- {
- flag = false;
- viewPager.requestDisallowInterceptTouchEvent(false);
- }
- }
- break;
- case MotionEvent.ACTION_UP:
- viewPager.requestDisallowInterceptTouchEvent(false);
- break;
- case MotionEvent.ACTION_CANCEL:
- viewPager.requestDisallowInterceptTouchEvent(false);
- break;
- }
- return super.dispatchTouchEvent(ev);
- }
- }
andorid自己定义ViewPager之——子ViewPager滑到边缘后直接滑动父ViewPager的更多相关文章
- viewpager与子view的事件冲突解决
问题: 对android的事件机制一直不怎么了解,最近android项目中运用viewpager+listview (就是viewpager的子view中嵌套了listview),出现了触摸手势冲突 ...
- 关于在ViewPager的子页面中不能跳转的问题
关于在ViewPager的子页面中不能跳转的问题 什么是ViewPager? 相信很多人使用过微信,其实微信的四个子页面:微信.通讯录.发现.我以及下面的引导空间就是ViewPager. 出现的问题: ...
- 自定义循环滑动的viewpager
今天和大家分享一下如何定制一个可以循环滑动的viewpager.其实今天更重要的提供一种组件化思想,当然你可以理解为面向对象思想. 吐槽一下网上流行的实现方式吧(为了方便说明,下文称之为方式A),方式 ...
- 使用ViewPager+Fragment来实现带滚动条的多屏滑动-IndicatorFragmentActivity
转载请注明出处:http://blog.csdn.net/singwhatiwanna/article/details/17201587 介绍 在android应用中,多屏滑动是一种很常见的风格,博主 ...
- Android-垂直滑动的ViewPager
该ViewPager和正常的ViewPager的使用方式是一样的,只不过是垂直滑动的. 下面是这个ViewPager的代码 /** * 垂直滑动的ViewPager */ public class V ...
- vue里使用elementUI里的下拉树表格,如何定义个性化的子表格?
最近项目写到一个业务,首先需要展示各类分组的基本信息,然后需要点击每个分组展示该分组下子的所有具体信息 一开始我是打算用tab来展示就是首先父分组的名称就是各个不同的tab按钮,然后点击按钮再展示不同 ...
- 自己定义ViewpagerIndicator (仿猫眼,加入边缘回弹滚动效果)
一.概述 今天主要来分享个自己定义viewpagerindicator.效果主要是仿 猫眼电影 顶部的栏目切换.也就是我们常说的indicator,难度简单,为了让滑动时效果更炫酷,我在滑动到左边第一 ...
- [转]MFC子线程更改图像数据后更新主窗口图像显示方法
程序思路是由外部的输入输出控制卡发出采集图像信号,之后相机采集图像得到图像数据指针,接收图像数据指针创建成图像最后显示到MFC对话框应用程序的Picture Control控件上,同时,为了标定相机位 ...
- 042——VUE中组件之子组件使用$on与$emit事件触发父组件实现购物车功能
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
随机推荐
- 【C++】朝花夕拾——STL vector
STL之vector篇 N久之前是拿C的数组实现过vector中的一些简单功能,什么深拷贝.增删查找之类的,以为vector的实现也就是这样了,现在想想真是...too young too naive ...
- zookeeper、consul 实现注册中心
1.Zookeeper 分布式协调工具,可以实现注册中心 所有实现方式基本一致,只需要先开启zookeeper的服务端,然后再打开客户端jar包即可. Zookeeper一开始连接失败,后面又可以了, ...
- Oracle数据库自定义函数练习20181031
--测试函数3 CREATE OR REPLACE FUNCTION FN_TEST3 (NUM IN VARCHAR2) RETURN VARCHAR2 IS TYPE VARCHAR2_ARR ) ...
- 四、spring中高级装配(2)
这个是接着上一篇写的,这章内容较多,分开来记录一下... 三.处理自动装配的歧义性 自动装配让spring完全负责bean引用注入到构造参数和属性中,不过,仅有一个bean匹配所需的结果时,自动装配才 ...
- 【讲●解】火车进出栈类问题 & 卡特兰数应用
火车进出栈类问题详讲 & 卡特兰数应用 引题:火车进出栈问题 [题目大意] 给定 \(1\)~\(N\) 这\(N\)个整数和一个大小无限的栈,每个数都要进栈并出栈一次.如果进栈的顺序为 \( ...
- mysql错误Error(1133): Can’t find any matching row in the use
执行插入用户语句没有问题,但是执行权限赋值的时候提示:1133 - Can't find any matching row in the user table; 解决办法:插入新的用户成功时,需要刷新 ...
- uva 10596 - Morning Walk
Problem H Morning Walk Time Limit 3 Seconds Kamal is a Motashota guy. He has got a new job in Chitta ...
- PHP:GD库 图片水印处理
文章来源:http://www.cnblogs.com/hello-tl/p/7592974.html <?php /** * 处理图片类 * 1.添加文字水印 * 2.添加图片水印 * 3.压 ...
- CSRF之Ajax请求
A:Ajax提交数据是,携带的CSRF在data中: <form method="POST" action="/csrf.html"> {% csr ...
- Jackson入门
Jackson 框架,轻易转换JSON Jackson可以轻松的将Java对象转换成json对象和xml文档,同样也可以将json.xml转换成Java对象. 前面有介绍过json-lib这个框架,在 ...