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 ...
随机推荐
- PHP面向对象考察点
面向对象三大特性 封装 封装性就是把对象的属性和服务结合成一个独立的相同单位,并尽可能隐蔽对象的内部细节,包含两个含义: 把对象的全部属性和全部服务结合在一起,形成一个不可分割的独立单位(即对象). ...
- chsh - 改变登录 shell
总览 (SYNOPSIS) chsh [ -s shell ] [ -l ] [ -u ] [ -v ] [ username ] 描述 (DESCRIPTION) chsh 用于 改变 用户的 登录 ...
- CAD参数绘制角度标注(com接口)
主要用到函数说明: _DMxDrawX::DrawDimAngular 绘制一个角度标注.详细说明如下: 参数 说明 DOUBLE dAngleVertexX 角度标注的顶点的X值 DOUBLE dA ...
- caffe实现自己的层
http://blog.csdn.net/xizero00/article/details/52529341 将这篇博客所讲进行了实现 1.LayerParameter也在caffe.proto文件中 ...
- java_String类练习
public class StringTest { //1.模拟trim方法,去除字符串两端的空格 public static void main(String[] args) { String st ...
- git 提交运用vim编辑器
git commit -m 默认使用nano,觉得不爽,改成vim吧.在 .gitconfig (在根目录下)的 [core] 段中加上 editor=vim . 或:$git config -- ...
- eclipse 的开发环境配置
一.基础环境设置 1.jdk下载配置 2.JRE下载配置 3.Eclipse下载 4.Eclipde 与JRE配置,见图 二.PHP环境设置 1.apache + PHP 配置. 详见随笔文章:Ecl ...
- MYSQL每日一学 - 时间间隔表达式
参考链接:https://dev.mysql.com/doc/refman/5.7/en/expressions.html Interval表达式(Temporal intervals)的使用 Int ...
- C#NumberFormatInfo类
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAA0sAAAD2CAIAAACImosXAAAgAElEQVR4nOy9V3Nk13X+vTt3owPSJJ ...
- Spring核心技术(八)——Spring自动装载的注解
本文针对自动装载的一些注解进行描述. 基于注解的容器配置 @Required注解 @Required注解需要应用到Bean的属性的setter方法上面,如下面的例子: public class Sim ...