Android UI 优化 一

Android UI 优化 1前边已经介绍了如何通过Layout优化实际上Window background drawable是由DecorView决定

Android UI 优化 1

前边已经介绍了如何通过Layout优化

实际上Window background drawable是由DecorView决定的。可以在Activity中调用getWindow().setBackgroundDrawable()方法来设置DecorView的background drawable。这里要特别注意这个方法是针对当前版本的Android平台,以后可能会因为版本的更新或不同的硬件设备而改变。(目前我们仅针对G1,如果在其它环境下测试需要小心验证)

如果目前正在使用android默认的标准Themes,那么在调用getWindow().setBackgroundDrawable()方法之后,这个background drawable将会影响你的activities。通过一个例子来直观的比较性能提升的效果:

Android UI 优化 一

通过上边这个截图可以看到保持activity的redraw
? ?? ???<activity android:name=".EggImageViewer"

? ?? ?? ?? ?? ?? ?android:label="@string/app_name"

? ?? ?? ?? ?? ?? ?android:theme="@style/Theme.NoBackground">

? ?? ?? ?? ?<intent-filter>

? ?? ?? ?? ?? ? <action android:name="android.intent.action.MAIN" />

? ?? ?? ?? ?? ? <category android:name="android.intent.category.LAUNCHER" />

? ?? ?? ?? ?</intent-filter>

? ?? ???</activity>


? ? </application>(也可以将Theme应用于<Application />标签中)完成上边的修改后,再来看看当前的FPS发生了什么变化:

Android UI 优化 一?.

FPS可以增大到60+,性能得到如此大的提升,是不是比较难以置信呢?由此可以明白当应用MapView或者WebView全屏显示的应用程序时,可以借用这个简单设置的方法,来提升整体的性能。
通过上边的例子可以直观的了解window background drawable的优化方法,并且根据比较可以很明显的看到设置前后的性能对比,希望这个简单的技巧可以给你的应用带来帮助。
另外基于这个技巧的应用,还可以延展出另外一个优化功能。对于某些需要全屏显示的应用程序,可以通过Theme定义Window’sbackground的图片,从而提高Activity的启动速度。毕竟无需建立一个ImageView作为自定义的背景,而重复叠加在Activitywindow background。
实现方法:
创建?res/drawable/background_res.xml
<bitmap
xmlns:android="http://schemas.android.com/apk/res/android"

android:src="@drawable/shelf_panel"
android:tileMode="repeat"
/>创建res/values/theme.xml
<resources>
<style
name="Theme.Shelves"
parent="android:Theme">
<item name="android:windowBackground">@drawable/background_res</item>
? ?? ???<item name="android:windowNoTitle">true</item>
</style>
</resources>往往一些看似简单的方法,却能起到非常大的作用。还希望大家在实践中能不断的挖掘出非常实用的技巧,然后与你周围的人共享你的发现,同时在大家共同的见证下可以完善你的想法!