美文网首页
Android-布局优化问题

Android-布局优化问题

作者: Jeffrey599 | 来源:发表于2018-05-23 20:38 被阅读0次

在进行Android应用开发时,界面优化问题至关重要,它严重影响了应用的加载效率,我简单谈论一下Android开发中UI界面的优化问题。

添加到应用中的每一个布局和控件都需要经过初始化、排列位置、绘制三个过程。

通常遇到的问题:比如说,使用嵌套的线性布局可能导致你的布局层级变得十分冗余。此外,如果在嵌套的线性布局中使用了 layout_weight 参数的话,那么他的每一个子 view 都需要被重新测量两次。特别是当他们被用在 ListView 和 GridView 中时,他们会被反复的测量。

可以使用Hierarchy Viewer 以及 Layoutopt来检测(可以查看UI生成树)和优化我们布局,对于工具的具体用法在这里不细说了。

总的来说,要想优化界面,通常的可以使用的方法是:

1、 优化布局层次,尽可能使界面扁平化。

通过修改ui布局来减少界面嵌套层次。例如:多使用相对布局来设计界面。

2、 使用标签。

<merge/>

当LayoutInflater遇到<merge/>标签时,它会跳过它,并将<merge />内的元素添加到<merge />的父元素里。

<merge/>只能作为XML布局的根标签使用,只能替换<FrameLayout/>

当Inflate以<merge/>开头的布局文件时,必须指定一个父ViewGroup,并且必须设定attachToRoot为true。参看LayoutInflater.inflate(int resource, ViewGroup root, booleanattachToRoot)。

<include/>

标签内不能设置RelativeLayout属性,如android:layout_alignParentBottom,因为不起作用

include标签内设置id属性后(android:id),其引用的布局layout内的id属性就不起作用了,怀疑是其引用的layout外层包裹了一层include标签或者是覆盖了其内的属性id

如果没有include标签,所有布局代码都写在一个xml文件中,界面会显得很冗余,可读性很差。而且界面加载的时候是按照顺序加载的,前面的布局不能调用其后面的布局id。而采用include后,一个include中可以引用其后的include中的布局id属性

3、按需加载View视图。

使用< ViewStub />标签来加载一些不常用的布局。

ViewStub:可以理解成一个非常轻量级的View,有着自己的属性及特定的方法。当ViewStub使用在布局文件中时,当程序inflate布局文件时,ViewStub本身也会被解析,且占据内存控件,但是与其他控件相比,主要区别体现在以下几点:

1.当布局文件inflate时,ViewStub控件虽然也占据内存,但是相相比于其他控件,ViewStub所占内存很小;

2.布局文件inflate时,ViewStub主要是作为一个“占位符”的性质,放置于view tree中,且ViewStub本身是不可见的。ViewStub中有一个layout属性,指向ViewStub本身可能被替换掉的布局文件,在一定时机时,通过viewStub.inflate()完成此过程;

3.ViewStub本身是不可见的,对ViewStub setVisibility(..)与其他控件不一样,ViewStub的setVisibility成View.VISIBLE或INVISIBLE如果是首次使用,都会自动inflate其指向的布局文件,并替换ViewStub本身,再次使用则是相当于对其指向的布局文件设置可见性。

上面简单谈论了一下布局优化的方法和部分方法的简介,作为概述,没有深入研究。若有不足之处,还请批评指正。

相关文章

  • Android-布局优化问题

    在进行Android应用开发时,界面优化问题至关重要,它严重影响了应用的加载效率,我简单谈论一下Android开发...

  • Android-布局优化

    过度绘制 在“开发者选项”中打开“调试 GPU 过度绘制”(对未默认开启硬件加速的界面需要同时打开“强制进行 GP...

  • Android-布局优化

    APP的优化是任重而道远的过程,必须在意每一个环节,否者当你想要优化的时候,发现到处都是坑,已经不知道填补哪里了,...

  • Android-ConstraintLayout

    ConstraintLayout(约束布局) 主要是为了解决布局嵌套过多的问题(布局优化、性能优化根本上的),以灵...

  • Android布局优化(转)

    转自 0前言 Android的绘制优化其实可以分为两个部分,即布局(UI)优化和卡顿优化,而布局优化的核心问题就是...

  • Android-布局优化merge, viewStub, inc

    多层布局的嵌套会导致页面加载慢,影响用户的体验,今天我们就来学学如何使用 include,merge及viewSt...

  • 百货超市设计如何摆放商品?

    超市的布局优化是超市设计中的一个大问题,做好布局优化,超市设计就相当于成功了一半。那么在做超市设计布局优化时,需要...

  • 你会经常遇见的android性能优化方面知识总结

    项目源码 目录 布局优化 绘制优化 内存泄漏优化 ListView和Bitmap优化 布局优化 减少布局文件的层级...

  • Android性能优化汇总(逐步更新中...)

    Android中的性能优分为以下几个方面:布局优化、网络优化、安装包优化、内存优化。 一.布局优化 布局优化的本质...

  • Android性能优化1

    1.布局优化2.绘制优化3.响应速度优化和ANR日志分析 布局优化 布局优化思想就是,尽量减少布局文件的层级,以便...

网友评论

      本文标题:Android-布局优化问题

      本文链接:https://www.haomeiwen.com/subject/ccedjftx.html