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

RecyclerView详解

顺着官方demo,我替换掉原来的ViewPager类,使用RecylcerView,改进有以下几点: ·使用过ViewPager动画的应该知道(有经典的ViewPager动画第三方扩展JazzyViewPager...),这些动画是为了提供给每个item占据全屏,或占据几乎全屏这种情况设计的。...也就是说,如果你简单地将ViewPager的每页显示数设置为你需要的值,之后设置的动画很可能并不是你需要的效果(因此之前我在嵌套时去掉了ViewPager的动画,稍微有点失望)。...·滑动速度加快,因为ViewPager并不是ViewsPager。。。一次长距离的滑动可能只造成1~2张图片的滚动,一点也不像gallery,这是我用RecylcerView替代它的主要原因。...基于原来的代码,我构建了MyRecyclerGallery,保留了原来的触摸事件,现在滑动起来舒服多了: ? 你可以看到滑动时还有滚动条。

1.3K100

终于来了:Android端个人中心页面滑动冲突优化方案

问题现象 首页右滑可进入“个人中心”页面,然后在底部的 RecylerView 上先左右滑动,但是不触发它们父布局 ViewPager 的切换,然后手指不抬起,进行上下滑动,此时 RecylerView...不触发自身的滑动就会直接分发下去,此时 RecyclerView 自身来说竖向(dy)差值变化较大,正常滑动。...出现问题时,用户的手先触发左右滑动,这时候由于 RecyclerView 父布局 ViewPager 中的一些临界判断没被触发,所以没拦截事件,事件还是到了 RecyclerView 中,此时如果再次上下滑动...那我们是不是可以在里面加个判断,除去真正的左右滑动逻辑(ViewPager事件),剩下的事件就是触发 RecylcerView 滑动的了(相当于过滤了横向的,留下的竖向的),我们再次判断外层的自定义 LinearLayout...下面看竖向的 RecyclerView 的拦截代码,非常简单: image.png 当竖向可滑动并且差值 dy 大于临界值 mTouchSlop 时,即响应事件。

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

    首页-底部Tab导航(菜单栏)的实现:FragmentTabHost+ViewPager+Fragment

    总体设计思路 Fragment:存放不同选项的页面内容 FragmentTabHost:点击切换选项卡 ViewPager:实现页面的左右滑动效果 概念介绍 1....ViewPager - 定义 ViewPager是android扩展包v4包中的类 android.support.v4.view.ViewPager 作用 左右切换当前的view,实现滑动切换的效果...) findViewById(R.id.pager); /*实现OnPageChangeListener接口,目的是监听Tab选项卡的变化,然后通知ViewPager适配器切换界面*/.../*简单来说,是为了让ViewPager滑动的时候能够带着底部菜单联动*/ vp.addOnPageChangeListener(this);//设置页面切换时的监听器.../*实现setOnTabChangedListener接口,目的是为监听界面切换),然后实现TabHost里面图片文字的选中状态切换*/ /*简单来说,是为了当点击下面菜单时

    1.9K20

    Carson带你学Android:手把手教你优雅实现首页-底部Tab导航(菜单栏)

    Fragment:存放不同选项的页面内容 FragmentTabHost:点击切换选项卡 ViewPager:实现页面的左右滑动效果 概念介绍 1....ViewPager 定义 ViewPager是android扩展包v4包中的类 android.support.v4.view.ViewPager 作用 左右切换当前的view,实现滑动切换的效果。...) findViewById(R.id.pager); /*实现OnPageChangeListener接口,目的是监听Tab选项卡的变化,然后通知ViewPager适配器切换界面*/.../*简单来说,是为了让ViewPager滑动的时候能够带着底部菜单联动*/ vp.addOnPageChangeListener(this);//设置页面切换时的监听器.../*实现setOnTabChangedListener接口,目的是为监听界面切换),然后实现TabHost里面图片文字的选中状态切换*/ /*简单来说,是为了当点击下面菜单时

    91830

    CoordinatorLayout+AppBarLayout实现上滑隐藏ToolBar-Android M新控件

    enterAlwaysCollapsed 当你的视图已经设置minHeight属性又使用此标志时,你的视图只能已最小高度进入,只有当滚动视图到达顶部时才扩大到完整高度 exitUntilCollapsed...TabLayout TabLayout-Android M新控件 说到TabLayout,就是实现多个Tab之间的切换,不过Google在Design library新推出的TabLayout既实现了固定的选项卡...– (Tab的宽度平均分配),也实现了可滚动的选项卡 – (Tab宽度不固定,同时可以横向滚动),还实现了所有Tab居中显示。...它还有一个重要作用就是结合ViewPager来实现多个Tab之间的切换。 来看看TabLayout的三种实现方式: 固定的Tab,根据TabLayout的宽度适配 ?...的集合 private final List mFragments = new ArrayList(); //每个Fragment对应的title的集合 private final

    2.2K30

    Carson带你学Android:底部顶部Tab导航栏快速实现-TabLayout+ViewPager+Fragment

    概念介绍 1.1 TabLayout 定义:实现Material Design效果的控件库(Android Design Support Library); 作用:用于实现点击选项进行切换选项卡的自定义效果...(5.0可用) 1.2 ViewPager 定义:ViewPager是android扩展包v4包中的类 作用:左右切换当前的view,实现滑动切换的效果。...例如:当activity暂停时,它拥有的所有的Fragment们都暂停了,当activity销毁时,它拥有的所有Fragment们都被销毁。...总体设计思路 TabLayout:点击切换选项卡 Fragment:存放不同选项的页面内容 ViewPager:实现页面的左右滑动效果 3....#CC33FF" //是否可滑动:fixed:固定;scrollable:可滑动 app:tabMode="fixed" //设置选项卡的背景:此处要写一个

    1.6K21

    首页-底部&顶部Tab导航(菜单栏)的实现:TabLayout+ViewPager+Fragment

    概念介绍 1.1 TabLayout 定义:实现Material Design效果的控件库(Android Design Support Library); 作用:用于实现点击选项进行切换选项卡的自定义效果...(5.0可用) 1.2 ViewPager 定义:ViewPager是android扩展包v4包中的类 作用:左右切换当前的view,实现滑动切换的效果。...例如:当activity暂停时,它拥有的所有的Fragment们都暂停了,当activity销毁时,它拥有的所有Fragment们都被销毁。...总体设计思路 TabLayout:点击切换选项卡 Fragment:存放不同选项的页面内容 ViewPager:实现页面的左右滑动效果 ---- 3....#CC33FF" //是否可滑动:fixed:固定;scrollable:可滑动 app:tabMode="fixed" //设置选项卡的背景:此处要写一个

    4.1K20

    通过来模仿稀土掘金个人页面的布局来学习使用CoordinatorLayout

    (还没有收缩时)title向左填充的距离 app:expandedTitleMarginEnd 这个同理是收缩结束时向左填空的距离 其他的就不一一介绍了,具体的去查看API文档即可获知。...我在做这里的时候遇到一个问题,那就是CollapsingToolbarLayout里的Title的问题,一般默认是显示的,即使你不写,它也有会一个默认值一直显示在那里,等折叠收缩完的时候,停留在标题工具栏上...TabLayout提供一个水平布局来显示选项卡。TabLayout一般都是配合ViewPager一起来使用。...如果设计的需求不要求选项卡在切换时附带有图标的切换效果,仅仅文字的颜色发生变化以响应用户的点击事件,那么TabLayout和ViewPager建立联系可以用官方提供的方法,它可以做到交互双向联动,也就是点击...相互建立联系的方法如下: setupWithViewPager(ViewPager viewPager) 如果选项卡里带有图标或者仅仅只有图标时就麻烦了,那个选项卡会变得什么都没有了。

    2.3K90

    Android源码解析-仿今日头条PagerSlidingTabStrip滑动页面导航效果

    ,大部分都是用ViewPager来实现的,刚开始我用的是ViewPager+ViewGroup,上面的标题按钮用的是HorizontalScrollView,写完之后感觉效果比较生硬,果断换掉,发现了一个效果比较好的第三方....这里面需要注意提一下,如果碎片的个数比较少我们可以手动创建碎片,如果像今日头条很多的话也没关系,动态创建Fragment,因为我们可以看到头条的每个碎片中的内容都是类似的,所以说动态创建也未尝不可,只有个别特殊的我们也可以特殊处理...;//选项卡之间的分隔pstsdividercolor颜色 private boolean shouldExpand = false;//pstsshouldexpand如果设置为TRUE,每个标签都给予同样的重量...;//pstsdividerpadding顶部和底部填充的分频器 private int tabPadding = 24;//pststabpaddingleftright左、右填充每个选项卡 private...indicatorColor = a.getColor(R.styleable.PagerSlidingTabStrip_pstsIndicatorColor, indicatorColor); //tab文字选中时的颜色

    1.5K20

    AndroidX TabLayout使用、扩展及解析All In One

    :28.0.0' Android 支持库的最新版本是28.0.0,这是最后一个google发布的支持库版本,现在google已将所有support包下的库都迁移至androidx包下面,以后的更新都只会在...要显示的选项卡的填充是通过TabLayout.Tab实例完成的。可以通过创建标签 newTab()。在此处,您可以分别通过setText(int) 和更改选项卡的标签或图标setIcon(int)。...此视图还支持用作ViewPager装饰的一部分,并且可以像这样在布局资源文件中直接添加到ViewPager: viewpager.widget.ViewPager android...这种方式只能事先确定有几个Tab的时候用到,当这个Tab个数需要动态的创建的时候不能使用此方法。 另外一种方式通过代码动态设置布局,布局的选中和未选中态的更新采用监听器动态修改的方式。...跟随TabLayout的标签切换 viewPager.setCurrentItem(tab.getPosition()); } @Override

    8K71

    ViewPagerIndicator+viewpager指示器详解

    前几天学习了ViewPager作为引导页和Tab的使用方法。后来也有根据不同的使用情况改用Fragment作为Tab的情况,以及ViewPager结合FragmentPagerAdapter的使用。...右键项目—Properties—Android选项卡—Add—选择library库工程—OK,导入完毕。...view)方法,这样子就实现了点击上面的Tab,下面的ViewPager切换;滑动ViewPager,上面的Tab跟着切换。...中包含的Fragment的改变(滑动切换页面),使用OnPageChangeListener为它指定一个监听器,那么不能像之前那样直接设置在ViewPager上了,而要设置在Indicator上,...实际开发的时候,针对每个ViewPager的item,要设计每个不同的Fragment的布局、代码内容等。此例代码只做示范。

    4.5K90

    怎样在Android上实现一个iOS多任务列表效果

    纵观Android标准的控件库,能想到的就只有ViewPager比较合适,其首先满足第1点,ViewPager又是直接使用Adapter来管理数据,然后通过Fragment来管理每个item,满足第...,滚动过程中,ViewPager会回调transformPage(View page, float position),在这里面做想要的变化就行,PageTransformer具体的使用方法这里不细讲,...Pager显示范围左边时(超出屏幕外),这个值就是负的。...3.1. item上下滑动动画 这一步实现原理比较简单,就是在ViewPager的onTouchEvent里对move事件做上下滑动检测,满足条件时对当前的item view做上下移动即可,当up事件到达时...更新:        偶然看到androidx包下多了个ViewPager2,吃惊,看一下代码,注释如下: 1.png        可以看到,ViewPager2已经支持了从右到左的布局了,也支持竖向布局

    3.7K60

    android Fragment单页面加载,避免重复加载(懒加载)分析

    上面两个页面都是 ViewPager + Fragment实现,Viewpager + Fragment情况下,fragment的生命周期因Viewpager的缓存机制而失去了具体意义 目前问题:每次进入...4个Fragment的生命周期都会走一遍,数据同时请求,这就会造成UI初始化较慢 需求:每次进入只加载当前看到界面数据、切换时请求当前选项卡数据、重复切换只加载一次 具体实现原理: 使用Fragment...类自带方法setUserVisibleHint()判断当前fragment是否对用户可见,根据回调的isVisibleToUser参数来进行相关的逻辑判断。...isVisibleToUser) { super.setUserVisibleHint(isVisibleToUser); //setUserVisibleHint()有可能在fragment的生命周期外被调用...onFragmentVisibleChange(boolean isVisible) { } @Override protected void onFragmentFirstVisible() { //这里面写请求数据的方法

    1.4K10

    【Android开发基础系列】Layout布局专题

    文本切换器、图像切换器、单选按钮组等),另一种是作为布局容器使用(各种布局)。...Android 视图和视图组的关系如图所示:         根据以上的原则,当屏幕需要包含多个视图时,必须组织在一个视图组中。由于视图组本身也是一个视图,因此视图组还可以包含视图组。...1.2.1 布局属性介绍 1)fill_parent         设置一个构件的布局为fill_parent将强制性地使构件扩展,以填充布局单元内尽可能多的空间。...viewPager):设置和 ViewPager 联动。        ...效果: 代码: 1.3 Widget         App Widget是应用程序窗口小部件(Widget)是微型的应用程序视图,它可以被嵌入到其它应用程序中(比如桌面)并接收周期性的更新。

    37820

    Android ViewPager2 真的香么?

    support 库 不共存,这可真是麻烦了,如果在实际的项目中直接用可麻烦大了; ?...解决 既然不兼容,只好先转到 Androidx 库下,chenzhenlindx大神的博客很有帮助; 工程 -> Refactor -> Migrate to Androidx; 提示是否保存以前工程...新特性,设置了点击事件; 借助 setOrientation() 方法可以动态改变切换方向,水平或竖直; 借助 notifyDataSetChanged() 方法可以实时更新数据; 借助 setLayoutDirection...() 方法可以动态调整内容展示方位,从左到右或从右到左; 此时感觉 ViewPager2 真的很方便,尤其是实时更新数据和动态调整切换方向,真香!...中设置 setLayoutDirection 时,整个 ViewPager2 不仅子 item 内容反向,整体也反向;只有子 item 设置 setLayoutDirection 时会反向。

    2.1K31
    领券