2011年12月28日 星期三

Android - Theme 應用

Android提供了很多Theme可以應用,請看程式:
frameworks/base/core /res/res/values/themes.xml
有取消標題、狀態欄、背景為黑、背景為白…等一堆。

具體用方是在AndroidManifest.xml的activity裡加上
android:theme="@android:style/Theme.Translucent"

其 中一種叫就Theme.Translucent,官方說法為Default theme for translucent activities, that is windows that allow you to see through them to the windows behind.  This sets up the translucent flag and appropriate animations for your windows.

現在舉一種應用。假設Activity1 按下Button後來到 Activity2,而Activity2的畫面是屬於比較耗時的,例如ListView或是要載入圖檔。正常情況下在Activity1的畫面換成 Activity2前,會發現螢幕畫面會先是黑色(很快,也許不到1秒),才出現Activity2。如果把Activity2設為 Theme.Translucent就不會有這個現象,這樣給使用者的感覺會好一點。但其實這是一種假象,真實情況是(時間是假設的):

沒有設Theme.Translucent: 按下Button時:Activity1 待了1秒->  黑背景0.5秒 -> 出現Activity2
設Theme.Translucent: 按下Button時:Activity1 待了1秒->  透明背景0.5秒 -> 出現Activity2

但是有設Theme.Translucent的情況下,因為沒有黑背景,所以感覺上是由Activity1直接切換到Activity2。但其實使用者並沒有發現,其實按下Button後有停留在Activity1一下子。

另外如果使用Theme.Dialog.Alert之類而出現
Error: Resource is not public. (at 'theme' with value '@android:style/Theme.Dialog.Alert')的錯誤,因為在frameworks/base/core /res/res/values/public.xml找不到這個資料

只要加個*改成
  '@*android:style/Theme.Dialog.Alert'
就可以使用了。

沒有留言:

張貼留言