Android 布局优化

include标签共享布局

include标签常用于将布局中的公共部分提取出来供其他layout共用,以实现布局模块化,这在布局编写方便提供了大大的便利。例如我们在进行App开发时基本每个页面都会有标题栏,在不使用include的情况下你在每个界面都需要重新在xml里面写一个顶部标题栏,工作量无疑是巨大的,使用include标签,我们只需要把这个会被多次使用的顶部栏独立成一个xml文件,然后在需要使用的地方通过include标签

ViewStub标签实现延迟加载

viewstub标签同include标签一样可以用来引入一个外部布局,不同的是,viewstub引入的布局默认不会扩张,即既不会占用显示也不会占用位置,从而在解析layout时节省cpu和内存。
viewstub常用来引入那些默认不会显示,只在特殊情况下显示的布局,如进度布局、网络失败显示的刷新布局、信息出错出现的提示布局等。

merge标签减少布局层次

merge标签是作为include标签的一种辅助扩展来使用,它的主要作用是为了防止在引用布局文件时产生多余的布局嵌套。

merge标签可用于两种典型情况:
a. 布局顶结点是FrameLayout且不需要设置background或padding等属性,可以用merge代替,因为Activity内容试图的parent view就是个FrameLayout,所以可以用merge消除只剩一个。
b. 某布局作为子布局被其他布局include时,使用merge当作该布局的顶节点,这样在被引入时顶结点会自动被忽略,而将其子节点全部合并到主布局中。

使用CompoundDrawable

当textView和image控件在一起时候可以合并成一个控件使用,主要有如下属性:DrawableTop DrawableLeft DrawableRight DrawableBottom

使用Lint

  • 使用组合控件: 包含了一个ImageView以及一个TextView控件的LinearLayout如果能够作为一个组合控件将会被更有效的处理。  
  • 合并作为根节点的帧布局(Framelayout) :如果一个帧布局时布局文件中的根节点,而且它没有背景图片或者padding等,更有效的方式是使用merge标签替换该Framelayout标签 。
  • 无用的叶子节点:通常来说如果一个布局控件没有子视图或者背景图片,那么该布局控件时可以被移除(由于它处于 invisible状态)。 
  • 无用的父节点 :如果一个父视图即有子视图,但没有兄弟视图节点,该视图不是ScrollView控件或者根节点,并且它没有背景图片,也是可以被移除的,移除之后,该父视图的所有子视图都直接迁移至之前父视图的布局层次。同样能够使解析布局以及布局层次更有效。
  • 过深的布局层次:内嵌过多的布局总是低效率地。考虑使用一些扁平的布局控件,例如 RelativeLayout、GridLayout ,来改善布局过程。默认最大的布局深度为10 。

转载于:https://www.cnblogs.com/loaderman/p/10076672.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/426290.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机二级1605错误,word 出现windows installer 1605错误

您好,我们了解到您在启动Word 2013时遇到Windows installer 出现错误1605 问题。该问题有可能是Word模板损坏获取优化清理操作导致系统文件损坏。建议您尝试以下方法是否能否解决问题:1.退出所有Office程序2.确保以下文件夹内无任何文件:C:\P…

前端扁平化数据转树形数据_把平级数据变成树形数据

为了记住这个方法:转化数据[{element:图片,id:1,pid:0},//count1{element:大图片,id:2,pid:1},{element:png,id:3,pid:2},{element:jpeg,id:4,pid:2},{element:gif,id:5,pid:2},{element:gif11,id:6,pid:5},{element:gif111,id:7,pid:6},{element:gif222,id:8,pid:6…

曾国藩:诚敬静谨恒!

曾国藩:诚敬静谨恒。诚:民无信不立!人与人交往,最讲究诚字。与他人坦诚,说话有诚信,对人诚心,自然会受到他人喜爱和尊重。敬:月满则亏,物盛则衰!要想成大事,需…

java学习(103):字符串概述

//字符串概述 public class test40 {public static void main(String[] args){char[] str1{1,2,3,4,5,6,7,8,9};String str2new String("我是歌谣");String str3new String(str1);String str4new String(str1,3,4);String str5new String("\"\\");Sys…

计算机服务哪些不能关闭,Win7系统下哪些系统服务不能关闭

为了让系统能够更快的启动,很多用户会选择禁用一些系统服务,但并不是所有的服务都能够禁用关闭的,下面是小编与大家分享的Win7系统下哪些不能关闭的服务,保证大家的电脑能够正常的运行。第一、DHCPClient服务这款服务是电脑获取IP…

java学习(104):字符串equals,charAt,endwith,startwith方法

//String方法 public class test41 {//比较两个人的姓名是否相同public static boolean eqName(String name1,String name2){return name2.equals(name1)?true:false;}//按照给定的字符的索引返回public static char findNUM(String resouse,int index){if(index<0||index&…

kafka operation

运行环境&#xff1a;mac os 1. 启动zookeeper ./bin/zookeeper-server-start /usr/local/etc/kafka/zookeeper.properties 2. 启动kafka服务 ./bin/kafka-server-start /usr/local/etc/kafka/server.properties 3. 查看topic列表 ./bin/kafka-topics --list --zookeeper local…

csirs参考信号_发送和接收点(TRP)及信道状态信息参考信号(CSI-RS)传输的方法与流程...

本文中所公开的一个或多个实施例涉及发送和接收点(trp)及信道状态信息参考信号(csi-rs)传输的方法。背景技术&#xff1a;对于使用更高频率的新无线电(nr)&#xff0c;可以引入使用数字和模拟电路来执行波束成型的混合(模拟/数字)波束成型系统。在混合波束成型系统中&#xff0…

java学习(105):字符串indexof,spilt,substring方法

public class test44 {//分割字符串数组public static String[] spitString(String resource,String tag){return resource.split(tag);} }测试 public class test43 {public static void main(String[] args){//String的indexofString mail"javascript.com";System…

初中人教版计算机具体课程,构建信息技术支持下的中学数学课程

摘要&#xff1a;信息时代&#xff0c;数学教育面临着前所未有的机遇和挑战。本文首先结合信息技术的特点&#xff0c;阐述了数学教学方式发生的变化。在此背景下&#xff0c;探讨了数学教学内容也应随之发生变化&#xff0c;数学课程应当尽可能地使用计算器和计算机&#xff0…

redis:Invalid input of type: 'bool' type. Convert to a byte,string or number first

分析:出现此错误的原因是redis版本过高导致的,因此降低redis版本即可 解决: pip install -U redis2.10.6转载于:https://www.cnblogs.com/dakewei/p/10079023.html

mysql创建表格1warning_MySQL:创建、修改和删除表

在说创建、修改和删除表前&#xff0c;我们还是要进行一个操作的简单说明&#xff1a;1.登陆数据库系统在命令行中登陆MySQL数据库管理系统&#xff0c;输入一下内容&#xff1a;mysql -h localhost -u root -p很多人都知道这个&#xff0c;但是其中参数的具体表示什么我们还是…

朴素贝叶斯应用:垃圾邮件分类

1. 数据准备&#xff1a;收集数据与读取 2. 数据预处理&#xff1a;处理数据 3. 训练集与测试集&#xff1a;将先验数据按一定比例进行拆分。 4. 提取数据特征&#xff0c;将文本解析为词向量 。 5. 训练模型&#xff1a;建立模型&#xff0c;用训练数据训练模型。即根据训练样…

java学习(106):字符串tocharArray,tolowercase,touppercase方法

public class test45 {//将给定的字符串返回成一个数组public static char[] toArrayFromString(String target){return target.toCharArray();}//大小写转换根据所给的第二个参数取决于大小写转换public static String toLowerUpper(char[] chs,char ch){if(chl||chL)return …

win10计算机启动一分钟重启,Win10开机提示电脑将在一分钟后自动重启怎么办?...

Win10开机提示“你的电脑将在一分钟后自动重启”怎么办&#xff1f; 最近一位用户又遇到了开机问题&#xff0c;该用户在开机后总是提示“你的电脑将在一分钟后自动重启&#xff0c;Windows遇到问题并且需要重新启动&#xff0c;你应立刻关闭此消息并保存你的工作。”&#xff…

xman的思维导图快捷键_一图胜千言,免费的多人协作思维导图工具,推荐收藏值得拥有哦...

今天给大家推荐一款思维导图制作软件&#xff1a;GitMind&#xff0c;捕捉灵感&#xff0c;激发创意。免费在线思维导图软件&#xff0c;简化逻辑梳理&#xff0c;集思广益&#xff0c;释放创造力在线脑图、思维导图、流程图、工业设计、工程管理&#xff0c;一图涵千面。GitMi…

java学习(107):StringBuilder

//stringbuilder public class test47 {public static void main(String[] args){StringBuilder buildernew StringBuilder("我是一个热血的少年");System.out.println(builder);} }运行结果

单点登录 之 OAuth

OAuth2.0是什么 OAuth2.0是什么——豆瓣和QQ的故事 OAuth简单说就是一种授权的协议&#xff0c;只要授权方和被授权方遵守这个协议去写代码提供服务&#xff0c;那双方就是实现了OAuth模式。 举个例子&#xff0c;你想登录豆瓣去看看电影评论&#xff0c;但你丫的从来没注册过豆…

修改tomcat服务器图标,如何修改tomcat项目的图标(两种)

我们在查看网页的时候很多网站都有自己的小图标&#xff0c;系统读取这个标志的时候先从你的项目的根目录下读看有没有favicon.ico文件&#xff0c;如果有直接显示这个图标&#xff0c;如果没有&#xff0c;则会去webapps/root/下找这个文件&#xff0c;如果这两个地方都没有&a…

ueditor上传图片写入数据库_手把手教你,如何用交管12123上传驾驶证照片!

12123APP普及后方便了很多司机朋友足不出户就能办理交管业务然而交管业务网上办理过程中因为一些小问题的存在导致业务受理受阻例如&#xff1a;司机朋友在使用“交管12123”手机APP办理补换领机动车驾驶证等业务时出现了以下情况▼这种情况可能有两种原因&#xff1a;第一种是…