【转载请注明出处:From李诗雨—http://blog.csdn.net/cjm2484836553/article/details/78014447】

不诗意的女程序猿不是好厨师~

我们经常会使用到 ViewPager+Fragment+TabLayout 这种类似的组合。

那么各种不同的需求也就来了。

有时需要viewpager不可左右滑动,但保留切换时的滚动动画。
有时则需要viewpager不可左右滑动,且切换时也不出现滚动动画。

【解决方案】
为了达成以上的需求我们需重写ViewPager。

对于禁止ViewPager左右滑动:
覆盖ViewPager的onInterceptTouchEvent(MotionEvent arg0)方法
和onTouchEvent(MotionEvent arg0)方法
这两个方法的返回值都是boolean类型的,只需要将返回值改为false
这样ViewPager就不会消耗掉手指滑动的事件了,转而传递给上层View去处理或者该事件就直接终止了。

对于 静止viewpager切换动画:
则需重写viewpager的setCurrentItem()方法就可以了

自定义的NoScrollViewPager类如下,可直接复制粘贴进行使用。

/*** Created by LSY on 2017/9/17.* 用于屏蔽viewpager的左右滑动和切换时的滚动动画* * 禁止ViewPager左右滑动:* 需重写ViewPager,覆盖ViewPager的onInterceptTouchEvent(MotionEvent arg0)方法* 和onTouchEvent(MotionEvent arg0)方法* 这两个方法的返回值都是boolean类型的,只需要将返回值改为false* 这样ViewPager就不会消耗掉手指滑动的事件了,转而传递给上层View去处理或者该事件就直接终止了。** 静止viewpager切换动画:* 则需重写viewpager的setCurrentItem()方法就可以了*/
public class NoScrollViewPager extends ViewPager {private boolean isCanScroll = true;private boolean isHasScrollAnim=true;public NoScrollViewPager(Context context) {super(context);}public NoScrollViewPager(Context context, AttributeSet attrs) {super(context, attrs);}/*** 设置其是否能滑动* @param isCanScroll false 禁止滑动, true 可以滑动*/public void setScanScroll(boolean isCanScroll) {this.isCanScroll = isCanScroll;}public void setHasScrollAnim(boolean isHasScrollAnim){this.isHasScrollAnim=isHasScrollAnim;}@Overridepublic boolean onInterceptTouchEvent(MotionEvent ev) {return isCanScroll && super.onInterceptTouchEvent(ev);}@Overridepublic boolean onTouchEvent(MotionEvent ev) {return isCanScroll && super.onTouchEvent(ev);}@Overridepublic void setCurrentItem(int item, boolean smoothScroll) {super.setCurrentItem(item, smoothScroll);}/*** 设置其是否去求切换时的滚动动画*isHasScrollAnim为false时,会去除滚动效果*/@Overridepublic void setCurrentItem(int item) {super.setCurrentItem(item,isHasScrollAnim);}}

使用简说
①首先是布局文件中要换成自己定义的NoScrollViewPger

 <!--<android.support.v4.view.ViewPager--><com.ctvit.worldcom.view.NoScrollViewPager
        android:id="@+id/mainfollowing_viewpager"android:layout_width="match_parent"android:layout_height="match_parent" />

②初始化控件的地方记得也要替换

   @BindView(R.id.mainsearch_viewpager) NoScrollViewPager mainsearchViewpager;
//    ViewPager mainsearchViewpager;

③根据需要,调用相关的屏蔽左右滑动和切换时滚动效果的方法
如果你只需要禁止左右滑动,就调用这个方法:

        //屏蔽左右滑动mainsearchViewpager.setScanScroll(false);

如果你既需要屏蔽左右滑动,有需要屏蔽切换时的滚动动画,
则调用如下两个方法:

        //屏蔽左右滑动mainFollowingViewpager.setScanScroll(false);//屏蔽切换时的滚动动画mainFollowingViewpager.setHasScrollAnim(false);

积累点滴,做好自己~

屏蔽ViewPager的左右滑动和切换时的滚动动画相关推荐

  1. 如何客制化某两个activity切换时的窗口动画?

    [DESCRIPTION] 两个acitivity在做切换时会有一个过渡的窗口动画效果,默认情况下这个窗口动画的动画效果是由framework统一控制的.如果想客制化某两个窗口切换时的动画效果,应该怎 ...

  2. android ViewPager 不带滑动效果切换item

    其实这是很简单的,但是今晚脑袋晕乎乎的 绕了一大圈,记录一下 以警同类人. 只需要在setCurrentItem传参数时这么写:mViewPager.setCurrentItem(item序号,fal ...

  3. 给React-Router添加路由页面切换时的过渡动画

    PS: 本篇文章使用的React-Router版本为react-router-dom: ^5.0.0 (兼容4.x) 使用过Vue2的同学们应该都知道<transition>这个内置组件, ...

  4. android ViewPager页面左右滑动切换

    我们日常生活中用到的微博,QQ,微信等app在进行页面左右滑动的时候,很多都可以用ViewPager来实现.可以说,ViewPager在android开发中十分常见并且特别实用. Viewpager在 ...

  5. android切换页面上滑动动画,Android ViewPager多页面滑动切换以及动画效果

    评论 #28楼[楼主] 2012-06-01 14:27D.Winter @孤寒江雪 我猜 要么在头尾各再加入一个页卡 在页卡切换监听中判断,如果选中了头尾的页卡,就返回到相邻的那个页卡.头尾页卡的界 ...

  6. ViewPager撤消左右滑动切换功能

    ViewPager取消左右滑动切换功能 最近做项目要求某种情况下ViewPager不能滑动,那么我们只需要重写这个方法就可以禁止ViewPager滑动 IndexViewPager.java: imp ...

  7. php 实现tab切换_微信小程序实例:实现顶部tab切换以及滑动切换时导航栏会随着移动的效果(代码)...

    本篇文章给大家带来的内容是关于微信小程序实例:实现顶部tab切换以及滑动切换时导航栏会随着移动的效果(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 实现的效果: js: Pa ...

  8. 解决swiper在tab切换时,swiper不生效,以及display:none后,无法自动滑动的问题

    解决swiper在tab切换时,swiper不生效,以及display:none后,无法自动滑动的问题 问题是这样的:当你兴高采烈的写完一个tab,并且把swiper嵌入到每一个tab item 觉得 ...

  9. TabLayout让Fragment在ViewPager中的滑动切换更优雅

    TabLayout让Fragment在ViewPager中的滑动切换更优雅 转载于:https://www.cnblogs.com/zhujiabin/p/7382500.html

最新文章

  1. 《企业自主搞定ERP》试读:第一章-Odoo概述
  2. 错误三次无法输入c语言,不懂就问,为啥错误输入三次不停止呢
  3. 计算机网络【某个单位的网点由4个子网组成,结构如图所示,其中主机H1、H2、H3、H4的IP地址和子网掩码如表所示。 (1)请写出路由器R1到4个子网的路由表。(2)...】
  4. linux原有的文件系统扩展,原来linux不用LVM也能扩展文件系统
  5. 1006 换个格式输出整数 (15分)
  6. hive 2.3 mysql_Hive(二)CentOS7.5安装Hive2.3.3
  7. tplink无线网卡的linux,ubuntu上tp-link无线网卡驱动安装
  8. coap python_一步步搭建物联网系统——RESTful的CoAP协议
  9. 关注点分离(Separation of concerns, SoC)
  10. 中国移动科普:为什么手机移动网络要叫 “蜂窝移动网络”
  11. 吴恩达NLP课程资料
  12. 微信小程序云开发 实时地图显示
  13. autoJS for 快手极速版 可运行
  14. lerna 使用详解
  15. 2022年终总结:少年不惧岁月长,彼方尚有荣光在。
  16. Headless CMS Sanity 数据建模——定义文档内容的结构
  17. 【语音识别】基于MFCC和MEL倒频系数实现声纹识别附matlab代码
  18. 读书笔记-人月神话19
  19. 科研快报 | 三代测序技术-海水微生物态,助力海水微生态及微生物基因组研究
  20. 在CSDN的六载时光,由你来决定今年的博客之星

热门文章

  1. Hibernate入门指导 - Hibernate官方文档
  2. C++“拷贝构造函数”和“重载 = 运算符”
  3. 「三」浏览器中CSS 语法解析过程
  4. win卸载输入法之后,在系统设置的键盘中还有这个输入法
  5. php微信拍照图库js接口,微信JSSDK 实现打开摄像头拍照再将相片保存到服务器
  6. java利用ffmpeg追加合并视频文件
  7. 0013Photoshop2019新功能(下)
  8. 编程之美里的挖雷游戏:
  9. main在python中的用法_python中main函数的用法
  10. 10303 数字三角