`
zhubin215130
  • 浏览: 140184 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

【转】Android UI 性能優化教學

阅读更多

基於如何在合理利用資源的前提下,更進一步的提升視覺表現力。這裡所提到的視覺表現力並不是指直觀所看到的視覺效果,而是性能的提升。

這裡將包含兩個主要內容:

Drawing(繪製的刷新率)
Startup Time (啟動Activities的時間)

以上兩個性能的優化都將依賴於 Window backGround drawable功能設置。

通過Window backGround標識會對部分人產生一定的誤解,其實每次通過setContentView()來顯示預先配置的界面時,Android僅僅是將你所創建的Views添加到Activiy的Window中。而且這個Window並不僅僅包含你所創建的Views,還包括Android為 Activity預置的元素。通過Emulator運行你的程序,然後通過Hierarchy Viewer查看當前程序UI架構Root節點 DecorView,這個是Android額外添加的最頂層的節點。

實際上Window background drawable是由DecorView決定的。可以在Activity中調用getWindow().setBackgroundDrawable()方法來設置DecorView的background drawable。這裡要特別注意這個方法是針對當前版本的Android平台,以後可能會因為版本的更新或不同的硬件設備而改變。(目前我們僅針對G1,如果在其它環境下測試需要小心驗證)

如果目前正在使用android默認的標準Themes,那麼在調用getWindow().setBackgroundDrawable()方法之後,這個background drawable將會影響你的activities。通過一個例子來直觀的比較性能提升的效果:

可以看到保持activity的redraw模式下,當前的FPS為39幀 /每秒,大概相當於25毫秒/每幀。由於這個例子中將ImageView設為全屏顯示,並且完全覆蓋了activity的背景,所以background drawable佔用了不必要的計算資源。下邊創建一個新的Theme並且應用在Activity中,創建res/values/theme.xml, XML的內容:

  1. <resources>    <style name="Theme.NoBackground" parent="android:Theme">        <item name="android:windowBackground">@null</item>    </style></resources>
複製代碼

同時也需要修改AndroidMainfest.xml文件,將上邊所創建的Theme應用到Activity中,格式為:

  1. <application android:icon="@drawable/icon" android:label="@string/app_name">        
  2. <activity android:name=".EggImageViewer"                  android:label="@string/app_name"                  android:theme="@style/Theme.NoBackground">            
  3. <intent-filter>               
  4.  <action android:name="android.intent.action.MAIN" />             
  5.    <category android:name="android.intent.category.LAUNCHER" />       
  6.      </intent-filter>     
  7.    </activity>   
  8.  </application>
     
複製代碼

(也可以將Theme應用於<Application />標籤中)完成上邊的修改後,再來看看當前的FPS發生了什麼變化:

FPS可以增大到60+,性能得到如此大的提升,是不是比較難以置信呢?由此可以明白當應用MapView或者WebView全屏顯示的應用程序時,可以借用這個簡單設置的方法,來提升整體的性能。

通過上邊的例子可以直觀的瞭解window background drawable的優化方法,並且根據比較可以很明顯的看到設置前後的性能對比,希望這個簡單的技巧可以給你的應用帶來幫助。

另外基於這個技巧的應用,還可以延展出另外一個優化功能。對於某些需要全屏顯示的應用程序,可以通過Theme定義Window』s background的圖片,從而提高Activity的啟動速度。畢竟無需建立一個ImageView作為自定義的背景,而重複疊加在Activity window background。

實現方法:

創建 res/drawable/background_res.xml

  1. <bitmap xmlns:android="http://schemas.android.com/apk/res/android"    android:src="@drawable/shelf_panel"    android:tileMode="repeat" />
複製代碼

創建res/values/theme.xml

  1. <resources>    <style name="Theme.Shelves" parent="android:Theme">        <item name="android:windowBackground">@drawable/background_res</item>        <item name="android:windowNoTitle">true</item>    </style></resources>
複製代碼

往往一些看似簡單的方法,卻能起到非常大的作用。還希望大家在實踐中能不斷的挖掘出非常實用的技巧,然後與你周圍的人共享你的發現,同時在大家共同的見證下可以完善你的想法!

分享到:
评论

相关推荐

    android 性能优化-Systrace分析UI性能demo

    android 性能优化-Systrace分析UI性能android 性能优化-Systrace分析UI性能

    Android UI 优化.ppt

    Android UI 优化.ppt

    Android UI 优化之merge标签的使用

    Android UI优化之merge标签的使用,主要介绍merge方法使用的注意事项及方法实现。

    Android 性能优化之UI优化源码

    Android 性能优化之UI优化源码 配合博客参照 https://www.cnblogs.com/Oztaking/p/9350295.html

    《Android应用程序开发教程(第2版)》教学课件02Android UI设计.pdf

    《Android应用程序开发教程(第2版)》教学课件02Android UI设计.pdf《Android应用程序开发教程(第2版)》教学课件02Android UI设计.pdf《Android应用程序开发教程(第2版)》教学课件02Android UI设计.pdf《Android应用...

    android ui旋转 控制系统旋转

    支持全志平台的ui旋转,里面有全志平台的系统签名,通过反射 IWindowManager wm = WindowManagerGlobal.getWindowManagerService(); wm.freezeRotation(value); 实现ui旋转,其他平台需要系统签名后使用!切记必须要...

    Android UI基础教程 高清带标签pdf

    本书不仅会告诉读者创建灵活布局的最佳方法,还会帮助开发者优化已有的UI界面,从而使他们的应用运行更加流畅,拥有最佳性能。学习完本书,读者可以自己创建一个成功的Android应用的UI界面。 《AndroidUI基础教程》...

    Pro Android UI (Android UI设计开发高级教材)

    Android UI 界面设计 移动APP

    《Android UI设计》PDF

    《Android UI设计》面向创建移动应用的产品经理、设计师和开发者,系统讲解了从事Android UI设计必须要掌握的Android平台的主要技术和特性,全面总结了Android UI的设计原理、设计理念和设计模式,并通过一个综合的...

    Android UI设计技巧

    Android UI设计技巧 Android UI设计技巧Android UI设计技巧

    Android UI控件组件库集合【源码】

    Android UI控件组件库集合【源码】 热门标签,流式布局,刮刮乐控件,侧滑控件,循环幻灯片控件,自动换行控件,下拉列表,圆角进度控件等常用UI控件组件合集

    Android UI开发专题

    Android UI开发专题 Android UI开发专题(一) 之界面设计 近期很多网友对Android用户界面的设计表示很感兴趣,对于Android UI开发自绘控件和游戏制作而言掌握好绘图基础是必不可少的。本次专题分10节来讲述,有关...

    ANDROID UI设计工具

    ANDROID UI设计工具,方便ANDROID UI设计

    android UI界面开发图片

    android UI界面开发图片,数量巨大,而且经典,觉得值得收藏 android UI界面开发图片,数量巨大,而且经典,觉得值得收藏

    Android核心性能优化汇总

    Android核心性能优化汇总: 一、UI优化 二、启动优化 三、崩溃优化 四、卡顿优化 五、安全性优化 六、弱网优化 七、APP深度优化 八、开发焦点问题优化 九、编程效率优化

    Android UI设计心得

    Android UI设计心得。包括线性布局(LinearLayout)、相对布局(RelativeLayout)、表格布局(TableLayout)、框架布局(FrameLayout)、绝对布局(AbsoluteLayout)。其中AbsoluteLayout在Android SDK2.3.3之后已经...

    android UI开发推荐颜色

    android UI开发推荐颜色 android UI开发推荐颜色 android UI开发推荐颜色

    《精通Android UI设计》

    本书详细阐述了与 Android UI开发相关的基本解决方案,主要包括 Android UI设计工具, Android UI布局, Android UI Widgets,Android UI选项菜单, Android UI本地菜单, Android UI操作栏, Android UI设计考虑, ...

    android UI 特效集合

    android UI 特效集合

Global site tag (gtag.js) - Google Analytics