前面給大家分享了listview中adapter的開發技巧,下面我繼續跟着2009年google開發大會上當分享的技巧給大家分享背景和圖像的開發技巧。
-
視圖背景的優化
視圖的背景是根據視圖的大小自動調節的。不管圖像的尺寸是多大,如果圖像做為視圖的背景的時候,圖像會自動縮放來匹配填充視圖的大小。當視圖大小和背景圖片的尺寸不匹配的的時候,系統會自動的縮放圖片。這樣的自動調整如果多次甚至大量的出現在我們的應用中,那么勢必會造成程序加載到延時、效率降低。那么我們如何盡量的避免自動縮放呢?
一、提供的背景圖片正好和視圖的大小一致
我們在制作程序的時候選擇的背景圖片正好和視圖的大小一致,這樣可以避免背景圖標的自動縮放。
有些時候我們受到一些因素的制約可能做不到這一點。例如橫豎屏的差異、圖片來源不受我們控制等等原因。那么這個時候我們可以考慮將圖片進行預先縮放。
二、背景圖片預先縮放,減少縮放次數。
預先縮放圖片之后,在試圖每次顯示的時候就每次都去縮放圖片。而是采用我們預先縮放好的圖片,着可以提高效率。
originalImage, // 縮放圖像
view.getWidth(), // 視圖寬度
view.getHeight(), // 視圖高度
true ); // 線性過濾器
背景圖片采用預先縮放的技巧和自動縮放的frame刷新頻率比較如下:
左邊為自動縮放的刷新頻率是每秒25個frame,右邊是才有預先縮放技巧的刷新率是每秒50個frame 。效率提高了50%。
- 窗口背景的優化
視圖有背景,每個窗口也是有背景的。每一Activity是一個窗口,每一個Activity都有不同得背景。界面的繪畫順序如下:窗口——跟視圖——子視圖。當我們的跟視圖已經覆蓋了整個窗口的時候 ,程序還是會畫一個透明的窗口的背景,而這個背景用戶是看不到的。我們就需要想辦法讓程序在這樣的情況下去掉窗口背景,節約畫窗口背景的時間提高效率。
刪除窗口背景的方法:
一、java代碼中
super .onCreate(icicle);
setContentView(R.layout.mainview);
// 刪除窗口背景
getWindow().setBackgroundDrawable( null );
...
}
二、在xml文件中
首先在res/values/style.xml 文件中定義如下:
< style name = " NoBackgroundTheme " parent = " android:Theme " >
< item name = " android:windowBackground " > @ null item>
style>
resources>
然后在AndroidManifest.xml文件中 找到要去掉背景的activity 書寫代碼如下:
android:theme = " @style/NoBackgroundTheme " >
...
activity>
在xml中使用時首先要檢查一下時候有NoBackgroundTheme這個參數可用。
可以看到如果畫了透明的窗口背景的時候刷新頻率是每秒43個frame,如果刪除掉窗口背景刷新頻率是53個frame。
后面給大家分享跟新請求、視圖和布局、內存分配方面的開發技巧。
再次申明着一下這些開發技巧是2009年google開發者大會上官方的開發技巧。