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

Android性能优化:这是一份详细的布局优化指南(含标签Include、Viewstub、Merge讲解)

减少 布局层级 配合include>标签使用,可优化 加载布局文件时的资源消耗 具体使用 // 使用说明: // 1....当其他布局通过include>标签引用布局A时,布局A中的标签内容(根节点)会被去掉,在include>里存放的是布局A中的标签内容(根节点)的子标签(即子节点),以此减少布局文件的层次...C根标签 的RelativeLayout 改为 * 在引用布局C时,布局C中的标签内容(根节点)会被去掉,在include>里存放的是布局C中的标签内容(..." /> 4.2.2 合适选择布局类型 通过合理选择布局类型,从而减少嵌套 即:完成 复杂的UI效果时,尽可能选择1个功能复杂的布局(如RelativeLayout...默认不显示),如:进度显示布局、信息出错出现的提示布局等 使用说明 先设置好预显示的布局 在其他布局通过标签引入外部布局(类似);注:此时该布局还未被加载显示 只有当ViewStub被设置为可见

1.9K21

从零开始搭建MVVM架构(1)——DataBinding

而且还支持双向绑定:意思你改了bean里的数据,他会自动改变view里显示的数据。你改了xml里的数据,如editText里的数据,他会自动改变bean里的数据。...在android标签加上后,来到我们的xml布局下,对着xml的第一行,按下Alt + Enter,选择 “Convert to data binding layout”,就可以生成DataBinding...Activity设置数据和设置点击事件(意思设置了variable标签后DataBinding会自动生成get和set方法。...只不过这里的ObservableList、ObservableMap是封装好的。当我们改变集合里的数据时。xml也会改变。...即使页面显示的时候,被包裹的布局也不会加载,除非调用inflate。这样算是对布局卡顿的优化了。include则算是代码里的布局优化。 直接放Activity布局了。

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

    Android最佳性能实践(四)——布局优化技巧

    而Android当然也已经充分考虑到了布局重用的重要性,于是提供了include>和这两个非常有用的标签,下面我们就来逐个学习一下。...include> include>标签可以允许在一个布局当中引入另外一个布局,那么比如说我们程序的所有界面都有一个公共的部分,这个时候最好的做法就是将这个公共的部分提取到一个独立的布局文件当中,然后在每个界面的布局文件当中来引用这个公共的布局... 标签是作为include>标签的一种辅助扩展来使用的,它的主要作用是为了防止在引用布局文件时产生多余的布局嵌套。...在上面我们讲解include>标签的用法时主要介绍了它优点,但是它也存在着一个不好的地方,就是可能会导致产生多余的布局嵌套。...ok_cancel_layout最外层的LinearLayout布局删除掉,换用了标签,这就表示当有任何一个地方去include这个布局时,会将标签内包含的内容直接填充到include

    1.3K81

    Android DataBinding 从入门到进阶,看这一篇就够

    { enabled = true } } 一、基础入门 启用 DataBinding 后,这里先来看下如何在布局文件中绑定指定的变量打开布局文件,选中根布局的 ViewGroup...,而视图改变时也可以同时改变数据 看以下例子,当 EditText 的输入内容改变时,会同时同步到变量 goods,绑定变量的方式比单向绑定多了一个等号: android:text="@={goods.name...和 viewStub include ------- 对于 include 的布局文件,一样是支持通过 dataBinding 来进行数据绑定,此时一样需要在待 include 的布局中依然使用 layout...标签,声明需要使用到的变量 view_include.xml 布局文件中都可以通过 list[index] 的形式来获取元素 而为了和 variable 标签的尖括号区分开,在声明 Lsit 之类的数据类型时

    8.1K72

    android 优化之布局优化

    1、布局重用include /> include />标签能够重用布局文件,简单的使用如下: android...4)布局中可以包含两个相同的include标签。 2、减少视图层级     标签在UI的结构优化中起着非常重要的作用,它可以删减多余的层级,优化UI。...多用于替换FrameLayout或者当一个布局包含另一个时,标签消除视图层次结构中多余的视图组。.../>介绍可以参考点击打开链接 3、需要时使用     标签最大的优点是当你需要时才会加载,使用他并不会影响UI初始化时的性能。...更多标签介绍可以参考:点击打开链接 界面绘制优化的基本准则: onDraw方法尽量不要创建新的临时对象,从而造成Gc的频繁回收影响系统性能。

    83960

    kotlin-android-extensions插件也被废弃了?扶我起来

    而kotlin-android-extensions插件的出现则让这一情况完全发生了改变,我们可以不用再编写烦琐的findViewById代码,同时能用一种非常简便的写法进行替代。...接下来我们开始分别学习如何在include和merge的布局中使用ViewBinding。 先来看include,这个情况比较简单。...merge和include最大的区别在于,使用merge标签引入的布局在某些情况下可以减少一层布局的嵌套,而更少的布局嵌套通常就意味着更高的效率。...="Done" /> 可以看到,这里最外层的布局使用了merge标签,这就表示当有任何一个地方去include这个布局时,会将merge标签内包含的内容直接填充到include的位置...因为merge标签并不是一个布局,所以我们无法像刚才那样在include的时候给它指定一个id。 那么这种情况下应该怎么使用ViewBinding呢?

    3.7K31

    Android性能优化系列之布局优化

    学会使用布局标签优化布局 (1)include>标签 include标签常用于将布局中的公共部分提取出来供其他layout共用,以实现布局模块化,这在布局编写方便提供了大大的便利。...例如我们在进行App开发时基本每个页面都会有标题栏,在不使用include的情况下你在每个界面都需要重新在xml里面写一个顶部标题栏,工作量无疑是巨大的,使用include标签,我们只需要把这个会被多次使用的顶部栏独立成一个...注意: 使用include最常见的问题就是findViewById查找不到目标控件,这个问题出现的前提是在include时设置了id,而在findViewById时却用了被include进来的布局的根元素...标签也是一样的,我们看到遇到include标签时,会调用parseInclude函数,这就是对标签的解析,我们看看吧。...某布局作为子布局被其他布局include时,使用merge当作该布局的顶节点,这样在被引入时顶结点会自动被忽略,而将其子节点全部合并到主布局中。

    1K20

    Android布局优化三剑客:include+merge+ViewStub

    1、include include的中文意思是“包含”、“包括”,当你在一个主页面里使用include标签时,就表示当前的主布局包含标签中的布局,这样一来,就能很好地起到复用布局的效果了。...别忘了我们的目的是复用,当你在一个主布局中使用include标签添加两个以上的相同布局时,id相同就会冲突了,所以重写它可以让我们更好地调用它和它里面的控件。...那么有没有办法可以在使用include时不增加布局层级呢?答案当然是有的,那就是使用merge标签。...使用merge标签要注意一点:必须是一个布局文件中的根节点,看起来跟其他布局没什么区别,但它的特别之处在于页面加载时它的不会绘制的。...2.3 merge的ID 在学习include标签时我们知道,它的android:id属性可以重写被include的根布局id,但如果根节点是merge呢?

    3.5K53

    Android开发之布局优化

    1、抽象布局标签 (1) include>标签 include标签经常使用于将布局中的公共部分提取出来供其它layout共用,以实现布局模块化。这在布局编写方便提供了大大的便利。...(2) 标签 viewstub标签同include标签一样能够用来引入一个外部布局。不同的是。...viewstub经常使用来引入那些默认不会显示,仅仅在特殊情况下显示的布局,如进度布局、网络失败显示的刷新布局、信息出错出现的提示布局等。...(3) 标签 在使用了include后可能导致布局嵌套过多。多余不必要的layout节点。...某布局作为子布局被其它布局include时,使用merge当作该布局的顶节点,这样在被引入时顶结点会自己主动被忽略。而将其子节点所有合并到主布局中。

    33310

    性能优化之布局优化记录

    RecyclerView及ViewPager等外部容器最好不要使用背景色,如果内容有背景色会导致重叠 selector可使用系统自带的点击效果android:background="?...布局优化标签 1、include>:常用于将布局中的公共部分提取出来供其他layout共用,以实现布局模块化,这在布局编写方便提供了大大的便利。...2、:viewstub标签同include标签一样可以用来引入一个外部布局,不同的是,viewstub引入的布局默认不会扩张,即既不会占用显示也不会占用位置,从而在解析layout时节省...viewstub常用来引入那些默认不会显示,只在特殊情况下显示的布局,如进度布局、网络失败显示的刷新布局、信息出错出现的提示布局等。...比较直观的感觉是:在设置里打开显示布局边界后,如果不是使用标签,GONE掉后,加载中的布局还是会有颜色显示,而使用了此标签后颜色会消失。

    43620

    Android Jetpack 组件之 DataBinding 详解

    Data Binding Library 会自动生成将布局中的视图和数据对象绑定所需要的类,Data Binding Library 的布局文件中以 layout 标签为根标签,然后是具体的数据元素和视图元素...,默认情况下,类的名称基于布局文件的名称,如布局文件名为 activity_main,则该布局文件对应的绑定类是 ActivityMainBinding,该类包含数据对象到布局文件的所有绑定,那么如何绑定数据和视图呢...@{} 表达式中使用字符串 如何在 @{} 表达式中使用字符串而不是字符串变量呢,有两种方式,具体如下: ```java ## 事件绑定 使用 databinding 时可以采用方法引用或监听绑定的方式来设置事件监听...type="com.manu.View" alias="MView"/> 使用 variable 关键字定义要在 xml 布局中使用的变量,如果使用了 include 布局,则要使用 bind 绑定...include 包含的布局与主布局使用同样的变量,创建一个 include 包含的布局 test_layout.xml 文件,具体如下: <?

    75510

    导航: 多返回栈 | MAD Skills

    通过这个功能,当用户选择另一个标签页 (Tab) 时,当前标签页的返回栈会被保存,而所选标签页的返回栈会被恢复。...通过这些扩展函数,应用可以为每个标签页保持一个单独的 NavHostFragment,每个 NavHostFragment 带有它自己的返回栈,当用户切换标签页时,应用在不同的 NavHostFragment...现在我们的 Activity 布局只包含一个带有单个导航图的 NavHostFragment。..."/> 当我运行应用时,这次底部标签页不再保持它们的状态,并会在我切换到其他标签页时重置它的返回栈。...欢迎您 点击这里 向我们提交反馈,或分享您喜欢的内容、发现的问题。您的反馈对我们非常重要,感谢您的支持!

    82320

    详细介绍安卓布局性能优化之(include 、merge、ViewStub)

    include标签 include标签常用于将布局中的公共部分提取出来供其他layout共用,以实现布局模块化,也是平常我们设计布局时用的最多的 include 官方文档 的layout布局,以及该布局的控件 include标签如果使用layout_xx属性,会覆盖被include的xml文件根节点对应的layout_xx属性,建议在include标签调用的布局设置好宽高位置...2.某布局作为子布局被其他布局include时,使用merge当作该布局的顶节点,这样在被引入时顶结点会自动被忽略,而将其子节点全部合并到主布局中。...merge标签使用: 在XML布局文件的根布局如RelativeLayout直接改成merge即可 merge使用注意 1.因为merge标签并不是View,所以在通过LayoutInflate.inflate...ViewStub 标签最大的优点是当你需要时才会加载,使用它并不会影响UI初始化时的性能.各种不常用的布局像进度条、显示错误消息等可以使用ViewStub标签,以减少内存使用量,加快渲染速度.ViewStub

    1.6K10

    常用Android布局文件优化技巧总结

    include 标签可以将一个布局文件嵌入到另一个布局文件中,从而减少代码的重复性和布局文件的大小。可以使用 include 标签来分离重复的代码,并提高布局文件的复用性。...在使用 include 标签的同时,还可以使用 android:visibility 属性来指定布局的显示和隐藏。...使用 include 标签的示例代码如下: include android:id="@+id/subview" android:layout="@layout/other_layout..." android:layout_width="match_parent" android:layout_height="wrap_content" /> 在使用 include 标签时...使用 Lint 来检查布局文件中的问题。 在编写布局文件时,我们可能会遇到一些常见的问题,如布局文件过大、布局文件层次结构过深、布局文件加载时间过长等。

    26220

    Android开发笔记(七十四)布局文件优化

    include/merge 布局优化中常常用到include/merge标签,include的含义类似C代码中的include,意思是直接把指定布局片段包含进当前的布局文件。...不要急,merge标签便是处理这个问题的,merge要和include配合使用,也就是说,merge只能是include子布局文件的根节点,且merge无需设置额外的属性。...merge标签代替了根节点LinearLayout、RelativeLayout和FrameLayout原来的位置,只是告诉编译器:我是个占位的合并标签,不需要对我做布局处理;这样app在渲染UI时,只是简单合并...代码中设置主题可通过“setTheme(R.style.***)”完成,布局中设置可在AndroidManifest.xml的activity节点下添加theme属性,如“android:theme="...从截图可以看到,background的覆盖区域只有窗口,且窗口对内半透明、对外不透明 点击下载本文用到的优化布局文件的工程代码 点此查看Android开发笔记的完整目录

    1.2K30

    Android绘制优化(二)布局优化

    使用Include标签来进行布局复用 一个很常见的场景就是,多个布局需要复用一个相同的布局,比如一个TitleBar。...如果需要修改TitleBar则需要去每个引用TitleBar的布局进行修改。为了解决这些问题,我们可以用Include标签来解决。...可以看到我们用include标签引入了titlebar布局,运行效果如下图所示。 ? 用Merge标签去除多余层级 Merge意味着合并,在合适的场景使用Merge标签可以减少多余的层级。...Merge标签一般和Include标签搭配使用,上面的例子,我们用Hierarchy Viewer来查看布局层级,如下图所示。 ?...可以看到我们用Include标签引用的布局的根布局是一个LinearLayout。如果我们使用Merge标签来替换LinearLayout呢?titlebar.xml 的代码如下所示。 ?

    1.2K80

    Android-布局优化merge, viewStub, include总结

    多层布局的嵌套会导致页面加载慢,影响用户的体验,今天我们就来学学如何使用 include,merge及viewStub。...原来:如果给include设置了id,就会覆盖掉引用布局根布局的id,所以解决办法用两种: 第一种直接获取include的id,进行findviewByid() 第二种将两者的id取名一致 我们选取第一种...image.png 2.merge merge标签是作为include标签的一种辅助扩展来使用的,也就是需要和include一起使用,它的主要作用是为了防止在引用布局文件时产生多余的布局嵌套。...image.png 欧克,我们看看我们将include中的布局改为merge,注意:merge必须放在布局文件的根节点上。...image.png ViewStub内容已加载的布局层级: ? image.png ViewStub标签使用注意点: 1,ViewStub标签不支持merge标签。

    1.1K10

    Android Jetpack架构组件(八)之DataBinding

    在XML文件的layout标签下,创建data标签,在data标签中再创建variable标签,variable标签主要用到的就是name属性和type属性,类似于Java语言声明变量时,需要为该变量指定类型和名称...2.7 include标签 在Android应用开发中,为了能够让布局文件得到复用,在编写布局的时候我们经常会使用include标签,相同结构与内容的布局文件就可以在多处使用。...但是如果一个布局文件中使用了DataBinding,同时也使用了include标签,那么如何使用nclude标签引入的布局文件中中的数据呢。...//省略其他代码 布局表达式中直接传入页面变量user,include标签属性值可以任意取名,但是要注意的是,在二级页面的variable标签中的...name属性,必须与一级页面中的include标签属性名一致,如layout_data_binding的代码所示。

    2.3K20

    Android布局优化:include 、merge、ViewStub的详细总结

    一、include的用法以及注意点 在开发Android布局时,我们常将一些通用的视图提取到一个单独的layout文件中,然后使用include>标签在需要使用的其他layout布局文件中加载进来,比如我们自己...布局文件有多个include标签需要设置ID,才能找到相应子View的控件,否则只能找到第一个include的layout布局,以及该布局的控件。...3,如果我们给include所加载的layout布局的根容器设置了id属性,也在include标签中设置了id属性,同时需要在代码中获取根容器的控件对象时,最好将这两个id设置相同的名称!...include标签存在着一个不好的地方,可能会导致产生多余的布局嵌套。同样通过一个小demo来说明: 比如项目中有一个公共的登录按钮布局,如下: login.xml: 点击显示按钮,UI如下: ? ViewStub标签使用注意点: 1,ViewStub标签不支持merge标签。

    2.2K50
    领券