RecyclerView、CardView为用于显示复杂视图的新增Widget。接下来看看如何使用吧。...RecyclerView RecyclerView介绍 RecyclerView作为替代ListView使用,它更先进,更灵活,RecyclerView标准化了ViewHolder,ListView中convertView...是复用的,在RecyclerView中,是把ViewHolder作为缓存的单位了,然后convertView作为ViewHolder的成员变量保持在ViewHolder中,也就是说,假设手机屏幕可显示10...注意的是:RecyclerView不提供ListView中的setOnItemClickListener方法,我们可以在ViewHolder中添加类似的点击事件。...LayoutManager:这个LayoutManager类决定视图被放在画面中哪个位置,但这只是它的众多职责之一。它可以管理滚动和循环利用。
于是,实现仿探探效果的想法再次出现在脑海中。那么,还犹豫什么,趁热来一发吧!就这么愉快地决定了。 首先面临的问题就是关于实现 View 上的考虑。毫无疑问, RecyclerView 是最佳选择!...现在,我们可以回过头来看看卡片滑动了。...在滑动的过程中我们可以重写 onChildDraw(Canvas c, RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, float...(viewHolder); } 现在我们加上动画后,来看看效果: 3.gif swipe效果图 发现还是有问题,第一层的卡片滑出去之后第二层的就莫名其妙地偏了。...所以我们应该在 clearView(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) 方法中重置一下: @Override public
于是,实现仿探探效果的想法再次出现在脑海中。那么,还犹豫什么,趁热来一发吧!就这么愉快地决定了。 首先面临的问题就是关于实现 View 上的考虑。毫无疑问, RecyclerView 是最佳选择!...现在,我们可以回过头来看看卡片滑动了。...在滑动的过程中我们可以重写 onChildDraw(Canvas c, RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, float...(viewHolder); } 现在我们加上动画后,来看看效果: swipe效果图 发现还是有问题,第一层的卡片滑出去之后第二层的就莫名其妙地偏了。...所以我们应该在 clearView(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) 方法中重置一下: @Override public
(5)列表和卡片 RecyclerView和CardView是support-v7包中新添加的组件,使用它们需要引用依赖com.android.support:recyclerview-v7:x.y.z...现在Android 5.X提供了三种Transition类型: 进入和退出动画:两者又包括了explode(分解)、slide(滑动)和fade(淡出)三种效果; 使用方式:假设Activity从A跳转到...,包括了 changeBounds:改变目标视图的布局边界; changeClipBounds:裁剪目标视图的边界; changeTransform:改变目标视图的缩放比例和旋转角度; changeImageTransform...前者是指波纹被限制在控件的边界,后者指波纹不会限制在控件边界中,会呈圆形发放出去。...(9)Notification Android 5.x改进了通知栏,优化了Notification,现在共有三种类型的Notification: 基本Notification:最基本的通知,只有icon
在程序运行过程中,我们可以通过 Kotlin 的安全调用操作符 (?.) 来根据当前的设备配置确定呈现给用户哪一个视图。...至于导航图,日程的目的地页面现在是双窗格 Fragment,而每个窗格中可以展示的目的地都已经被迁移到新的导航图中了。...△ 平板横屏时的搜索应用栏 (窄模式) △ 平板竖屏时的搜索应用栏 (宽模式) 此前,我们通过在搜索 Fragment 的视图层次中的应用栏部分使用 标签,并提供两种不同版本的布局来实现此功能...在宽尺寸屏幕上,这些列表项会转换为一格一格的卡片,卡片上直接显示了详细的内容。 △ 左图: 窄屏幕显示 Codelabs。右图: 宽屏幕显示 Codelabs。...这些独立的网格卡片是定义在 res/layout-w840dp 下的 备用布局,数据绑定处理信息如何与视图绑定,以及卡片如何响应点击,所以除了不同样式下的差异之外,不需要实现太多内容。
效果图 最近开发中遇到这样的需求,recyclerview的item随滚动改变大小和透明度。这个效果看起来挺有动感的,似乎实现起来有点复杂,其实不然,接下来将带领大家手把手实现这个效果。...private int mAlphaViewId = NO_VIEW; // 图片变化视图 private int mImageViewId = NO_VIEW; // 边距变化视图 private...按照实现RecyclerView的套路一步步实现最基本的列表效果,然后将动画与滚动监听的关系放入Adapter中。...Not 3联发科版系统(不得不说这个系统真的很渣,亲测体验)上运行未出现异常。...中,此问题仍然存在。
结合实现下拉刷新,以及RecyclerView的数据适配器RecyclerView.Adapter的用法,还有RecyclerView中item的点击事件的实现方法; 卡片式CardView的用法; 类似...enterAlwaysCollapsed: 当你的视图已经设置minHeight属性又使用此标志时,你的视图只能以最小高度进入,只有当滚动视图到达顶部时才扩大到完整高度。...-- 使用RecyclerView需要在build.gradle中添加 compile 'com.android.support:recyclerview-v7...-- CardView就是一个卡片样式的FrameLayout。...app:cardPreventCornerOverlap : 在v20和之前的版本中添加内边距, 这个属性是为了防止卡片内容和边角的重叠
哈哈 速度那是必须的快~ Material主题 Material Design现在有三种默认的主题可以设置: @android:style/Theme.Material (dark version) @...RecyclerView 详见本人另一篇博客 RecyclerView完全解读 ---- 立体卡片CardView 详情请查看鄙人CradView的使用 ---- 视图和阴影 Material Design...影响视图阴影的因素 以往的Android View通常有2个属性——X和Y,而在Android5.X中,Google为其增加了一个新的属性 —Z,对应垂直方向上的高度变化。...在Android5.x中,View的Z值由 elevation + translationZ(这两个都是5.x引入的新特性)组成。...Z = elevation + translationZ 通过布局文件和Java代码设置视图的阴影 通过布局文件设置 在xml中设置View的视图高度 android:elevation="Xxdp"
RecyclerView 会自动创建多个卡片并循环使用,在 Demo 中,每个卡片都是一个 FlutterCard 对象,其中包含一个独立 FlutterView 和 FlutterEngine,卡片的内容由...在上图 "#5 at 11" 的文本中,5 代表这个卡片的 ID,对应创建的 FlutterView/FlutterEngine 的序号,11 代表这个卡片在 RecyclerView 显示的位置,从这段文本我们可以很清楚地看到创建的...FlutterCard 卡片对象是不断被 RecyclerView 循环使用的; 长列表包含了 200 张卡片,在实际的运行中 RecyclerView 创建了约 9 个 FlutterCard 对象...Pixel,在现在来说算是性能比较差了,可以更好地反映实际的状况。...卡片空白帧数 在 Demo 的场景中,RecyclerView 在惯性滚动时,将新的卡片从不可见区域移进可见区域,触发了 TextureView 的绘制,而 TextureView 的 Surface
例如示例的一个列表展开成为了详情页、FAB 变形为工具栏,或 chip 扩展为了浮动的 卡片。...首先,确定两个共享元素的视图,并为每一个视图添加 过渡名称。第一个是单个邮件列表项的卡片,我们将使用 数据绑定,来确保每一个列表项都有唯一的过渡名称。...,这个组件可以设置一个静态的过渡名称,因为在视图层级中只有这一个视图。...现在我们已经标记了共享元素的视图,接下来就可以创建目的地 Fragment 的 sharedElementEnterTransition,并将其设置给一个 MaterialContainerTransform...在 Reply 应用中,我们可以使用以下代码延迟过渡,直到我们确定 RecyclerView 适配器已被填充,列表项已和过渡名称绑定: postponeEnterTransition() view.doOnPreDraw
痛点 我们通常来讲把出现在消息会话页面内的内容称做消息卡片,目前消息业务常见的消息卡片有文字、富文本、语音、照片、视频、通知消息,除此之外还有订单详情、推荐商品、核对订单等共计30余种消息卡片。...对于消息卡片这种需要快速迭代、实时调整的业务,动态化具有非常重要的意义。主要优势体现在: 提高人效 缩短版本迭代试错周期 解决版本长尾问题 减少包大小等 整个消息的业务场景如下图所示: ?...消息卡片内容视图工厂类 ContentFactory 会根据消息类型注册对应的 ContentConfig 进行一个缓存 消息卡片配置类 ContentConfig 是根据消息类型从工厂类中获取的,返回当前消息卡片的宽高...(size)、消息体 message、当前渲染的消息卡片视图 消息模型 layout ,根据不同的消息类型生成,会保存当前的消息体以及消息卡片的宽高,为了提升性能,缓存在 TableAdapter 数据源操作类中.../ RecyclerView 的重用机制,拿 iOS 来举例,用 weex 的 url 和 TableView 的 identifier 做一个绑定,这样不必自己去维护 weex 卡片的重用和回收。
SwipeRefreshLayout Android 5.0 抽屉布局 DrawerLayout Android 5.0 滑动面板布局 SlidingPaneLayout Android 5.0 嵌套滚动视图...NestedScrollView Android 5.0 appcompat-v7 工具栏 Toolbar Android 5.0 recyclerview-v7 循环视图 RecyclerView...网格布局管理器 GridLayoutManager Android 5.0 瀑布流网格布局管理器 StaggeredGridLayoutManager Android 5.0 cardview-v7 卡片视图...这个与系统版本有关,每个版本的android.jar是固定的,有在该内核中定义的控件才能正常调用,没在内核中定义的控件在运行时会扔出类找不到的异常。...2、第二类是v4兼容库提供的控件,位于SDK的android-support-v4.jar中。
左边的图是数据初始化后的示例,当向上滚动视图的时候,当条目不可见之后将被回收。右图中红色区域内的两条不可见条目,将被放到缓存队列中以便新的条目可见时进行复用。...那么现在,我们将再也不会出现上述症状,因为Google提供了一个更好,更灵活的控件——RecyclerView。 OK,从现在开始,让我们一步一步,开始了解它。...定制Item条目 - ListView只能实现垂直线性排列的列表视图,与之不同的是,RecyclerView可以通过设置RecyclerView.LayoutManager来定制不同风格的视图,比如水平滚动列表或者不规则的瀑布流列表...相反地,在RecyclerView中必须自定义实现RecyclerView.Adapter并为其提供数据集合。...那么现在对于这种新型的RecyclerView.Adapter,我们必须实现并使用它。
//tangram底层支持:vlayout implementation 'com.alibaba.android:vlayout:1.2.36@aar' //tangram虚拟视图...(更灵活的视图,后面单独开篇讲) implementation('com.alibaba.android:virtualview:1.4.6@aar') { transitive...() { @Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) {...super.onScrolled(recyclerView, dx, dy); //在 scroll 事件中触发 engine 的 onScroll,内部会触发需要异步加载的卡片去提前加载数据...内置support支持 Tangram内置了一些support支持,如处理点击SimpleClickSupport,卡片数据加载CardLoadSupport,曝光逻辑ExposureSupport等
卡片式布局也是MaterialsDesign中提出的一个新的概念,它可以让页面中的元素看起来就像在卡片中一样,并且还能拥有圆角和投影,下面我们就开始具体学习一下。...然后在app/build.gradle文件中声明RecyclerView、CardView这几个控件对应的库的依赖: compile 'com.android.support:recyclerview-v7...中的每个元素都是在卡片当中的。...这样RecyclerView的适配器便准备好了,最后修改MainActivity中的代码: ? ? ?...至此AppBarLayout已成功解决RecyclerView遮挡Toolbar的问题,但是这里还并没有体现AppBarLayout中应用的MaterialDesign设计理念, 其实,当RecyclerView
在实现的过程中,我也会将 RecyclerView 的每个部分揉碎了展现给大家,这样大家就可以在自己的应用中实现了。 RecyclerView 是 "何方神圣"?为什么选择它呢?...在 ViewHolder 中,创建一个变量来引用 TextView,然后将它指向表项布局里对应的视图。...在该方法里进行初始化和填充 RecyclerView 中的表项视图。该视图使用前面我们创建的用于显示文本的布局。 () { // 描述表项视图并且将它放在 RecyclerView 中 class FlowerViewHolder(itemView...现在我们可以将 RecyclerView 添加到 MainActivity,并且将 Adapter 赋值给它。
:现在都不再用listview了,代替的是RecyclerView,确实是,但是用的毕竟是少数,所以可能很多人对于这个组件不是很了解,那么我们就来介绍一下吧!...简单来说就是:RecyclerView是一种新的视图组,目标是为任何基于适配器的视图提供相似的渲染方式。...list.remove(position); notifyItemRemoved(position); } } 第二点:LayoutManager 这个LayoutManager类决定视图被放在画面中哪个位置...3、RecyclerView优点和缺点 优点: RecyclerView本身它是不关心视图相关的问题的,由于ListView的紧耦合的问题,google的改进就是RecyclerView本身不参与任何视图相关的问题...缺点: 在RecyclerView中,没有一个onItemClickListener方法。所以目前在适配器中处理这样的事件比较好。如果想要从适配器上添加或移除条目,需要明确通知适配器。
4.1 高性能 在性能方面,希望 贴近Native开发,重点:页面渲染效率 & 组件回收复用 页面渲染:为了提升渲染效率,Tangram将在视图渲染之前把大量的计算工作在VM中完成,并缓存在VM...页面概念模型 一个页面实体由3部分组成:页面(Page)、卡片(Card) & 组件(Item) 具体如下图: ? 之间的关系:组件 构成 卡片、卡片 构成 页面。...下面主要讲解 三层结构中 的 卡片 & 组件。 b....组件 定义:最小单位的UI元素 日常使用的普通的View,如按钮、图片等等 作用:负责UI元素展示 & 业务逻辑 组成元素:视图模型(ViewModel) & 样式(Style) 视图模型:所有组件对有一个统一视图模型...具体使用 上述讲解的 只是Tangram概念模型基本架构 & 原理 在具体实现时 会根据 不同平台 采用 不同实现 方案: 对于Android:采用基于RecyclerView+自定义LayoutManager
我们可以看到,这个RecyclerView中有多种item显示出来,那么具体怎么实现呢,其实在RecyclerView中,我们可以重写方法getItemViewType(),这个方法会传进一个参数position...表示当前是第几个Item,然后我们可以通过position拿到当前的Item对象,然后判断这个item对象需要那种视图,返回一个int类型的视图标志,然后在onCreatViewHolder方法中给引入布局.../** * 加载视图 * */ @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup...RecyclerView.AdapterRecyclerView.ViewHolder> a:getItemViewType返回type值 b:onCreateViewHolder加载不同的视图...(gridLayoutManager); 现在运行试试吧 总结: 1:使用RecyclerView必须要写的就是适配器要继承RecyclerView.AdapterRecyclerView.ViewHolder
及蓝牙支持 2 1.1 Petit Four(花式小蛋糕) 2009-02-09 邮件中保存附件 3 1.5 Cupcake(纸杯蛋糕) 2009-04-27 桌面小部件,录制视频,自动旋转,蓝牙配对,浏览器中复制及粘贴...这些库提供向后兼容版本的新功能、框架中未包含的实用 UI 元素,以及应用可以利用的一系列实用程序。...数据来源于官方网站 特别注意 Android 支持库的最新版本是28.0.0,这是最后一个google发布的支持库版本,现在google已将所有support包下的库都迁移至androidx包下面,...androidx.core:core: 1.3.1 各种兼容库 androidx.fragment.app: 1.2.0 fragment支持库 androidx.cardview:cardview: 1.0.0 卡片式视图...:recyclerview: 1.1.0 强大的列表视图 androidx.room:room-runtime: 2.2.5 数据库ORM框架 androidx.swiperefreshlayout:swiperefreshlayout