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

Android RecyclerView八个必会面试技巧

曾实现过交叉淡入淡出效果,主要步骤包括: 自定义ItemAnimator:创建一个继承自RecyclerView.ItemAnimator自定义Animator。...scrollVerticallyBy、scrollHorizontallyBy: 处理垂直和水平方向上滚动事件,根据滚动距离调整ItemView位置。...优势包括: 减少内存消耗: 通过复用ViewHolder,减少了View创建和销毁,降低了内存开销。 加快渲染速度: 减少了findViewById调用,提高了渲染速度。...更流畅滑动: 减少了创建和销毁View次数,提升了滑动流畅性。 RecyclerViewView缓存机制 问题: 请解释RecyclerView是如何利用View缓存机制来提高性能。...当ItemView滑出屏幕时,对应ViewHolder会被缓存,而不是立即销毁。当需要新ItemView时,可以从缓存中获取ViewHolder,避免频繁View创建和销毁

19620

仿抖音上下滑动分页视频

2.2 使用RecyclerView 使用RecyclerView实现树枝方向上下切换视频分析 1.首先RecyclerView它设置竖直方向滑动是十分简单,同时关于item四级缓存也做好了处理,而且滑动效果相比...4.添加自定义回调接口,在滚动页面和attch,detach时候,定义初始化,页面销毁等方法,暴露给开发者。...,自己也很仔细看了这篇文章。...接着,不管是在recyclerView还是ViewPager中,当页面处于不可见被销毁或者view被回收阶段,这个时候需要把视频资源销毁,尽量视频播放功能封装起来,然后在页面不同状态调用方法即可。...5.7 上拉很快翻页黑屏 因为设置视频背景颜色为黑色,看了好多播放器初始化时候,都是这样。因为最简单解决办法,就是给它加个封面,设置封面的背景即可。

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

已中招!Android 基础面试常常吊死在这几个问题上……

在 Activity 生命周期中,无论是在应用程序启动时,还是在Activity 被销毁然后重新创建(例如在配置更改期间)时,都会调用一次 onCreate() 方法。...换句话说,如果 ViewModel 所有者因配置更改(例如,旋转)而被销毁,则不会销毁它。所有者新实例将重新连接到现有的 ViewModel 。...这就是为什么 RecyclerView 会利用以下事实:滚动时,新行出现在屏幕上,而旧行消失在屏幕上。代替为每个新行创建新视图,而是通过将新数据绑定到旧视图来对其进行回收和重用! 应聘者:学到了!...RecyclerView滚动时回收并重用单元格。 LayoutManager:在 ListView 中,唯一可用视图类型是垂直ListView。...RecyclerView 将列表与其容器分离,因此可以通过设置LayoutManager在运行时轻松地将列表项放在不同容器(linearLayout,gridLayout)中。

2K20

Android开发笔记(一百三十五)应用栏布局AppBarLayout

下面是AppBarLayout结合RecyclerView实现工具栏向上滚动效果截图: ?...下面是AppBarLayout结合NestedScrollView实现工具栏向上滚动效果截图: ?...3、exitUntilCollapsed : 该标志保证页面上至少能看到最小化工具栏,不会完全看不到工具栏。具体滚动说明如下所示: 向上滚动:头部先往上收缩,一直滚到折叠最小高度。...然后头部固定不动,主体继续向上滚动。 向下滚动:头部固定不动,主体先向下滚动,一直滚到主体全部拉出。然后头部向下展开。...具体滚动说明如下所示: 向上滚动:头部先往上收缩,一直滚到折叠最小高度。然后头部与主体先一起滚动,头部滚到位后,主体继续向上。 向下滚动:头部与主体先一起滚动,一直滚到头部折叠最小高度。

1.9K40

项目需求讨论- 自定义滚轮(第二波新实现)

因为比如我们建立一千组一万组数据,不需要考虑要重新滚回中间,问题1和2就解决了。问题3因为RecyclerView 特性,也被解决了。是一个很理想循环滚动滚轮。...获取滚动距离: public int getScollYDistance(RecyclerView recyclerView) { LinearLayoutManager layoutManager...---- 滚动后调整距离让RecyclerView 滚到特定position位置: 简单介绍,就只分二种情况来谈下(正好滑到一个标准距离,让Item正好完全显示这种情况就去除了): 顶部Item...但是结果是不会滚动,原来这个方法当我们Position + 1已经出现在屏幕上了。不管是不是第一个,不管处于屏幕哪个位置,这个RecyclerView就不会滚动忍不住又一句 WHF!!。...无非是二种情况(假设一个ItemHeight为100): 已经有80滚动在外面了。就通过ScrollBy 再向上过给它滚动20到外面。 已经有20滚动在外面了。

1.1K20

Material Design 实战 之第四弹 —— 卡片布局

其中, scroll 表示当RecyclerView向上滚动时,Toolbar会跟着一起向上滚动并实现隐藏; enterAlways 表示当RecyclerView向下滚动时...其中, scroll表示当RecyclerView向上滚动时,Toolbar会跟着一起向上滚动并实现隐藏; enterAlways表示当RecyclerView向下滚动时,Toolbar会跟着一起向下滚动并重新显示...这里要改动其实也就这一行代码而已,重新运行一下程序,并向上滚动RecyclerView,效果如图: ?...运行程序可见, 随着我们 向上滚动RecyclerView会Toolbar消失掉; 向下滚动RecyclerView,Toolbar又会重新出现; 滚动到Toolbar一半时松开手指,Toolbar...又会根据当前滚动距离情况,做出消失或者重新出现反应; 这其实也是MaterialDesign中一项重要设计思想,因为当用户在向上滚动RecyclerView时候,其注意力肯定是在RecyclerView

2.1K10

嵌套滑动通用解决方案--NestedScrollingParent2

京东首页 可见,在向上滑动页面时,当tabLayout滑动到顶部时,外层RecyclerView停止滑动,此时tabLayout即为吸顶状态,接着会 滑动ViewPager中内层RecyclerView.../colorAccent" android:gravity="center" android:padding="15dp" android:text="是头部...[1] = dy; }else { //内层已滚动距离,小于想要滚动距离,那么内层消费一部分,到顶后,剩还给外层自行滑动...,大于想要滚动距离,内层自行处理 }else { //内层已滚动距离,小于想要滚动距离,那么内层消费一部分,到顶后,剩外层滑动...* @param dx 水平方向嵌套滑动子View想要变化距离 * @param dy 垂直方向嵌套滑动子View想要变化距离 dy0 向上滑动

3.6K31

ViewPager中Fragment状态保存哪些事

引言 在使用 ViewPager 时 , 如果我们适配器使用是 FragmentStatePagerAdapter ,那么当我们重新滑到之前已销毁页面时,一般情况下页面的状态依然将保持不变(比如...RecyclerView 滚动位置等,EditText 输入内容 等), 或者说 View 历史状态被还原了。...Fragment 内部是一个 RecyclerView,其数据源来自 activity级 ViewModel(即我们对数据根据key做了缓存,避免每次重新初始化) 我们做一个滚动测试,然后再看看 Fragment...重新创建后 View状态(RecyclerView滚动位置) 变化,如下所示: 因为默认缓存为 n(1)+2 ,即当我们滑动到 item=3 时,1 页面此时已被销毁。...但当我们重新切换到 1 时,可以发现,Fragment1 中 RecyclerView 滚动位置 没有变化,所以可以证明 Fragment 状态的确是被还原了。 那这是怎么做呢?

1.3K20

Android 三级NestedScroll嵌套滚动实践

三级嵌套滚动 一个常见嵌套滚动例子是 CoordinatorLayout/AppbarLayout – RecyclerView, 实现效果是向上滑动列表时,会先将 AppbarLayout 向上滑动直到完全折叠...对于这种两级嵌套滚动需求使用 CoordinatorLayout 几乎都能实现,如果遇到特殊业务需求基于 CoordinatorLayout 和 RecyclerView 实现改改也能实现。...这里遇到需求是即刻首页样式(可参考即刻5.4.2版本),除了要有 AppbarLayout 折叠效果之外还要在 AppbarLayout 顶部展示搜索框和刷新动画。...这里滑动逻辑是: 向上滑动时,最先折叠刷新动画,向下滑动时最后展开刷新动画。 向上滑动列表时先折叠 AppbarLayout,AppbarLayout 完全折叠后再折叠搜索框。...可以发现这里除了 CoordinatorLayout/AppbarLayout – RecyclerView 这对嵌套滚动 Parent 和 Child 之外还多了搜索框和刷新动画,而这三者之间滑动逻辑需要通过嵌套滚动实现

1.5K30

Android:让你明明白白使用RecyclerView——SnapHelper详解

该方法返回一个大小为2int数组,分别对应x轴和y轴方向上距离。 ?...在onFling()方法中判断当前方向上速率是否足够做滚动操作,如果速率足够大就调用snapFromFling()方法实现滚动相关逻辑。...if (distancePerChild <= 0) { return 0; } //这里其实就是根据是横向布局还是纵向布局,来取对应布局方向上滚动距离...其实这两个问题如果你理解了上面所讲SnapHelper原理,解决起来就很容易了。...希望读到这您能转发分享和关注一下,以后还会更新技术干货,谢谢您支持! 转发+点赞+关注,第一时间获取最新知识点 Android架构师之路很漫长,一起共勉吧!

5.4K40

写给初学者Jetpack Compose教程,Lazy Layout

用法对比 在开始学习Lazy Layout之前,想先来对比一下Lazy Layout和RecyclerView用法区别。...比如上述例子中使用LazyColumn,它就是用于在垂直方向上滚动可复用列表。而LazyRow则是用于在水平方向上滚动可复用列表。...嵌套滚动 嵌套滚动一直是最不喜欢做事情,但是架不住就是有很多朋友会问。 RecyclerView是支持嵌套滚动,但我认为绝大部分情况下大家应该都用不到它。...由于嵌套滚动列表方向并不一致,因此这种情况是完全合法,运行效果如下: 再来看第二种合理嵌套滚动,即使内层和外层列表滚动方向一致,只要内层列表在滚动向上尺寸是固定,那么Compose对此仍然是支持...当然可能有些朋友会说,就是Compose 1.5版本,Lazy Layout滚动时候还是会感觉卡卡

33410

RecyclerView技术栈参考资料:

想,无论是开发者还是使用者,一定都非常喜欢这次版本跟新。 同时,这次也带来了两个全新View控件:RecyclerView和CardView。...这篇文章将重点介绍RecyclerView,它有许多内部类和接口。接下来,将介绍它们功能,已经如何使用。...当然,在这之前,要声明是:RecyclerView 是Support Library一部分。...滚出可见区域条目将被回收,并在下一个条目可见时候被复用。 我们可以从下图中得到更直观解释: ? 左边图是数据初始化后示例,当向上滚动视图时候,当条目不可见之后将被回收。...RecyclerView.OnItemTouchListener虽然变得更灵活,但是对应代码量和书写难度却有了一定增长,至少对是这样

1.2K10

仿电商商品分类思路实现

丑豆很早就让给他写一下这个demo,每次都有点忙没给他写,趁着昨天晚上睡前一小时来搞定。 效果图 参照是拼多多商品分类界面来写,先看看样图 ? 然后看看动态效果图 ?...,左边列表item对应type并没有显示在界面的话,我们还需要左边列表进行一个滚动到对应item位置上,知道思路了,然后我们开始敲代码 布局代码实现 1、 主布局是两个列表,这两个列表通过LineaLayout...就不贴了,就是一个TextView和ImageView事 3、右边列表layout重写了RecycleViewonMeasure方法,使其能扩展到最大,如果直接使用RecycleView的话,...大于右边列表滚动position的话,我们需要左边列表进行向上滚动处理,这个处理很简单,只需要让左边列表scrollToPositionWithOffset到右边列表position, ②、如果左边列表最后一个...* 判断右边是否滑动到最后一个item,是的话,也将左边移动到最后一个item * canScrollVertically(1)表示是否能向上滚动

1.5K20

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

通过综合分析发现,抖音用是自定义 LinearLayout 方式来布局 header + Viewpager + RecyclerView ,进而通过拦截 LinearLayout disptachTouchEvent...,由于1中判断单次滑动周期内只触发了一次,还被认为是左右滑动事件,所以 LinearLayout 布局本身没有滚动,但是 RecyclerView 正常响应滚动,导致出现滑动偏差。...ViewPager 相关源码: image.png 核心拦截逻辑: 如果横向上有可滑动子 View ,就不拦截,让子 View 去处理 横向滑动超过临界值 mTouchSlop ,并且大于竖向滑动距离...如果有则啥也不做,如果没有,那么我们判断是不是要最外层 LinearLayout 消费其中竖向部分,满足条件后,自身消费事件滚动。...原文链接:https://juejin.cn/post/6936050349400653860 文末 您点赞收藏就是对最大鼓励! 欢迎关注,分享Android干货,交流Android技术。

96520

自定义 Behavior - 仿新浪微博发现页实现

从效果图,我们可以看到 在 open 状态下,我们向上滑动 ViewPager 里面的 RecyclerView 时候,RecyclerView 并不会向上移动(RecyclerView 滑动事件交给...当 Tab 滑动到顶部时候,我们向上滑动 ViewPager 里面的 RecyclerView 时候,RecyclerView 可以正常向上滑动,即此时外部容器没有拦截滑动事件。...需要实现效果为:在页面状态为 open 时候,向上滑动 Header 时候,整体向上偏移,ViewPager 里面的 RecyclerView 向上滑动时候,消费其滑动事件,并整体向上移动。...在页面状态为 close 时候,不消耗 RecyclerView 滑动事件 在页面状态为 open 时候,向上滑动 Header 时候,整体向上偏移。...所以,我们在 WeiboHeaderPagerBehavior onStartNestedScroll 方法可以这样写,可以确保 只拦截垂直方向上滚动事件,且当前状态是打开并且还可以继续向上收缩时候还会拦截

85720

自定义 behavior - 完美仿 QQ 浏览器首页,美团商家详情页

从效果图,我们可以看到 在 open 状态下,我们向上滑动 ViewPager 里面的 RecyclerView 时候,RecyclerView 并不会向上移动(RecyclerView 滑动事件交给...当 Tab 滑动到顶部时候,我们向上滑动 ViewPager 里面的 RecyclerView 时候,RecyclerView 可以正常向上滑动,即此时外部容器没有拦截滑动事件。...我们向上滑动时候,当Header 处于 open 状态,这时候 Header 向上滑动, content 部分 recyclerView 不会滑动,当 header 处于 close 状态,content...部分向上滑动, RecyclerView 向上滑动。...第二点感触比较深是,刚开始,看了两年前写代码,一开始反应,去,这是什么垃圾代码。确实,很多地方写得挺烂,behavior 耦合业务逻辑,很难复用,也不好维护。

1.3K40

Floating Action Button-Android M新控件

实际上只需要指定一个布局文件,就可以看到效果了,只不过是这时候FAB是固定在屏幕指定位置,而无法随之滚动,不着急,下面会介绍如何设置成可滚动FAB 属性介绍 FAB 默认使用应用主题中设置浮起色作为按键背景...> 同时你还必须把RecyclerView升级到v22版本(在这里使用是 23.1.1),之前v21不支持与CoordinatorLayout一起工作,确保你build.gradle 文件是这样...: 这个案例中使用了cardView compile 'com.android.support:recyclerview-v7:23.1.1' compile 'com.android.support...ScrollAwareFABBehavior(Context context, AttributeSet attrs) { super(); } /** * 处理垂直方向上滚动事件...关联起来,这样按钮就会随着list向下滚动而隐藏,向上滚动而重现: ListView listView = (ListView) findViewById(android.R.id.list); FloatingActionButton

1.4K40
领券