`
zhubin215130
  • 浏览: 142318 次
  • 性别: 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性能优化视频百度云下载链接.rar

    虽然没有直接提供视频内容,但包含的"免费:Android性能优化视频百度云下载链接.txt"文件很可能提供了获取这些教学视频的链接。 Android性能优化涵盖多个方面,以下是其中的一些关键知识点: 1. **UI优化**:包括...

    Android ui开发类库示例源码.rar

    6. **面试准备**:学生或开发者在面试前可以参考这些源码来复习和扩展Android UI开发的知识点,包括但不限于性能优化、无障碍特性支持、多分辨率适配等,这些都能体现一个开发者的专业素养和技术深度。 7. **开发...

    android-ui.zip

    "android-ui.zip"这个压缩包包含了与Android UI开发相关的源码和资源,可能是为了教学或者参考使用。尽管由于文件数量众多,无法逐一验证其可用性,但这些内容对于理解Android UI的设计原则和实现方式仍然极具价值。...

    程矢AndroidUI之ListView.rar

    【Android UI设计与ListView详解】 在Android开发中,ListView是一个非常重要的组件,它用于展示大量...通过程矢老师的AndroidUI之ListView教程,开发者可以深入理解ListView的工作原理,并学会如何在实践中灵活运用。

    android高级编程附教学源码

    八、Android性能优化 包括内存优化、UI流畅性优化、网络请求优化等方面。通过分析内存泄漏、减少无用对象创建、合理使用缓存、优化图片加载等方式,提升应用的运行效率和用户体验。 九、Android源码解析 阅读和理解...

    Android开发与应用-教学案例

    12. **性能优化**:包括内存优化、绘制优化、启动速度优化等,是提升用户体验的关键。 通过"Android开发与应用-教学案例(1)"中的实例,开发者不仅可以学习到上述理论知识,还能亲手运行代码,观察实际效果,从而...

    Android开发视频教学源码第一季

    Android开发主要包括UI设计、功能实现、性能优化等多个方面。 "视频开发"是指通过编程和设计技巧创建交互式的多媒体内容。在Android平台上,可以利用Android Studio这一官方集成开发环境(IDE)来开发各种类型的...

    安卓Android源码——花姑娘之部分UI源码.zip

    通过分析源码,开发者可以学习到如何创建自定义视图,如何处理触摸事件,如何使用布局管理器,以及如何优化UI性能等方面的知识。同时,源码说明.txt将提供实践指南,指导开发者如何运用这些源码进行实际操作。对于...

    Android开发-PPT教学(全)

    18. **Android性能优化**:内存优化、渲染优化、电量优化等,提升应用性能。 19. **Android插件化与热修复**:对于大型应用,如何实现模块化开发,以及在不更新应用的情况下修复问题。 通过这个完整的Android开发...

    Android程序开发翻转课堂教学模式的设计与实践.pdf

    这门课程涵盖了Android的基础知识、Java编程、UI布局设计、程序结构、系统层次关系等内容,旨在培养学生的调试技术、程序通信、性能优化以及兼容性和安全性的意识。传统的教学方式往往以教师讲解为主,学生课后自我...

    Android开发视频教学下载地址

    Android开发涵盖了许多方面,包括编程语言、UI设计、应用架构、性能优化等,通过视频教学的方式,可以让学习更加直观和生动。 首先,Android开发的基础是Java或Kotlin语言。Java作为早期的Android开发语言,其语法...

    Android-UI控件16、17集源码

    老罗教程是知名的Android开发教学资源,涵盖了广泛的Android开发知识,包括UI控件的使用和实现。本压缩包文件包含了"Android-UI控件16、17集"的源码,这为我们提供了深入学习和理解Android UI控件设计和实现的宝贵...

    Android开发技术的教学与研究.pdf

    最后,我们还将涉及Android的测试和调试技术,包括单元测试、UI测试、Espresso、Mockito等工具的使用,以及如何利用Android Profiler进行性能优化。 参考文献部分将列出一系列权威书籍和在线资源,以便读者进一步...

    android开发视频教学源码

    6. **Android性能优化** - **内存管理**:理解内存泄漏,使用LeakCanary检测。 - **UI流畅度**:避免主线程阻塞,使用异步加载和图片库如Glide或Picasso。 - **资源优化**:合理使用资源,减少Apk大小。 7. **...

    Android应用源码花姑娘之部分UI源码.zip

    9. **性能优化**:高效的UI设计应避免过度绘制和不必要的视图更新,以提升用户体验。 通过分析这个压缩包中的源码,我们可以学习到如何构建Android UI,如何组织和管理布局,以及如何实现用户交互。如果"源码说明....

    Android开发视频教学源码(第一季)mars

    九、Android性能优化 Mars项目可能包含了性能优化的相关示例,如内存优化、渲染优化和网络优化等。理解并应用这些技巧,可以使你的应用运行更流畅,减少电量消耗。 十、持续学习 Android平台不断更新,新的API和...

    浙大android教学PPT+源码

    12. **性能优化**:讲解如何进行内存分析、性能调优,以及使用Lint工具检查代码质量。 13. **Android组件间通信**:介绍如何利用Intent、Fragment、Loader等组件进行有效沟通。 14. **第三方库的使用**:如...

    基于Android的网络教学视频应用

    这包括对内存管理、UI响应速度、数据同步策略等方面的优化,以减少应用的卡顿和耗电量。此外,遵循Android的设计规范,提供一致且直观的用户界面,也是提升应用品质的关键。 总之,基于Android的网络教学视频应用是...

    Android应用源码之高仿网易客户端UI(tabhost).zip

    5. **性能优化**: - 为了避免内存泄漏,记得在Activity的`onPause()`、`onDestroy()`等生命周期方法中解除TabHost的监听器。 - 使用懒加载策略,只有当用户切换到对应Tab时才加载相关数据,提高应用性能。 6. **...

    老罗android教学视频

    第七部分:性能优化与测试 在这一阶段,老罗会分享如何优化应用性能,包括内存管理、耗电优化和UI流畅度提升。此外,还会讲解单元测试和UI测试,确保应用的稳定性和可靠性。 第八部分:毕业项目 最后,通过一个...

Global site tag (gtag.js) - Google Analytics