當我們做項目到一定程度的時候,Android提供給我們的簡單的UI控件(雖然後期ADT插件更新中增加了不少)已經不能滿足我們的需要,一款成功的軟體不僅要功能強大,漂亮的界面同樣會吸引不少使用者!
這裡,我将總結一下Android提供給我們的兩個重要的資源:Theme 和 Style。
1.Theme(是針對窗體級别的,可以改變窗體樣式)
官方文檔
Themes are Android's mechanism for applying a consistent style to an app or activity. The style specifies the visual properties of the elements that make up your user interface, such as color, height, padding and font size. To promote greater cohesion between all apps on the platform, Android provides three system themes that you can choose from when building apps for Ice Cream Sandwich:
主題是Android的機制被應用一個相同風格的應用程式或Activity中。樣式指定了視覺屬性的元素裝飾你的使用者界面,如顔色、高度、填充和字型大小。促進更大的凝聚力在所有平台的應用程式,Android提供了三個系統的主題,您可以選擇在建構應用程式選擇不同的主題:
Holo Light
Holo Dark
Holo Light with dark action bars
官方圖:
1.1.使用
Android系統的themes.xml和style.xml(位于/base/core/res/res/values/)包含了很多系統定義好的style,建議在裡面挑個合适的,然後再繼承修改。以下屬性是在Themes中比較常見的,源自Android系統本身的themes.xml:
1
2
3
4
5
6
7
8
<code><</code><code>style</code>
<code> </code><code>name</code><code>=</code><code>"simple_dialog"</code> <code>parent</code><code>=</code><code>"@android:style/Theme.Dialog"</code><code>></code>
<code> </code><code><</code><code>item</code> <code>name</code><code>=</code><code>"android:windowFrame"</code><code>>@null</</code><code>item</code><code>></code><code><!-- Dialog的WindowFrame框為無 --></code>
<code> </code><code><</code><code>item</code> <code>name</code><code>=</code><code>"android:windowNoTitle"</code><code>>true</</code><code>item</code><code>></code>
<code> </code><code><</code><code>item</code> <code>name</code><code>=</code><code>"android:windowIsFloating"</code><code>>true</</code><code>item</code><code>></code><code><!-- 是否懸浮在activity上 --></code>
<code> </code><code><</code><code>item</code> <code>name</code><code>=</code><code>"android:windowIsTranslucent"</code><code>>true</</code><code>item</code><code>></code><code><!-- 是否半透明 --></code>
<code> </code><code><</code><code>item</code> <code>name</code><code>=</code><code>"android:backgroundDimEnabled"</code><code>>false</</code><code>item</code><code>></code><code><!-- 背景是否模糊 --></code>
<code> </code><code></</code><code>style</code><code>></code>
有人會問從哪裡學習這些主題?其實系統就自帶了很多,看下圖:
<a target="_blank" href="http://blog.51cto.com/attachment/201307/171730366.jpg"></a>
在AndroidManifest的Application中,點選Theme選項,系統資源裡就有相當多的主題供你選擇。
A.應用到Application
<code><application android:theme=</code><code>"@style/CustomTheme"</code><code>></code>
B.應用到Activity
<code><activity android:theme=</code><code>"@android:style/Theme.Dialog"</code><code>></code>
2.Style(是針對窗體元素級别的,改變指定控件或者Layout的樣式)
官方文檔:
A style is a collection of properties that specify the look and format for a View or window. A style can specify properties such as height, padding, font color, font size, background color, and much more. A style is defined in an XML resource that is separate from the XML that specifies the layout.
風格是一個集合的屬性用于指定具有一定外觀和格式的視圖或視窗。一個風格可以指定屬性如高度、填充、字型顔色、字型大小、背景色等等。一個樣式定義在XML資源,獨立于XML指定布局。
Styles in Android share a similar philosophy to cascading stylesheets in web design—they allow you to separate the design from the content.
風格在安卓中的份額就如同級聯樣式表在web設計中的設計,允許你将内容分割開來設計
2.1簡單使用
一個簡單地樣式
<code><</code><code>TextView</code>
<code> </code><code>android:layout_width</code><code>=</code><code>"fill_parent"</code>
<code> </code><code>android:layout_height</code><code>=</code><code>"wrap_content"</code>
<code> </code><code>android:textColor</code><code>=</code><code>"#00FF00"</code>
<code> </code><code>android:typeface</code><code>=</code><code>"monospace"</code>
<code> </code><code>android:text</code><code>=</code><code>"@string/hello"</code> <code>/></code>
可以在任何相同的地方被引用
<code><TextView</code>
<code> </code><code>style=</code><code>"@style/CodeFont"</code>
<code> </code><code>android:text=</code><code>"@string/hello"</code> <code>/></code>
2.2定義風格
首先可以在res/values/下建立一個xml,用于定義style(注意:根結點必須是<resources>)
9
<code><?</code><code>xml</code> <code>version</code><code>=</code><code>"1.0"</code> <code>encoding</code><code>=</code><code>"utf-8"</code><code>?></code>
<code><</code><code>resources</code><code>></code>
<code> </code><code><</code><code>style</code> <code>name</code><code>=</code><code>"CodeFont"</code> <code>parent</code><code>=</code><code>"@android:style/TextAppearance.Medium"</code><code>></code>
<code> </code><code><</code><code>item</code> <code>name</code><code>=</code><code>"android:layout_width"</code><code>>fill_parent</</code><code>item</code><code>></code>
<code> </code><code><</code><code>item</code> <code>name</code><code>=</code><code>"android:layout_height"</code><code>>wrap_content</</code><code>item</code><code>></code>
<code> </code><code><</code><code>item</code> <code>name</code><code>=</code><code>"android:textColor"</code><code>>#00FF00</</code><code>item</code><code>></code>
<code> </code><code><</code><code>item</code> <code>name</code><code>=</code><code>"android:typeface"</code><code>>monospace</</code><code>item</code><code>></code>
<code> </code><code></</code><code>style</code><code>></code>
<code></</code><code>resources</code><code>></code>
這裡我們可以看到,該style的名稱為CodeFont,parent後面是父類的style,(當然,我們也可以不用繼承父類style),接下來每一個item定義一個屬性。定義屬性的最好方法就是在api文檔裡找到這個view的xml屬性,比如在EditText中有InputType這個屬性,那麼在你的style裡面你就可以來定義它。
ok! 就是這些了!
<b> 本文轉自zhf651555765 51CTO部落格,原文連結:http://blog.51cto.com/smallwoniu/1251507</b><b>,如需轉載請自行聯系原作者</b>