首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

仿抖音上下滑动分页视频

5.5 视频逻辑充分解藕 5.6 翻页卡顿优化分析 5.7 上拉很快翻页黑屏 01.先来看一下需求 项目中的视频播放,要求实现抖音那种竖直方向一次滑动一页的效果。...具体的滑动效果,可以直接参考抖音…… 02.有几种实现方式 2.1 使用ViewPager 使用ViewPager实现竖直方法上下切换视频分析 1.最近项目需求中有用到需要在ViewPager中播放视频...多个子 Fragment 处于 onResume 的状态,却只有其中一个是可见的。...2.一次滑动切换一个页面,可以使用PagerSnapHelper来实现,十分方便简单。...需求要求必须手动触摸滑动超过1/2的时候松开可以滑动下一页,没有超过1/2返回原页,首先肯定是重写viewpager,只能从源码下手。

5.9K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    ViewPager2:官方Viewpager升级版来临

    这两天浏览安卓开发者官网的时候,发现google悄然推出了一个新的控件:ViewPager2,一看名称就知道这是一个和我们常用的ViewPager功能相似的控件,算是ViewPager的升级版吧。...目前还只是推出了第一个预览版,我们可以直接引入来使用了: implementation 'androidx.viewpager2:viewpager2:1.0.0-alpha01' 我们先来看看有哪些功能和使用上的变化...PagerSnapHelper的作用让滑动结束时使当前Item居中显示,并且 限制一次只能滑动一页,不能快速滑动,这样就和viewpager的交互很像了。...layout_width="match_parent" android:layout_height="200dp" android:orientation="vertical" /> 在代码中设置一个普通的...不过目前viewpager2只是第一个预览版,还存在稳定性方面的问题,不建议大家引入到正式项目中来,尝尝鲜就好。

    1.8K10

    ViewPager无限滑动

    最近项目里的一个页面的banner功能出了问题,使用的是viewPager + handler实现的,之前的代码实在是设计的过于复杂,就自己重新实现了一遍。...有意思的是,在onCreate中setAdapter之后,第一次viewPager.setCurrentItem(adapter.getStartPageIndex())并不会引起ANR,应该是onCreate...在正常使用ViewPager,没有任何无限滑动的逻辑的情况下: 假设第一次setAdapter的时候,getCount返回1,此时ViewPager只有一个page,不可以左右滑动。...setCurrentItem里面的逻辑简直了,竟然和getCount成正比耗费时间,那就只能当设计者根本没有考虑使用此View在非常大量数据的情况了!...项目地址是:https://github.com/pakerfeldt/android-viewflow。 非常建议使用。

    2.2K70

    Android进阶之绘制-自定义View完全掌握(二)

    我们要实现的是这样的一个效果。 ? 要想实现这样的效果,我们可以借助ViewPager控件,然后加上自定义的一些控件即可完成。那么现在就开始吧。 新建一个android项目。...ViewPager在运行之后总共会初始化两个页面,最多初始化三个,随着页面的增多,ViewPager会自动销毁前面的页面进而提供给后面的页面使用,这是ViewPage的内容优化,我们可以来验证一下,我在初始化和销毁的方法中都打印了日志...现在,我们来运行项目。 ? 我们看看日志情况。 ? 只打印了两次初始化信息,说明ViewPager只初始化了两个页面。...我们向左滑动ViewPager来切换页面,此时观察日志信息。 ? 会发现在创建了三个实例后,第一个页面的实例就被销毁了,这就证实了刚才的结论。...虽然页面很多,但也不是滑不完的,假如有一个用户,他就是闲得慌,他就拼命地滑,结果,把左边或者右边的所有页面都滑完了,这种情况我们只能说这个人他真的是闲得慌了,总之,按照正常情况,如此多的页面时足够用户滑动了

    44440

    Android:SwipeRefreshLayout和ViewPager滑动冲突的原因和正确的解决方式

    虽然SwipeRefreshLayout出来已经很久了,但是知道今天我才第一次使用。 然后发现两个问题: SwipeRefreshLayout会吃掉ViewPager的滑动事件。..., 在ViewPager无法刷新。...// 这就是为啥SwiperefreshLayout只能有一个child的原因。...要知道两次Touch之间也是有个很短的响应时间的,只要在这个时间内,Y轴滑动距离大于mTouchSlop就可以了,这时候事件就被拦截了,ViewPager没机会响应到move事件,从而不会禁用掉SwipeRefreshLayout...怎么判断是纵向滑动还是横向滑动,只要判断Y轴的移动距离大于X轴的移动距离那么就判定为纵向滑动就行了。 以下就是重写后的SwipeRefreshLayout,直接复制到项目就可以使用了。

    1.5K10

    android 布局 使用 viewPager 时,如何解决 和 子页面 长按滑动 冲突问题

    使用 viewPager 时,如何解决 和 子页面 长按滑动 冲突问题。...我的问题原型:      这个问题,我相信遇到的人会比较少,我是在 一个 viewPager 中,其中 一个 fragment 中实现了长按滑动图片的功能,而发现它们两者的 onTouchEvent事件冲突...,具体代码是下面,这种方法,我尝试 后发现,只能在第一次加载 viewPager的 页面达到 阻断的效果,我这里详细说下,在MainActivity 页面里面,我们初始化了 viewPager,然后我们要在...MainActivity 绑定好了的 xml文件,再 在 fragment 中 findViewById() 来获取次 viewPager。...方法: view.requestDisallowInterceptTouchEvent(true); //传入参数是 true 即可 我第一次使用它失败的原因是:             在 我的 fragment

    1.5K100

    Android开发笔记(二十一)横幅轮播页Banner

    ViewPager ViewPager的概念 在前面的博文《Android开发笔记(十九)底部标签栏TabBar》中,我们提到可以在一个主页面里通过选项卡方式,切换到不同的子页面。...那么在手机上还有另外一种切换页面的方式,就是通过手势左右滑动,ViewPager就是这么一个左右滑动来切换页面的控件。...下面是这两个工具的使用说明: 1、在布局文件中,二者需要作为ViewPager的的下级节点; 2、在布局文件中,二者本身无需另外定义id,代码中一般也不需要取出它们的对象做什么处理; 3、二者除了展示标题之外...4、页面滑动的监听器 ViewPager可调用setOnPageChangeListener方法设置页面滑动监听器,而ViewFlipper没有专门的滑动监听器,只能通过动画监听器AnimationListener...所以一个Banner需要先初始化两个队列,一个是轮播图片队列,可考虑使用ArrayList;另一个则是下方图标队列,可考虑使用RadioGroup或者ArrayList<Button

    3.7K30

    ViewPagerIndicator+viewpager指示器详解

    1.如何使用开源框架 第1步:improt library项目 第2步:导入library进我们自己新建的项目 从Github上Download下来这个zip包之后,里面会有一个library文件...(本例使用的是其中一种ViewPagerIndicator:TabPagerIndicator) 注意它应该紧邻在ViewPager的上方或下方,总之要挨在一起。...view)方法,这样子就实现了点击上面的Tab,下面的ViewPager切换;滑动ViewPager,上面的Tab跟着切换。...ViewPager的每一个Item我们使用的是Fragment,使用Fragment可以使布局更加灵活一点,建议多用Fragment。...中包含的Fragment的改变(滑动切换页面),使用OnPageChangeListener为它指定一个监听器,那么不能像之前那样直接设置在ViewPager上了,而要设置在Indicator上,

    4.5K90

    ViewPager,ScrollView 嵌套ViewPager滑动冲突解决

    解决思路 看了上面三种情况,我们知道他们的共同特点是父View 和子View都想争着响应我们的触摸事件,但遗憾的是我们的触摸事件 同一时刻只能被某一个View或者ViewGroup拦截消费,所以就产生了滑动冲突...那既然同一时刻只能由某一个View或者ViewGroup消费拦截,那我们就只需要 决定在某个时刻由这个 View 或者 ViewGroup 拦截事件,另外的 某个时刻由 另外一个 View 或者 ViewGroup...但是该方法存在缺点,就是当我们上面的view如果滑动到一半的时候,切换到下一个Fragment,在切换回来的时候,RecyclerView的第一个item会自动滑动到顶部。...ViewPager里面嵌套ViewPager导致的滑动冲突 内部解决法 从子View ViewPager着手,重写 子View的 dispatchTouchEvent方法,在子 View需要拦截的时候进行拦截...,这种实现方式需要自己解决View滑动事件的冲突,同时还有我在上述提高的在Fragment中存在的问题 - 使用listView的addHeaderView来实现,或者是通过多种不同的item来实现

    5.8K51

    ViewPager,ScrollView 嵌套ViewPager滑动冲突解决

    和子View都想争着响应我们的触摸事件,但遗憾的是我们的触摸事件 同一时刻只能被某一个View或者ViewGroup拦截消费,所以就产生了滑动冲突?...那既然同一时刻只能由某一个View或者ViewGroup消费拦截,那我们就只需要 决定在某个时刻由这个 View 或者 ViewGroup 拦截事件,另外的 某个时刻由 另外一个 View 或者 ViewGroup...但是该方法存在缺点,就是当我们上面的view如果滑动到一半的时候,切换到下一个Fragment,在切换回来的时候,RecyclerView的第一个item会自动滑动到顶部。...ViewPager里面嵌套ViewPager导致的滑动冲突 内部解决法 从子View ViewPager着手,重写 子View的 dispatchTouchEvent方法,在子 View需要拦截的时候进行拦截...里面嵌套ViewPager和RecyclerView,这种实现方式需要自己解决View滑动事件的冲突,同时还有我在上述提高的在Fragment中存在的问题 使用listView的addHeaderView

    68910

    Android View滑动冲突全面解析-夯实基础

    滑动冲突这件事我们日常开发中应该是经常见,在我刚学习Android的时候,viewPager 与 SlidingMenu 侧滑栏的冲突也是搞得我一头雾水,不知道该怎么去解决,所以经常会去采用问百度的做法...这一次,我们就辛苦一点,结合前面的学习,对Android View有一个全面的认识,学习本篇之前,请具备一定的 事件分发基础,要不然会挺吃力,可以看我以前的博客 —— Android事件分发全面解析(基础篇...对于场景3来说,它的滑动就更麻烦了一点,和场景2一样,它也无法直接根据滑动的角度,距离差以及速度查来做判断,同样还是只能从业务上找到突破点。就比如 网易云音乐,云闪付等软件 的滑动冲突处理。...而父View不一样,如果父View在 ACTION_MOVE中开始拦截,除了一个ACTION_CANCEL传递给子View,那么后续的所有都将默认交给父View处理,所以ACTION_UP父View还是可以收到...下面我用一个例子来实现一下: 首先我们要做的效果是什么呢?仿 云闪付中间的这个Banner来做一个类似的。我们采用ViewPager+ViewPager嵌套来做。

    46220

    Android开发笔记(一百零一)滑出式菜单

    倘若在外侧加个HorizontalScrollView,由于HorizontalScrollView的宽度只能是wrap_content,因此子视图的宽度也只能是wrap_content而不能是match_parent...当然,要把HorizontalListView作为侧滑菜单来使用,我们还需要对其做下列改造: 1、在手势松开的时候,根据当前的滑动偏移,自动判断接下来是往左滑动对齐,还是往右滑动对齐。...问题的症结在于菜单布局和内容布局都在同一个页面中,所以极易造成滑动冲突,要想彻底解决滑动冲突,最好还是把两种布局分开到不同页面处理,技术上便是使用不同的Fragment分别放置菜单和内容布局。...使用SlidingMenu ViewPager本身做翻页操作时就使用了Fragment,然后SlidingMenu也采用Fragment区分菜单布局和内容布局,因此如果把ViewPager作为内容布局...即ViewPager自身就是作为内容布局的Fragment嵌入到SlidingMenu中,然后ViewPager的子页面也是作为Fragment嵌入到ViewPager,这样就造成了一个问题:Fragment

    1.2K70

    android gallery当前view变大,GitHub – hutcwpGalleryViewDemo: 实现画廊效果(中间放大两边缩小)无限循环向左滑向右滑,Viewpager和Recycl

    ,也就是可循环 在第一次显示的时候, 就可以左滑 滑动Item被放大 用RecyclerView实现GalleryView效果已经有BCsl大神的BCsl/GalleryLayoutManager使用自定义...(position,0)可以定位到指定项如果该项可以置顶就将其置顶显示,第二个参数可以决定 距离顶部的offset 偏移量 scrollBy(x, y)这个方法是自己去控制移动的距离,单位是像素,所以在使用...实现GalleryView效果可无限左滑右滑 要点: 在有限的数据里面, 实现无限个Item,也就是可循环 在第一次显示的时候, 就可以左滑 滑动的Item被放大 ViewPager这里用到JakeWharton...ViewPager 的首尾多添加一个 View,监听 ViewPager 滚动事件,当滑到边界时,设置当前 position 为中间的某个 item,不过这种方式容易出现页面闪动导致滑动不连贯,这是因为...; } 在第一次显示的时候, 就可以左滑 这个简单只需要在一开始的时候,产生一定的偏移量就可以左滑了 /**这里需要将setOffscreenPageLimit的值设置成数据源的总个数,设置ViewPager

    2.5K20

    ViewPager 获取当前显示的Fragment

    Viewpager 获取当前显示的fragment 使用 getSupportFragmentManager().findFragmentByTag()方法 Viewpager + FragmentPagerAdapter...情况下 才好使; FragmentPagerAdapter 有一个特点 凡是加载过的Fragment 都会被保留,既然Fragment不会被销毁,那我们就可以使用findFragmentByTag()...方法找到它;但问题是动态创建的话 tag的设置;我们知道动态加载时是可以设置tag的,但是动态创建就没法设置了;如果viewpager使用的是适配器是 FragmentPagerAdapter 的话...:"+pager.getId()+":"+pager.getCurrentItem()); ---- 重写适配器的 setPrimaryItem()方法 ; 这个方法在每次viewpager滑动后都会被调用...setPrimaryItem()是在 viewpager的滑动监听执行完后才会调用的;所以在 换的个滑动监听中获取当前显示的Fragment 是不对的

    3.7K80

    Mono for Android 实现高效的导航

    准备 Android 4.0 ICS 项目 新建 Android ICS 项目 打开 MonoDevelop , 新建一个 Mono for Android 项目, 并在项目的属性页将 Target Framework...添加 Mono.Android.Support.v4 引用项 在解决方案窗口, 选中项目的引用节点, 右击选择编辑引用, 添加对 Mono.Android.Support.v4.dll 的引用, 如图所示...在项目中新建一个目录 SupportLib , 并添加对 android-support-v4.jar 文件(位于 android-sdk/extras/android/support/v4 目录, 如果没有...> 下拉列表 下拉列表导航是在 ActionBar 中显示一个下拉列表 (Spinner), 就像一个菜单, 只显示选中的菜单项对应的视图, 如下图所示: ?..._viewPager.CurrentItem = itemPosition; return true; } } 向上导航 所谓的向上导航, 就是在 Activity 的图标上显示一个向左的箭头,

    75611

    使用 RecyclerView 实现 Gallery 画廊效果,并控制 Item 停留位置

    RecyclerView 作为一个列表滑动控件,我们都知道它既可以横向滑动,也可以竖直滑动,可以实现线性布局管理,瀑布流布局管理,还有 GridView 布局管理。...support library 中只提供了一个继承类 LinearSnapHelper ,LinearSnapHelper 是抽象类 SnapHelper 的具体实现。...通过 LinearSnapHelper,我们就可以使 RecyclerView 实现类似 ViewPager 的功能,无论怎么滑动最终都会停留在列表页面正中间。...SnapHelper 和 ViewPager 的区别就是 ViewPager 一次只能滑动一页,而 RecyclerView + SnapHelper 的方式可以实现一次滑动好几页。...效果如下: 居中实现方式 使用 SnapHelper 配合 RecyclerView 实现控制 Item 位置居中显示,非常简单,官方默认提供的 LinearSnapHelper 就是居中的,我们直接使用即可

    3.8K70
    领券