Android应用优化之最基本的UI层显示优化

这篇具有很好参考价值的文章主要介绍了Android应用优化之最基本的UI层显示优化。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


.Android Studio有自带的视图分析工具 Layout Inspector(布局检查器),打开方式菜单栏Tools–> Layout Inspector。

可以看到Layout Inspector最右侧的属性栏可以查看每一个View的所附带的属性及属性值。

3.接下来我们主要分析以下三个问题:


【问题1】没有用的父布局

通过工具和查看代码,看看是否能把某Layout子View放到父Layout里,这样就可以把Layout这一层去掉。优化成扁平化的布局层级,有利于提高界面的渲染速度。

【问题2】某种情况才会使用的UI被设置成View.GONE

我们在开发应用程序的时候,经常会遇到这种情况,会在运行时动态根据条件来决定显示哪一个View或者ViewGroup,把最先要显示的放在第一位显示,不是第一时间要显示的暂时设置为View.GONE。这样的做法优点是逻辑简单,而且控制起来非常的方便,但是缺点是会消耗资源,虽然把View或者ViewGroup的初始可见设为View.GONE,但是在Inflate布局的时候,View还是被Inflate,也就是说仍然会创建对象,会被实例化,会被设置属性,也就是说会消耗内存等资源的。官方推荐的做法是使用ViewStub,ViewStub是一个轻量级的View,他是一个使用资源非常小的控件。

【问题3】使用LinearLayout排版导致布局层次加深

程序的每个组件和 Layout 都需要经过初始化、布局和绘制,如果布局嵌套层次过深,就会导致加载操作更为耗时,更严重的话还可能导致内存溢出。例如:某个布局是用两个LinearLayout嵌套实现的,但是通过使用一个RelativeLayout我们可以实现同样的效果,这样就可以减少一个层次,可以很明显看到优化效果。

4.移除或修改Window默认的Background


我们通常在设置通用Theme时候,都用设置一个默认背景色,作为应用的基础色

<style name="AppTheme.Base" parent="Theme.AppCompat.Light.NoActionBar"> <item name="colorPrimary">@color/app_status_bar_bg_color</item> <item name="colorPrimaryDark">@color/app_status_bar_bg_color</item> <item name="android:textColorPrimary">@android:color/black</item> <item name="android:windowBackground">@color/app_frame_bg_color</item> </style>

但是在布局页面,设计人员设计的底色,根本不是默认的背景色,如果我们在这个页面的根布局再设一个背景的话就是多绘制一层背景。

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@android:color/white"><!-- 会导致过度绘制的写法 --> </RelativeLayout>

这种情况,我们可以这样处理:

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

getWindow().setBackgroundDrawableResource(android.R.color.white);

setContentView(R.layout.activity_main);

*

}

这样修改布局的背景色,我们可以避免出现过度绘制的情况。

5.减少写View与ViewGroup


  • 可以使用RelativeLayout减少层级的就使用RelativeLayout,否则使用LinearLayout线性布局。因为Android中RelativeLayout的测量次数比LinearLayout(不含weight的情况下)多。

  • drawableLeft 代替ImageView + TextView

  • 使用ConstraintLayout。作为AndroidStudio新版本的推荐的默认布局,可想它的强大之处,它是RelativeLayout的加强版,它是百分比布局的替换品。

  • %1$d代替TextView + TextView。
    自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

Android应用优化之最基本的UI层显示优化,程序员,android,ui

Android应用优化之最基本的UI层显示优化,程序员,android,ui

Android应用优化之最基本的UI层显示优化,程序员,android,ui

Android应用优化之最基本的UI层显示优化,程序员,android,ui

Android应用优化之最基本的UI层显示优化,程序员,android,ui

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)

Android应用优化之最基本的UI层显示优化,程序员,android,ui

分享读者

作者2013年java转到Android开发,在小厂待过,也去过华为,OPPO等大厂待过,18年四月份进了阿里一直到现在。

被人面试过,也面试过很多人。深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长,而且极易碰到天花板技术停滞不前!

我们整理了一份阿里P7级别的Android架构师全套学习资料,特别适合有3-5年以上经验的小伙伴深入学习提升。

主要包括阿里,以及字节跳动,腾讯,华为,小米,等一线互联网公司主流架构技术。如果你有需要,尽管拿走好了。

Android应用优化之最基本的UI层显示优化,程序员,android,ui

35岁中年危机大多是因为被短期的利益牵着走,过早压榨掉了价值,如果能一开始就树立一个正确的长远的职业规划。35岁后的你只会比周围的人更值钱。

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!文章来源地址https://www.toymoban.com/news/detail-860641.html

比周围的人更值钱。

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

到了这里,关于Android应用优化之最基本的UI层显示优化的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 鸿蒙OS应用开发之最简单的程序

    前面介绍怎么样安装鸿蒙应用开发的环境,然后试着运行起来,并安装运行的虚拟机,以及对应9.0版本的API和SDK等软件。这样就具备了基本的开发基础,就可以进入创建应用程序开发了。 在我们起飞之前,先要来理解鸿蒙APP的基本组成,也就是这个APP主要长得怎么样,要对它

    2024年02月04日
    浏览(28)
  • 【Android 逆向】程序员高危开发方向 ( 违法软件类型 | 赌博游戏 | 色情类应用 | 涉及金融类软件 | 爬虫类软件 | 区块链货币 | 甄别是否合法 )

    棋牌类 游戏开发 , 写这类游戏的程序员 很容易被抓 , 只要 涉及到了 充值 以及 提现 , 就是涉嫌赌博 ; 常见的 就是 麻将类游戏 , 纸牌类游戏 , 具体的地方麻将或扑克玩法 , 德州扑克 , 21 点 , 老虎机 等 类型的 游戏 ; 抽卡类的游戏 , 充值 然后 赌概率 , 比如原神这种 , 只充值

    2024年01月19日
    浏览(35)
  • android excludeFromRecents将activity在最近的使用的应用程序列表中不显示

    excludeFromRecents 是Android应用程序清单文件(AndroidManifest.xml)中的一个属性,用于控制应用程序是否在最近使用的应用程序列表中显示。通过将 excludeFromRecents 属性设置为 true ,可以将应用程序从最近使用的应用程序列表中排除。 以下是将应用程序排除在最近使用的应用程序列

    2024年02月15日
    浏览(48)
  • 【Linux】程序员的基本素养学习

    本文记录自己的学习生涯,学一点记一点,做好准备随时能够提桶。 注意: 该文内容为知识点的总结:参考《程序员的自我修养–链接、装载与库》一书,感谢作者,如有侵权,联系我删除,非常谢谢。 程序所需要的内存空间大小的虚拟空间映射到某个物理地址空间。 问题

    2024年02月11日
    浏览(29)
  • 程序员业务,微信全文搜索技术优化

    一、iOS微信全文搜索技术的现状 全文搜索是使用倒排索引进行搜索的一种搜索方式。倒排索引也称为反向索引,是指对输入的内容中的每个 Token 建立一个索引,索引中保存了这个 Token 在内容中的具体位置。全文搜索技术主要应用在对大量文本内容进行搜索的场景。 微信终端

    2023年04月11日
    浏览(34)
  • 10.4K Star!程序员为程序员针对性优化的开源免费笔记

    平时我一直用Notion来记录内容为主,但也一直关注着其他开源产品。上周正好看到一款非常受欢迎的开源免费笔记,今天就推荐给大家: VNote 。 VNote一个由程序员为程序员打造的开源笔记应用,基于Qt开发,专注于使用 Markdown 来写作的群体。它提供完美的编辑体验和强大的笔

    2024年02月12日
    浏览(36)
  • 程序员的浪漫—利用Matlab 实现圣诞树动态显示

            圣诞节是基督教纪念耶稣诞生的重要节日。亦称耶稣圣诞节、主降生节,天主教亦称耶稣圣诞瞻礼。耶稣诞生的日期,《圣经》并无记载。公元336年罗马教会开始在12月25日过此节。12月25日原是罗马帝国规定的太阳神诞辰。有人认为选择这天庆祝圣诞,是因为基督教

    2024年02月04日
    浏览(34)
  • Android相机开发实战,Android程序员必看

    由于需求不同,所以选择的方案固然也不同,至于第二种调用系统相机,这里就不过多讲解了,使用Intent对象设置一个Action动作即可,跳转时使用startActivityForResult,然后在onActivityResult处理相关数据便可,关键代码: intent.setAction(“android.media.action.STILL_IMAGE_CAMERA”); 至于使用

    2024年04月15日
    浏览(39)
  • Android程序员成长之路

    应该热爱学习Android知识 具备基本的自学能力和解决问题的能力 具备实践能力 Java(基本) C/C++(进阶) Kotlin(基本) Python(可选) 飞书学习路线图 学习路线图正在完善中... 当然读者也可以提出宝贵建议。 我将会按照 Android学习路线图 发布博客文章。 因本人才疏学浅,博客文章中难

    2024年02月09日
    浏览(38)
  • 读程序员的制胜技笔记08_死磕优化(上)

    4.3.1.1. 只能给你一堆用于比较的数字 4.3.1.2. 不能告诉你代码的运行速度是快还是慢 4.3.1.3. 可以告诉你它们比其他一些代码运行得慢还是快 4.3.5.1. 可以消除因测量误差或者调用开销产生的波动 4.3.5.2. 适用于微观基准测试 4.3.5.2.1. 适用于微观基准测试 4.3.5.3. 基准测试并没

    2024年02月05日
    浏览(62)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包