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

Android开发-Listview中显示不同视图布局

convertView在Item为单一同种类型布局时,能够回收并重用,但是多个Item布局类型不同时,convertView回收和重用会出现问题。...比如有些行为纯文本,有些行则是图文混排,这里纯文本行为一类布局,图文混排行为第二类布局。单一类型ListView很简单,下面着重介绍一下ListView包含多种类型视图布局情形。...2.ListView包含不同Item布局 我们需要做这些工作:   1)重写 getViewTypeCount() – 该方法返回多少个不同布局   2)重写 getItemViewType...,确定new布局         switch(type)         {         case TYPE_1:           convertView = inflater.inflate...convertView.setTag(holder3);           break;         }       }else{         //有convertView,按样式,取得不用布局

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

【基本功】Litho使用及原理剖析

@OnUnmount,卸载视图,主要用于重置视图布局相关属性,防止出现复用问题。 ? 除了上述两种组件类型,Litho中还有一种特殊组件——Layout,它不能使用规范来生成。...Props属性:组件中使用@Prop注解标注参数集合,具有单向性和不可变性。下面通过一个简单例子了解一下如何在组件中定义和使用Props属性: ?...3.3.3 对比Android约束布局 为了解决布局嵌套问题,Android推出了约束布局(ConstraintLayout),使用约束布局也可以达到扁平化视图目的,那么使用Litho好处是什么呢...滑出屏幕itemType1会被拆分成一个个视图单元。LithoView容器由Recycler缓存池回收,其他视图单元由Litho缓存池分类回收。 ?...使用细粒度复用RecyclerView缓存池不再需要区分模板类型来缓存大量视图模板,只需要缓存LithoView容器。细粒度回收视图单元数量要远远小于原来缓存在各个视图模板中视图单元数量。

2K10

Android界面性能优化必读

Android渲染知识 -------------- 1.1 绘制原理 Android系统要求每一帧都要在 16ms 内绘制完成,平滑完成一帧意味着任何特殊帧需要执行所有的渲染代码(包括 framework...,用于了解哪些视图过度绘制,又该如何进行改进。...实例《 Optimizing Android Hardware Layers 》 2.3 如何解决 前面提到过我司目前所需测试维度如下: 界面过度绘制;(检测过度绘制) 渲染性能;(检测严格模式下...UI渲染性能呈现) 布局边界合理性;(检测元素显示合理性) 故接下来将围绕这三两点,分别从概念、追踪、挖掘根源以及排查工具来具体讲述如何解决,以及给开发优化建议。...另外有些强大但可能少用工具在测试性能渲染时辅助分析,比如: HierarchyViewer:这个工具常用来查看界面的视图结构是否过于复杂,用于了解哪些视图过度绘制,又该如何进行改进; Tracer for

4.4K10

安卓 View 和常见控件

布局管理器 ViewGroup 常用三大布局布局 FrameLayout - 用于单个子视图。 线性布局 LinearLayout - 用于横向或竖向依次摆放视图布局。...相对布局 RelativeLayout - 用于定义与父视图和兄弟视图相对位置布局。...绝对布局(已淘汰) 这些布局管理器都扩展了 View Group 类(它本身是 View 类子类),该类专门设计为包含和布置多个子视图。...android.widget.FrameLayout android.widget.ScrollView 它是 FrameLayout 类子类(这意味着您应该只放入一个子视图,该子项包含要滚动完整内容...ListView 是为显示较多项列表而优化特殊控件。它能非常高效地创建、回收和显示视图,而且经过优化,能非常顺畅地滚动。

92110

android如何获取view在布局高度与宽度详解

下面来一起看看吧 实现方法 一、使用 View.measure 测量 View 该方法测量宽度和高度可能与视图绘制完成后真实宽度和高度不一致。...OnPreDrawListener 监听事件 在视图将要绘制时调用该监听事件,会被调用多次,因此获取到视图宽度和高度后要移除该监听事件。...OnGlobalLayoutListener 监听事件 在布局发生改变或者某个视图可视状态发生改变时调用该事件,会被多次调用,因此需要在获取到视图宽度和高度后执行 remove 方法移除该监听事件...layout 改变时调用该事件,会被多次调用,因此需要在获取到视图宽度和高度后执行 remove 方法移除该监听事件。...像在自定义中,加载一次布局,应该选中最后一个post方法最为使用。 另外还用,应该是第三种方式,一般在外部使用,比如需要等待Recyclerview绘制完成后进行操作。

5.6K10

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

办法肯定是有的,在《Android开发笔记(三十五)页面布局视图》中,我们提到margin和padding都可用来设置空隙,空隙数值都是正数,其实空隙值也能是负数,负数表示该视图被隐藏了一部分,仿佛一张纸插了部分纸面到书中...;若该参数是该视图宽度赋值,则表示视图页面完全隐藏了起来,跟visible="gone"效果类似。...这就涉及到Fragment回收机制,onCreateView只会在该页面第一次打开时调用,如果该页面还未被回收,自然就不会重新创建。...子页面来说,仅仅是做了detach操作,并没有做remove或destroy操作,也就是说,ViewPager子页面根本就没被回收;所以点击菜单重新回到替换后ViewPager时,系统发现头两页没有回收...不知道这个情况算不算Fragment一个bug,不管怎样,系统没有自动回收嵌套Fragment,就得我们自己手动回收了。

1.1K70

Android UI布局优化之ViewStub

可以通过布局文件android:inflatedId或者调用ViewStubsetInflatedId方法为懒加载视图跟节点设置ID 4....特性三:可以通过布局文件android:inflatedId或者调用ViewStubsetInflatedId方法为懒加载视图跟节点设置ID(如果跟视图未设置ID的话) public ViewStub...= null) { // 如果引用视图未被垃圾回收回收,则设置其可见性 view.setVisibility(visibility);...} else { // 如果引用视图已经被垃圾回收回收,则抛出异常 // 这也就是为什么setVisibility可以调用多次,但是并不推荐这样做原因...ViewStub标签所有android:layout_打头属性,都会替换待加载视图布局对应属性 最好通过ViewStubinflate方法加载视图,该方法会返回视图根节点。

62120

精选Android中高级面试题:性能优化,JNI,设计模式

性能优化 1、图片三级缓存中,图片加载到内存中,如果内存快爆了,会发生什么?怎么处理? 参考回答:首先我们要清楚图片三级缓存是如何: 如果内存足够时不回收。...android:windowBackground 属性为启动页背景图即可 使用 layer-list 制作一张图片 launcher_layer.xml,将其设置为启动页专一主题背景,并将其设置为启动页布局背景...通过 C/C++ 实现动态库可以很方便地在其它平台上使用 提高程序在某些特定情形下执行效率,但是并不能明显提升 Android 程序性能 2、如何加载 NDK 库 ?...MVC: 视图层 (View) 对应于 xml 布局文件和 java 代码动态 view 部分 控制层 (Controller) MVC 中 Android 控制层是由 Activity 来承担,Activity...本来主要是作为初始化页面,展示数据操作,但是因为 XML 视图功能太弱,所以 Activity 既要负责视图显示又要加入控制逻辑,承担功能过多。

2.5K30

android 优化之布局优化

布局优化思路很简单,尽量减少布局文件层级,看过系统源码都知道,Android view绘制都是逐层绘制,所以布局层级少了,decodeview时候绘制工作自然就少了。...那么如何进行布局优化呢?...4)布局中可以包含两个相同include标签。 2、减少视图层级     标签在UI结构优化中起着非常重要作用,它可以删减多余层级,优化UI。...多用于替换FrameLayout或者当一个布局包含另一个时,标签消除视图层次结构中多余视图组。...更多标签介绍可以参考:点击打开链接 界面绘制优化基本准则: onDraw方法尽量不要创建新临时对象,从而造成Gc频繁回收影响系统性能。

79560

阿里高级Android面试题:Android(虚拟机)内存模型,垃圾回收机制是如何实现

垃圾回收机制是如何实现呢?其实从Jvm内存模型中入手对于理解GC会有很大帮助,不过这里只需要了解一个大概,说多了反而混淆视线。 Jvm(Java虚拟机)主要管理两种类型内存:堆和非堆。...标记阶段任务是标记出所有需要被回收对象,清除阶段就是回收被标记对象所占用空间。 优点是简单,容易实现。...所以,特别适用于存活对象多,回收对象少情况下。 示意图如下(不用我解说了吧): 4. 分代回收算法 分代回收算法其实不算一种新算法,而是根据复制算法和标记整理算法特点综合而成。...一般情况下将堆区划分为老年代(Old Generation)和新生代(Young Generation),老年代特点是每次垃圾收集时只有少量对象需要被回收,而新生代特点是每次垃圾回收时都有大量对象需要被回收...由于老年代特点是每次回收都只回收少量对象,一般使用是Mark-Compact算法。 深入理解分代回收算法 对于这个算法,我相信很多人还是有疑问,我们来各个击破,说清楚了就很简单。

2.3K50

精选Android中高级面试题 (四):性能优化,JNI,设计模式

参考回答:首先我们要清楚图片三级缓存是如何: ? 如果内存足够时不回收。内存不够时就回收软引用对象 2、内存中如果加载一张 500*500 png 高清图片。应该是占用多少内存?...android:windowBackground 属性为启动页背景图即可 使用 layer-list 制作一张图片 launcher_layer.xml,将其设置为启动页专一主题背景,并将其设置为启动页布局背景...通过 C/C++ 实现动态库可以很方便地在其它平台上使用 提高程序在某些特定情形下执行效率,但是并不能明显提升 Android 程序性能 2、如何加载 NDK 库 ?...MVC: 视图层 (View) 对应于 xml 布局文件和 java 代码动态 view 部分 控制层 (Controller) MVC 中 Android 控制层是由 Activity 来承担,Activity...本来主要是作为初始化页面,展示数据操作,但是因为 XML 视图功能太弱,所以 Activity 既要负责视图显示又要加入控制逻辑,承担功能过多。

1.1K30

ApacheCN 安卓译文集 20211225 更新

Kotlin 安卓开发 零、前言 一、开始你 Kotlin 冒险 二、基础 三、玩转函数 四、类和对象 五、作为一等公民函数 六、泛型是你朋友 七、扩展函数和属性 八、委托 九、制作漫威画廊应用...安卓编程初学者手册中文第三版 零、前言 一、初学安卓和 Java 二、第一次接触:Java、XML 和 UI 设计师 三、探索 AndroidStudio 和项目结构 四、布局和材质设计入门 五、卡片视图和滚动视图漂亮布局...二、Kotlin、XML 和用户界面设计器 三、探索 AndroidStudio 和项目结构 四、布局和材质设计入门 五、卡片视图和滚动视图漂亮布局 六、安卓生命周期 七、Kotlin 变量、运算符和表达式...二十四、设计模式、多种布局和片段 二十五、带分页和滑动高级用户界面 二十六、带有导航抽屉和片段高级用户界面 二十七、安卓数据库 二十八、临别赠言 如何使用 Kotlin 构建安卓应用 零、前言...一、创建您第一个应用 二、构建用户屏幕流 三、用片段开发用户界面 四、构建应用导航 五、基本库:RetroFit 库、Moshi 库和 Glide 库 六、回收视图 七、安卓权限和谷歌地图 八、服务

7.1K20

Android面试问题整理

你后台Activity被系统 回收怎么办?如果后台Activity由于某原因被系统回收可了,如何在被系统回收之前保存当前状态? ?...在Android中,怎么节省内存使用,怎么主动回收内存?...Tween动画,这种实现方式可以使视图组件移动、放大、缩小以及产生透明度变化; 可以通过布局文件,可以通过代码 1、控制View动画 a)alpha(AlphaAnimation) 渐变透明 b)scale...在Android中C也是很简单,一个Activity可以有多个界面,只需要将视图ID传递到setContentView(),就指定了以哪个视图模型显示数据。...在控制层上将数据按照视图模型要求(也就是Android SDK中Adapter)封装就可以直接在视图模型上显示了,从而实现了数据绑定。

90820
领券