Android开发之可以在临界点左右滑动的ViewPager
老套路先上效果图:
可以在临界点滑动的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相关推荐
- Android开发之解决ListView和ScrollView滑动冲突的方法
我们看下图: 不管怎么滑动都无法显示listview的剩余数据,只能显示一条,我们看下布局,ScrollView里面嵌套ListView <?xml version="1.0" ...
- android 左滑按钮,android开发类似微信列表向左滑动按钮操作
话不多说,直接上代码,有详细的注释的. layout布局中: 主要是跟大家说一下listview怎么写: android:id="@+id/pull_refresh_viewId" ...
- Android流光动画,android开发自定义TextView文本流光效果——滑动解锁
由于项目需求,需要做一个app锁屏页,其中就有一个需要滑动解锁的文字流光效果.我这里通过自定义Textview来实现: @Override protected void onLayout(boolea ...
- Android开发实现RecyclerView横向Item单独滑动
pager_recy_eating.setAdapter(eatingWeekPlanAdapter);PagerSnapHelper snapHelper = new PagerSnapHelper ...
- 2017下半年掘金日报优质文章合集:Android篇,android开发工程师
GitHub 整理|那些优秀的开源时间日期选择器,总有一款适合你 Android程序员搭建一个属于自己的服务器,不再求各种公共API XRadarView 一个可高度自定义的雷达图控件 手把手教你写高 ...
- 《Android开发艺术探索》读书笔记——Cha3.2.2使用动画实现View的滑动
章节来自<Android开发艺术探索> 第一种方式 3.2.2 使用动画 上一节介绍了采用scrollTo/scrollBy来实现View的滑动,本节介绍另外一种滑动方式,即使用动画,通过 ...
- android viewpager fragment传值,Android开发中如何解决Fragment +Viewpager滑动页面重复加载的问题...
前言 之前在做一个Viewpager上面加载多个Fragment时总会实例化已经创建好的Fragmnet对象类似 viewPager.setAdapter(new FragmentPagerAdapt ...
- Android开发笔记(一百三十九)可定制可滑动的标签栏
App在页面底部展现标签栏导航的效果,有多种实现方式,包括TabActivity方式.ActivityGroup方式.FragmentActivity方式等等,具体的实现方案参见之前的博文< A ...
- Android 开发 设置banner圆角,滑动时,图片圆角失效
Android 开发中有时需要设置banner图片以圆角显示,设置圆角简单,可以使用自定义ImageView, 但是在滑动过程中会出现直角的情况,这时,只需要对父View进行裁剪即可: main_ba ...
最新文章
- 【Linux】安装配置Tomcat7
- 团队-科学计算器-成员简介及分工
- linux install用法
- [Go] golang的MPG调度模型
- 大量SQL的解决方案——sdmap
- python3.7.2安装与配置_python3.7.0 安装与配置
- 任务计划程序设置软件在电脑重启后启动
- 微信小程序----相对路径图片不显示
- kill、killall 、pkill 发送信号命令
- word文档 文献尾注修改样式
- Navicat 解决问题:提示No All Pattern Found File Already Patched?
- git Untracked files
- 自定义桌面右键菜单-Win 10 版
- 你创业为什么会失败?
- NBA球员生涯数据统计系统(中南大学C语言课设)
- 大数据训练营课程大纲项目简介
- autojs零散知识点-循环找图
- 江湖问题研究-- intent传递有没有大小限制,是多少?
- pytorch runtime error(59):device-side assert triggered at XXX
- About Debbie
热门文章
- 列表_月隐学python第6课
- php键值交换,php键值互换时走的一个弯路
- 关系式调用c语言脚本_认识LoadRunner脚本语言
- python3编程题_Python3简单面试编程题
- kali中安转python3_Kali环境下安装Python3.7
- android studio中使用x5 webview来读写cookies的问题
- 动态规划(斜率优化):BZOJ 3675 [Apio2014]序列分割
- C#调用SSIS包及读取DataReader目标
- C/C++ 文件操作之CreateFile、ReadFile和WriteFile
- MFC的Main函数跑哪去了