Android应用性能优化之图形

布局优化

解析布局文件话费的时间取决于布局的复杂性:资源数据越大解析越慢,而更多的类也让布局实例化变慢

优化布局的原则都遵循一点:减少创建对象的数量

1. 使用相对布局代替线性布局或其他布局

2. 合并布局,如果自己布局的顶层元素是一个FrameLayout,可以使用<merge />标签来合并布局

<?xml version="1.0" encoding = "utf-8"?>

<merge xmlns:android="...">

<ImageView />

<TextView />

</merge>

3. 重用布局,使用 <include />

有两个目的:1. 多次使用相同的布局, 2. 布局有一个通用的组成部分,或有部分依赖于设备配置(例如, 屏幕方向纵置或横置)

<span style="font-size:18px;"><include android:id="@+id/new_id2" layout="@layout/my_layout2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/button1"/></span>

注意layout前面是没有android前缀的

当布局包含进来时,还可以覆盖一些布局的参数,根视图的id、布局的参数等等。

4. ViewStub

ViewStub是轻量级且不可见的视图,当需要时,在自己的布局中可以用它来推迟展开布局。

<ViewStub 
        android:id="@+id/my_view_stub"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout="@layout/my_layout2"/>

mViewStub = (ViewStub)this.findViewById(R.id.my_view_stub);
		mButton = (Button) this.findViewById(R.id.button1);
		mButton.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				mViewStub.inflate();
			}
		});

布局工具

布局优化工具,可以使用HierarchyViewer和layoutopt,这两个工具都位于SDK的tools目录下



OpenGL ES的优化

1.扩展,不是所有设备都支持相同的扩展,为特定的设备进行优化时,必须非常小心,因为一台设备上正常的程序,可能无法运行在另一台上。

2. 纹理压缩,使用某种压缩格式去压缩纹理

3. Mipmap,同一张图片256x256,同时也准备它的128x128、64x64、32x32、16x16、8x8、4x4、2x2、1x1图片,在遇到具体的渲染大小时,选择合适尺寸的图片。

4. 多apk,在应用同时支持多个纹理压缩格式的情况下,如果应用包大小超过限制,可以生成多个apk,每个apk对应一套纹理,由应用商店根据手机的类型展示对应的应用包给用户看。

5. 着色,减少着色器的复杂性

6. 减小场景复杂度

7. 消隐

8. 渲染模式,可以使用以下两个值之一调用setRenderMode()设置GLSurfaceView的渲染模式:

RENDERMODE_CONTINOUSLY

RENDERMODE_WHEN_DIRTY

当渲染模式设置为RENDERMODE_WHEN_DIRTY时,只有创建表面时,或当GLSurfaceView.requestRender被调用时才渲染场景

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值