android用戶界面編程技巧——背景和圖像的開發技巧


前面給大家分享了listview中adapter的開發技巧,下面我繼續跟着2009年google開發大會上當分享的技巧給大家分享背景和圖像的開發技巧。

 

 

 

  • 視圖背景的優化

視圖的背景是根據視圖的大小自動調節的。不管圖像的尺寸是多大,如果圖像做為視圖的背景的時候,圖像會自動縮放來匹配填充視圖的大小。當視圖大小和背景圖片的尺寸不匹配的的時候,系統會自動的縮放圖片。這樣的自動調整如果多次甚至大量的出現在我們的應用中,那么勢必會造成程序加載到延時、效率降低。那么我們如何盡量的避免自動縮放呢?

一、提供的背景圖片正好和視圖的大小一致

我們在制作程序的時候選擇的背景圖片正好和視圖的大小一致,這樣可以避免背景圖標的自動縮放。

有些時候我們受到一些因素的制約可能做不到這一點。例如橫豎屏的差異、圖片來源不受我們控制等等原因。那么這個時候我們可以考慮將圖片進行預先縮放。

二、背景圖片預先縮放,減少縮放次數。

預先縮放圖片之后,在試圖每次顯示的時候就每次都去縮放圖片。而是采用我們預先縮放好的圖片,着可以提高效率。

originalImage = Bitmap.createScaledBitmap(
originalImage,
// 縮放圖像
view.getWidth(), // 視圖寬度
view.getHeight(), // 視圖高度
true ); // 線性過濾器

背景圖片采用預先縮放的技巧和自動縮放的frame刷新頻率比較如下:

左邊為自動縮放的刷新頻率是每秒25個frame,右邊是才有預先縮放技巧的刷新率是每秒50個frame 。效率提高了50%。

  • 窗口背景的優化

視圖有背景,每個窗口也是有背景的。每一Activity是一個窗口,每一個Activity都有不同得背景。界面的繪畫順序如下:窗口——跟視圖——子視圖。當我們的跟視圖已經覆蓋了整個窗口的時候 ,程序還是會畫一個透明的窗口的背景,而這個背景用戶是看不到的。我們就需要想辦法讓程序在這樣的情況下去掉窗口背景,節約畫窗口背景的時間提高效率。

刪除窗口背景的方法:

一、java代碼中

復制代碼
public void onCreate(Bundle icicle){
super .onCreate(icicle);
setContentView(R.layout.mainview);
// 刪除窗口背景
getWindow().setBackgroundDrawable( null );
...
復制代碼

二、在xml文件中

首先在res/values/style.xml 文件中定義如下:

復制代碼
< resources >
< style name = " NoBackgroundTheme " parent = " android:Theme " >
< item name = " android:windowBackground " > @ null item>
style>
resources>
 
 
復制代碼

然后在AndroidManifest.xml文件中 找到要去掉背景的activity  書寫代碼如下:

< activity android:name = " MyApplication "
android:theme
= " @style/NoBackgroundTheme " >
...
activity>

在xml中使用時首先要檢查一下時候有NoBackgroundTheme這個參數可用。

 

 

 

 

 

 

可以看到如果畫了透明的窗口背景的時候刷新頻率是每秒43個frame,如果刪除掉窗口背景刷新頻率是53個frame。

 

后面給大家分享跟新請求、視圖和布局、內存分配方面的開發技巧。

再次申明着一下這些開發技巧是2009年google開發者大會上官方的開發技巧。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM