Android应用开发中的风格和主题(style,themes)
?越來越多互聯網企業都在Android平臺上部署其客戶端,為了提升用戶體驗,這些客戶端都做得布局合理而且美觀.......Android的Style設計就是提升用戶體驗的關鍵之一。Android上的Style分為了兩個方面:
? ? ?Android系統的themes.xml和style.xml(位于\base\core\res\res\values\)包含了很多系統定義好的style,建議在里面挑個合適的,然后再繼承修改。
? ? ? ?以下屬性是在Themes中比較常見的,源自Android系統本身的themes.xml:
<!-- Window attributes --><item name="windowBackground">@android:drawable/screen_background_dark</item><item name="windowFrame">@null</item><item name="windowNoTitle">false</item><item name="windowFullscreen">false</item><item name="windowIsFloating">false</item><item name="windowContentOverlay">@android:drawable/title_bar_shadow</item><item name="windowTitleStyle">@android:style/WindowTitle</item><item name="windowTitleSize">25dip</item><item name="windowTitleBackgroundStyle">@android:style/WindowTitleBackground</item><item name="android:windowAnimationStyle">@android:style/Animation.Activity</item>各種樣式具體使用可看:http://henzil.easymorse.com/?p=364??android Theme使用總結?? ? ?
? ? ? 至于控件的Style設計就范圍大多了,看看Eclipse的Android控件屬性編輯器[Properties]就大概知道有哪些條目,而Android內置的style.xml也只是定義每個控件的默認樣式而已....不過控件的style不建議大改,耐看的style更能讓用戶長時間使用軟件。另外,控件的Style在很多情況下都用到9.png,學習9.png就必須到\base\core\res\res\drawable-hdpi里面看看,里面有很多系統內置的9.png。
style和theme都是資源。你可以用android提供的一些默認的style和theme資源,你也可以自定義你自己的style和theme資源。 如何新建自定義的style和theme: 1.在res/values 目錄下新建一個名叫style.xml的文件。增加一個<resources>根節點。 2.對每一個style和theme,給<style>element增加一個全局唯一的名字,也可以選擇增加一個父類屬性。在后邊我們可以用這個名字來應用風格,而父類 ? 屬性標識了當前風格是繼承于哪個風格。 3.在<style>元素內部,申明一個或者多個<item>,每一個<item>定義了一個名字屬性,并且在元素內部定義了這個風格的值。 4.你可以應用在其他XML定義的資源。 Style: 下邊是一個申明風格的實例: <?xml version="1.0" encoding="utf-8"?> <resources> <style name="SpecialText" parent="@style/Text"> <item name="android:textSize">18sp</item> <item name="android:textColor">#008</item> </style> </resources> 如上所示,你可以用<item>元素來為你的風格定義一組格式化的值。在Item當中的名字的屬性可以是一個字符串,一個16進制數所表示的顏色或者是其他資源的引用。 注意在<style>元素中的父類屬性。這個屬性讓你可以能夠定義一個資源,當前風格可以從這個資源當中繼承到值。你可以從任何包 含這個風格的資源當中繼承此風格。通常上,你的資源應該一直直接或者間接地繼承Android的標準風格資源。 這樣的話,你就只需要定義你想改變的值。 在這個例子當中的EditText元素,演示了如何引用一個XML布局文件當中定義的風格: <EditText id="@+id/text1" style="@style/SpecialText" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Hello, World!" /> 現在這個EditText組件的所表現出來的風格就為我們在上邊的XML文件中所定義的那樣。Theme:
就像style一樣,主題依然在<style>元素里邊申明,也是以同樣的方式引用。 不同的是你通過在Android Manifest中定義的<application>和<activity>元素將主題添加到整個程序或者某個 Activity,但是主題是不能應用在某一個單獨的View里。 下邊是申明主題的一個例子: <?xml version="1.0" encoding="utf-8"?> <resources> <style name="CustomTheme"> <item name="android:windowNoTitle">true</item> <item name="windowFrame">@drawable/screen_frame</item> <item name="windowBackground">@drawable/screen_background_white</item> <item name="panelForegroundColor">#FF000000</item> <item name="panelBackgroundColor">#FFFFFFFF</item> <item name="panelTextColor">?panelForegroundColor</item> <item name="panelTextSize">14</item> <item name="menuItemTextColor">?panelTextColor</item> <item name="menuItemTextSize">?panelTextSize</item> </style> </resources> 注意我們用了@符號和?符號來應用資源。@符號表明了我們應用的資源是前邊定義過的(或者在前一個項目中或者在Android 框架中)。問號?表明了我們引用的資源的值在當前的主題當中定義過。通過引用在<item>里邊定義的名字可以做到(panelTextColor?用的顏色和panelForegroundColor中定義的一樣)。這中技巧只能用在XML資源當中。 設置主題(theme):1.在manifest當中設置主題
1.為了在成用當中所有的Activity當中使用主題,你可以打開AndroidManifest.xml 文件,編輯<application>標簽,讓其包含android:theme屬性,值是一個主題的名字,如下: <application android:theme="@style/CustomTheme"> 2.如果你只是想讓你程序當中的某個Activity擁有這個主題,那么你可以編輯<activity>標簽。 Android中提供了幾種內置的資源,有好幾種主題你可以切換而不用自己寫。比如你可以用對話框主題來讓你的Activity看起來像一個對話框。在manifest中定義如下:<activity android:theme="@android:style/Theme.Dialog">(看前面鏈接有很多theme) 補充: 如果你喜歡一個主題,但是想做一些輕微的改變,你只需要將這個主題添加為父主題。比如我們修改Theme.Dialog主題。我們來繼承Theme.Dialog來生成一個新的主題。 <style name="CustomDialogTheme" parent="@android:style/Theme.Dialog"> 繼承了Theme.Dialog后,我們可以按照我們的要求來調整主題。我們可以修改在Theme.Dialog中定義的每個item元素的值,然后我們在Android Manifest 文件中使用CustomDialogTheme 而不是?Theme.Dialog 。2.在程序當中設置主題
如果需要的話,你可 以在Activity當中通過使用方法setTheme()來加載一個主題。注意,如果你這么做的話,你應該初始化任何View之前設置主題。比如,在調 用setContentView(View) 和inflate(int, ViewGroup)方法前。這保證系統將當前主題應用在所有的UI界面。例子如下: protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ... setTheme(android.R.style.Theme_Light); setContentView(R.layout.linear_layout_3); } 如果你打算在程序代碼中來加載主界面的主題,那么需要注意主題當中不能包括任何系統啟動這個Activity所使用的動畫,這些動畫將在程序啟動前顯示。在很多情況下,如果你想將主題應用到你的主界面,在XML中定義似乎是一個更好的辦法。===============================================================================
案例可看:
1.http://wang-peng1.iteye.com/blog/561292?android之buttonBar的設計--style的引用
2.http://mycoding.iteye.com/blog/966726?Android 用style簡化layout布局文件
http://blog.csdn.net/fzh0803/article/details/6279995
?
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的Android应用开发中的风格和主题(style,themes)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【优秀作业】人工鱼群优化算法
- 下一篇: 《java设计模式》之责任链模式