Android 布局Layout 性能优化<8>

本文探讨了Android布局性能优化的话题,虽然之前有所提及,但专家提供了新的建议。由于Hierarchy Viewer对普通开发者不再可用,我们将通过新建Android工程来展示布局优化的重要性。在工程中,虽然不同布局实现方式在视觉上效果相同,但在性能上存在差异,尤其是在处理大量数据或刷新时,这种差别会更加显著。
摘要由CSDN通过智能技术生成

这个是个老话题了,前面有一些提及过了,专家的建议如下:

提升布局性能的关键点是尽量保持布局层级的扁平化,避免出现重复的嵌套布局。例如下面的例子,有2行显示相同内容的视图,分别用两种不同的写法来实现,他们有着不同的层级

当然还的知道为什么需要这样调整:

Android需要把XML布局文件转换成GPU能够识别并绘制的对象。这个操作是在DisplayList的帮助下完成的。DisplayList持有所有将要交给GPU绘制到屏幕上的数据信息。

在某个View第一次需要被渲染时,Display List会因此被创建,当这个View要显示到屏幕上时,我们会执行GPU的绘制指令来进行渲染
请注意:任何时候View中的绘制内容发生变化时,都会需要重新创建DisplayList,渲染DisplayList,更新到屏幕上等一系列操作。这个流程的表现性能取决于你的View的复杂程度,View的状态变化以及渲染管道的执行性能。举个例子,假设某个Button的大小需要增大到目前的两倍,在增大Button大小之前,需要通过父View重新计算并摆放其他子View的位置。修改View的大小会触发整个HierarcyView的重新计算大小的操作。如果是修改View的位置则会触发HierarchView重新计算其他View的位置。如果布局很复杂,这就会很容易导致严重的性能问题。


现在android 设备的Hierarchy Viewer这个东东对一般的开发者好像已经不能够使用了,不过手机产商那些开发者是没有问题的.


废话不多说,新建Android 工程.


<1> : 新建Android 工程如下:


<2> 具体程序如下:

DurianMainActivity.java

package org.durian.durianlayoutperfect;

import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ListView;

import org.durian.durianlayoutperfect.adapter.DurianBaseAdapter;

public class DurianMainActivity extends ActionBarActivity {

    private ListView listView;

    private DurianBaseAdapter mDurianBaseAdapter;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.durian_main);

        listView=(ListView)findViewById(android.R.id.list);

        mDurianBaseAdapter=new DurianBaseAdapter(this);
        listView.setAdapter(mDurianBaseAdapter);

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().in
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值