老套路先上效果图:

可以在临界点滑动的ViewPager,上图效果是;两个ViewPager,一个垂直一个水平滑动的,这次主要讲解临界点左右滑动,实际上很简单,只需要自定义ViewPager在事件分发中的分发事件中获取按下的坐标,然后在onTouch事件中的UP(抬起)事件中做相应的判断,记住一定要在抬起事件,不能在移动事件中,否则会调用多次。具体看代码:

package com.tm.live.ui.view;import android.content.Context;
import android.support.v4.view.ViewPager;
import android.util.AttributeSet;
import android.view.MotionEvent;/*** @author xiayiye5* 说明:监听在临界边界还继续左滑右滑监听的ViewPager*/
public class LeftRightViewPager extends ViewPager {/*** 开始点击的位置*/private int startX;/*** 临界值*/private int criticalValue = 200;/*** 边界滑动回调*/public interface OnSideListener {/*** 左边界回调*/void onLeftSide();/*** 右边界回调*/void onRightSide();}/*** 回调*/private OnSideListener mOnSideListener;/*** 设置回调** @param listener 监听*/public void setOnSideListener(OnSideListener listener) {this.mOnSideListener = listener;}/*** 设置临界值** @param criticalValue 设置的临界值*/public void setCriticalValue(int criticalValue) {this.criticalValue = criticalValue;}public LeftRightViewPager(Context context) {this(context, null);}public LeftRightViewPager(Context context, AttributeSet attrs) {super(context, attrs);}@Overridepublic boolean dispatchTouchEvent(MotionEvent event) {if (event.getAction() == MotionEvent.ACTION_DOWN) {startX = (int) event.getX();}return super.dispatchTouchEvent(event);}@Overridepublic boolean onTouchEvent(MotionEvent event) {//此处一定要是UP事件,Move事件会调用三次(多次)if (event.getAction() == MotionEvent.ACTION_UP) {if (startX - event.getX() > criticalValue && (getCurrentItem() == getAdapter().getCount() - 1)) {if (null != mOnSideListener) {mOnSideListener.onRightSide();}}if ((event.getX() - startX) > criticalValue && (getCurrentItem() == 0)) {if (null != mOnSideListener) {mOnSideListener.onLeftSide();}}}return super.onTouchEvent(event);}
}

看下这个自定义的ViewPager的临界点左右滑动的监听方法:

  ViewPager.setOnSideListener(object : LeftRightViewPager.OnSideListener {override fun onLeftSide() {println("左边滑动了")}override fun onRightSide() {println("右边滑动了")}}})

再次感谢原博主:链接地址

Android开发之可以在临界点左右滑动的ViewPager相关推荐

  1. Android开发之解决ListView和ScrollView滑动冲突的方法

    我们看下图: 不管怎么滑动都无法显示listview的剩余数据,只能显示一条,我们看下布局,ScrollView里面嵌套ListView <?xml version="1.0" ...

  2. android 左滑按钮,android开发类似微信列表向左滑动按钮操作

    话不多说,直接上代码,有详细的注释的. layout布局中: 主要是跟大家说一下listview怎么写: android:id="@+id/pull_refresh_viewId" ...

  3. Android流光动画,android开发自定义TextView文本流光效果——滑动解锁

    由于项目需求,需要做一个app锁屏页,其中就有一个需要滑动解锁的文字流光效果.我这里通过自定义Textview来实现: @Override protected void onLayout(boolea ...

  4. Android开发实现RecyclerView横向Item单独滑动

    pager_recy_eating.setAdapter(eatingWeekPlanAdapter);PagerSnapHelper snapHelper = new PagerSnapHelper ...

  5. 2017下半年掘金日报优质文章合集:Android篇,android开发工程师

    GitHub 整理|那些优秀的开源时间日期选择器,总有一款适合你 Android程序员搭建一个属于自己的服务器,不再求各种公共API XRadarView 一个可高度自定义的雷达图控件 手把手教你写高 ...

  6. 《Android开发艺术探索》读书笔记——Cha3.2.2使用动画实现View的滑动

    章节来自<Android开发艺术探索> 第一种方式 3.2.2 使用动画 上一节介绍了采用scrollTo/scrollBy来实现View的滑动,本节介绍另外一种滑动方式,即使用动画,通过 ...

  7. android viewpager fragment传值,Android开发中如何解决Fragment +Viewpager滑动页面重复加载的问题...

    前言 之前在做一个Viewpager上面加载多个Fragment时总会实例化已经创建好的Fragmnet对象类似 viewPager.setAdapter(new FragmentPagerAdapt ...

  8. Android开发笔记(一百三十九)可定制可滑动的标签栏

    App在页面底部展现标签栏导航的效果,有多种实现方式,包括TabActivity方式.ActivityGroup方式.FragmentActivity方式等等,具体的实现方案参见之前的博文< A ...

  9. Android 开发 设置banner圆角,滑动时,图片圆角失效

    Android 开发中有时需要设置banner图片以圆角显示,设置圆角简单,可以使用自定义ImageView, 但是在滑动过程中会出现直角的情况,这时,只需要对父View进行裁剪即可: main_ba ...

最新文章

  1. 【Linux】安装配置Tomcat7
  2. 团队-科学计算器-成员简介及分工
  3. linux install用法
  4. [Go] golang的MPG调度模型
  5. 大量SQL的解决方案——sdmap
  6. python3.7.2安装与配置_python3.7.0 安装与配置
  7. 任务计划程序设置软件在电脑重启后启动
  8. 微信小程序----相对路径图片不显示
  9. kill、killall 、pkill 发送信号命令
  10. word文档 文献尾注修改样式
  11. Navicat 解决问题:提示No All Pattern Found File Already Patched?
  12. git Untracked files
  13. 自定义桌面右键菜单-Win 10 版
  14. 你创业为什么会失败?
  15. NBA球员生涯数据统计系统(中南大学C语言课设)
  16. 大数据训练营课程大纲项目简介
  17. autojs零散知识点-循环找图
  18. 江湖问题研究-- intent传递有没有大小限制,是多少?
  19. pytorch runtime error(59):device-side assert triggered at XXX
  20. About Debbie

热门文章

  1. 列表_月隐学python第6课
  2. php键值交换,php键值互换时走的一个弯路
  3. 关系式调用c语言脚本_认识LoadRunner脚本语言
  4. python3编程题_Python3简单面试编程题
  5. kali中安转python3_Kali环境下安装Python3.7
  6. android studio中使用x5 webview来读写cookies的问题
  7. 动态规划(斜率优化):BZOJ 3675 [Apio2014]序列分割
  8. C#调用SSIS包及读取DataReader目标
  9. C/C++ 文件操作之CreateFile、ReadFile和WriteFile
  10. MFC的Main函数跑哪去了