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

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

卡片式布局也是MaterialsDesign中提出的一个新的概念,它可以让页面中的元素看起来就像在卡片中一样,并且还能拥有圆角和投影,下面我们就开始具体学习一下。...为充分利用屏幕的空间,我们可以使用RecyclerView来填充MatenalTest项目的主界面部分。 这里参考一下郭神的demo——实现水果列表,首先需要准备许多张水果图片: ?...最重要的是,Glide的用法非常简单,只需一行代码就能轻松实现复杂的图片加载功能,因此这里我 们准备用它来加载水果图片。...CardView来作为子项的最外层布局,从而使得RecyclerView中的每个元素都是在卡片当中的。...这里要改动的其实也就这一行代码而已,重新运行一下程序,并向上滚动RecyclerView,效果如图: ?

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

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

    用法对比 在开始学习Lazy Layout之前,我想先来对比一下Lazy Layout和RecyclerView的用法区别。...这算复杂吗?可能也还好,因为我们一直以来都是这么写的,很多Android开发者都已经习惯了。 但是如果我告诉你,在Compose中只需要编写这些代码就能实现完全相同的效果,你还能坐得住吗?...嵌套滚动 嵌套滚动一直是我最不喜欢做的事情,但是架不住就是有很多朋友会问。 RecyclerView是支持嵌套滚动的,但我认为绝大部分的情况下大家应该都用不到它。...每当你认为自己需要用到嵌套滚动时,我觉得都应该先暂停一下,想想是不是有其他的替代方案,如ConcatAdapter等。...拼接不同类型子项 刚才有提到,RecyclerView中一些不合理的嵌套滚动需求其实可以考虑使用ConcatAdapter来解决。

    65210

    recycleview的优化_recyclerview原理

    大家好,又见面了,我是你们的朋友全栈君。...下面说说RecyclerView的一些优化方案和使用技巧: 1、recyclerView.setHasFixedSize(true); 当Item的高度如是固定的,设置这个属性为true可以提高性能,尤其是当...具体实现方式是:在 RecyclerView 开始一个滚动时new Runnable对象,根据 layout manager 和滚动的方向预取即将进入视野的条目,可以同时取出一个或多个条目,例如在使用...我们可以使用这些空闲时间来完成将来的工作,并使得未来的帧出现得更快, 如果使用 RecyclerView 提供的LayoutManager,自动使用了这种优化操作。...将该值置false可以让RecyclerView不支持嵌套滑动,这样RecyclerView可以自己响应滑动事件。

    4.3K21

    再也不用担心面试官问RecycleView了

    关于RecyclerView,之前我写过一篇比较基础的文章,主要说的是缓存和优化等问题。但是有读者反映问题不够实际和深入。...RecyclerView预取机制 如何实现RecyclerView的局部更新,用过payload吗,notifyItemChange方法中的参数?...四级缓存和流程说一下。 滑动10个,再滑回去,bindview可以是19次调用,可以是16次调用。 缓存的其实就是缓存item的view,在Recyclerview中就是viewholder。...又或者我只想某一个view的文字颜色进行高亮设置?那么我就可以通过payload参数来标示这个特殊的需求了。 具体怎么做呢?...之前说过解决滑动冲突的办法有两种:「内部拦截法和外部拦截法」。这里我提供一种内部拦截法,还有一些其他的办法大家可以自己思考下。

    1.5K20

    玩转仿探探卡片式滑动效果

    讲起本篇博客的历史起源,估计有一段“历史”了。 最早可以追溯到我试玩探探这个 APP 。第一次进入软件界面,就被这种通过卡片式滑动来选择“喜欢/不喜欢”的设计所吸引了。...不过毋庸置疑的是,这种效果的原理肯定和 ListView / RecyclerView 类似,涉及到 Item View 的回收和重用,否则早就因为大量的 Item View 而 OOM 了。...究其原因,第一,RecyclerView 是自带 Item View 回收和重用功能的,就不需要我们考虑这个问题了;第二,RecyclerView 的布局方式是通过设置 LayoutManager 来实现的...现在,我们可以回过头来看看卡片滑动了。...对于 ItemTouchHelper 来处理 Item View 的触摸滑动事件相必都不陌生吧,如果对这方面不太了解的同学可以看一下我之前的博客:《RecyclerView实现拖拽排序和侧滑删除》。

    1.2K20

    原生长列表内嵌 Flutter 卡片性能调研

    这篇文章主要是对在原生长列表中嵌入多个 Flutter 卡片,每个卡片都对应一个独立的 FlutterView/Engine 这种使用场景进行调研,分析该场景下的性能和内存使用等指标。...RecyclerView 会自动创建多个卡片并循环使用,在 Demo 中,每个卡片都是一个 FlutterCard 对象,其中包含一个独立 FlutterView 和 FlutterEngine,卡片的内容由...在上图 "#5 at 11" 的文本中,5 代表这个卡片的 ID,对应创建的 FlutterView/FlutterEngine 的序号,11 代表这个卡片在 RecyclerView 显示的位置,从这段文本我们可以很清楚地看到创建的...FlutterCard 卡片对象是不断被 RecyclerView 循环使用的; 长列表包含了 200 张卡片,在实际的运行中 RecyclerView 创建了约 9 个 FlutterCard 对象...相关的 Android 渲染流水线帧调度的分析,可以参考我的文章TextureView 的血与泪 内存占用分析 为了排除图片解码缓存内存管理的干扰,我们专门测试了无图和有图两种情况,并且增加了开启引擎优化和关闭引擎优化的对比

    1.4K20

    RecyclerView还能这么玩

    头部是有 8 个控件以 4 x 2 的方阵排列着。中间部分由 2 x 2 的控件组成一个矩形。底部是类似列表的样式。 2 实现思路 我第一想法就是使用 RecyclerView 进行嵌套。...然后再使用通用的 Adapter 进行设配,从而提高代码复用率。这想想还是挺不错。 不过这个方案很快就被我否定了。因为谷歌是不建议 RecyclerView 进行嵌套。...还有自己再反问自己几个问题: item 的事件怎么传递以及处理? 如果全部被嵌套的 RecyclerView 都要加载图片,会不会出现卡顿情况?...那么这就好办了, 我们可以通过根据不同的 item 来返回不同的布局类型。 这个方案既简单同时不会破坏 RecyclerView 的机制,又能保证良好的可扩展性。...很简单,因为在整个列表中,在头部中一行有 4 个控件, 1 个控件占据 1 个span。我就以头部的数据为标准,这样比较方便计算出后面 item 中每个控件占据每行的 span 数。 ?

    68230

    RecyclerView中获取点击位置的接口被废弃了?

    holder.adapterPosition被划线不推荐使用了? 《第三行代码》这才刚刚出版,竟然就有API被弃用了,我决定对这个问题好好研究一下,并加急写一篇文章进行分析。...多个adapter嵌套让我容易联想到RecyclerView中嵌套RecyclerView,但是好像Google长久以来并不推荐这种做法,更不太可能为这种做法废弃API。...那是因为你或许还没有遇到过这样的需求,而我就遇到了。 两年前我在做giffun这个项目时,查看GIF图详情的界面就是使用RecyclerView来做的。 ?...文章写到这里,也就把开篇“木空”同学提出的问题彻底分析完毕,我觉得本篇文章也可以算得上是一篇《第一行代码 第3版》的扩展文章吧。...另外说一下,由于《第一行代码 第3版》已经出版,以后未来我自己编写的所有文章都会使用Kotlin语言,Java就不再使用了,想学习Kotlin语言的朋友们可以考虑一下这本书。

    4.5K43

    Android RecyclerView八个必会的面试技巧

    参考简答:在性能优化方面的经验主要包括: 使用合适的LayoutManager: 不同的布局需求需要选择合适的LayoutManager,避免过度嵌套。...我曾实现过交叉淡入淡出效果,主要步骤包括: 自定义ItemAnimator:创建一个继承自RecyclerView.ItemAnimator的自定义Animator。...RecyclerView的绘制流程 问题: 能详细描述RecyclerView的绘制流程吗?从数据源到最终显示在屏幕上的过程?...RecyclerView的自定义LayoutManager 问题: 能够讲解一下如何自定义RecyclerView的LayoutManager吗?...出发点: 面试官关心你对RecyclerView如何管理和重用视图的理解。 参考简答: ViewHolder模式: RecyclerView使用ViewHolder模式来缓存视图。

    31520

    AndroidTv Home界面实现原理(一)——Leanback 库的使用

    比较常见的 Home 界面风格应该是第一张和第二张的形式,这两种的 ui 实现也不一样,因此我就想搞懂这两种界面分别是如何实现的!!...要我实现的话,思路就是 RecyclerView 嵌套 RecyclerView 来实现,先不谈 RecyclerView 这种滑动的控件在 Tv 上会出问题,嵌套这个坑就足够你填的了。...在 Tv 上,可以用 HorizontalGridView 和 VerticalGridView 替代 RecyclerView 使用。...但这样的嵌套仍会有许多问题出现,比如快速移动时的焦点丢失、性能问题、每一行的 View 如何缓存、复用等。...以下是我觉得应该理解的类: BrowerFragment:用来展示可左右上下滑动的视频列表界面 ArrayObjectAdapter:作用类似于 List,可以用于装每一行的数据,也可以用于装一行里的每一个

    2.9K70

    关于RecyclerView你知道的不知道的都在这了(下)目录正文

    所以,这小节先埋个坑,我打算后续抽时间自己来研究一下,到底应该如何使用自定义 RecyclerView 的缓存策略,到底都有哪些应用场景。...应用场景: 我们来举个例子,就不用官方给的例子了,我额外补充一种场景:界面上存在多行可分别左右滑动的列表控件,即每行是一个 RecyclerView,每行里的 Item 布局样式一致,这时候就可以让每一行的...多行可局部滑动.png 以上布局的实现是外层一个竖直方向的 RecyclerView,它的每一个 Item 都是占据一行的水平方向的 RecyclerView,也就是嵌套 RecyclerView 的方式...这里的每一行的 RecyclerView 里的每个 Item 项的样式均一致,那么这种场景下,可以让每一行的 RecyclerView 都共用同一个 RecyclerViewPool 缓存池。...这样的好处是,当某一行被移出屏幕时,可以将这一行的每个卡位都回收起来,供其他行使用,而不至于每一行每次都是重新创建。

    1.3K30

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

    之前写过一篇嵌套滑动--NestedScroll-项目实例(淘宝首页缺陷),及CoordinatorLayout 和 AppbarLayout 联动原理,比较了淘宝和京东首页的滑动效果,分析了效果呈现差别的原因...向下滑动时,如果tabLayout是吸顶状态,那么会先滑动内层RecyclerView,然后再滑外层RecyclerView。 那么,如果我们 直接 按上述布局结构来实现,会是京东这种效果吗?...2.2 再来看看NestedScrollView嵌套RecyclerView 关于NestedScrollView嵌套RecyclerView的情况,即头部和列表可以一起滑动。如下图: ?...从此篇文章分析结论得知,NestedScrollView嵌套RecyclerView虽然可以实现效果,但是RecyclerView会瞬间加载所有item,RecyclerView失去的view回收的特性...作者最后建议使用RecyclerView多布局。 但其实在真实应用中,可能 头部 和 列表 的数据来自不同的接口,当列表的数据请求失败时要展示缺省图,但头部还是会展示。

    3.8K31

    解决Scrollview 嵌套recyclerview不能显示,高度不正常的问题

    我们先看一个效果,问题说的就是中间的Grid效果在Scrollview 嵌套recyclerview显示问题,在Android Api 24是好的,不过在5,1,1版本(api 22)缺出现了问题 最近项目中...,有一个商品详情页面,页面有好几个网格页面,大家说,我们大可以用GridView去做,但是需要方的要求是,我们的网格的中间的线怎么做呢,对于GridView,我们知道我们可以这是一个背景,然后用verticalSpacing...以前在ScrollView中嵌套嵌套ListView,无法正确的计算ListView的大小,现在我们在ScrollView中嵌套嵌套RecycleView的时候,也出现了计算不出高度的问题,于是有人想到我们是不是可以自己实现一个重写一个继承自...RecycleView的类,重写OmMeasure,呵呵,但是实际上这是不行的,RecycleView是具体的一个控件,不相同与我们的ListView,这里参照之前网上的解决方案,我们可以继承自GridManager...外加一个布局,不知道什么原因,我这里还是没有解决。

    3.4K50

    自定义 Behavior,实现嵌套滑动、平滑切换周月视图的日历

    [1240] 使用 CoordinateLayout 可以协调它的子布局,实现滑动效果的联动,它的滑动效果由 Behavior 实现。以前用过小米日历,对它滑动平滑切换日月视图的效果印象深刻。...ViewOffsetBehavior 的作用是方便改变控件的位置和获取偏移量。所以这里我再偷个懒,把源码里的 ViewOffsetBehavior 直接拷出来用了。...滚动时,日历也向上滚动,最多到当前选中日期那一行,滚动范围和当前选中日期有关。...参数 target 是触发嵌套滑动的控件,在这里就是 RecyclerView,通过 target.getLayoutParams()).getBehavior() 就可以拿到 CalendarScrollBehavior...当嵌套滑动结束时会回调 onStopNestedScroll 方法,可以在这里根据当前控件的位置,判断是否要切换视图。

    3.4K10

    Android5.0和6.0之后新增的控件说明

    为此,博主初步整理了Android在5.0和6.0之后的新增控件,及其对应的说明博文,给大家提供一个可资学习和借鉴的索引。...比如水波图形RippleDrawable和矢量图形VectorDrawable,这两个控件在Android5.0之后的系统内核中提供,所以只有系统版本不低于5.0的手机才能使用它们,运行4....使用v4控件唯一需要注意的地方,是布局文件中要引用完整路径的控件名称,如抽屉布局android.support.v4.widget.DrawerLayout、下拉刷新布局android.support.v4...这部分控件数量最多,实现的界面特效最丰富,而且互相之间存在依赖关系,如design库依赖于appcompat-v7库,部分design控件如NavigationView还依赖于recyclerview-v7...Android5.0和6.0之后补充了这么多新控件,自然有部分老控件变过时了,下面就列举部分新旧控件的替代关系: Toolbar:替代ActionBar RecyclerView:替代ListView和

    1.3K20

    ItemTouchHelper 实现交互动画

    itemView而已,当那两个透明缩小的itemView被再次使用时,之前设置的透明度和高度比例已经是0,所以就出现了这种情况,解决方法也很简单,只要在item被移除后,将itemView的透明度和高度比例设置回来即可...* 动作标识分:dragFlags和swipeFlags * dragFlags:列表滚动方向的动作标识(如竖直列表就是上和下,水平列表就是左和右) * wipeFlags...:与列表滚动方向垂直的动作标识(如竖直列表就是左和右,水平列表就是上和下) * * 思路:如果你不想上下拖动,可以将 dragFlags = 0 * 如果你不想左右滑动...控件滑动到顶部和底部 02.RecyclerView嵌套RecyclerView 条目自动上滚的Bug 03.ScrollView嵌套RecyclerView滑动冲突 04.ViewPager嵌套水平RecyclerView...横向滑动到底后不滑动ViewPager 05.RecyclerView嵌套RecyclerView的滑动冲突问题 06.RecyclerView使用Glide加载图片导致图片错乱问题解决 24.ScrollView

    3.9K20
    领券