一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

Android風(fēng)格與主題

 shaobin0604@163.com 2010-05-17

Android xml風(fēng)格和主題文件的編寫,是涉及到整個(gè)程序界面美觀的因素之一。較好的應(yīng)用風(fēng)格和主題,可以實(shí)現(xiàn)美觀而統(tǒng)一的界面,這就猶如Web開發(fā)中的CSS。

Styles和Themes都是資源,存放在res/values文件夾下。

什么是Style,什么是Theme?

  • Style:是一個(gè)包含一種或者多種格式化屬性的集合,我們可以將其用為一個(gè)單位用在布局XML單個(gè)元素當(dāng)中。比如,我們可以定義一種風(fēng)格來(lái)定義文本的字 號(hào)大小和顏色,然后將其用在View元素的一個(gè)特定的實(shí)例。
  • Theme:是一個(gè)包含一種或者多種格式化屬性的集合,我們可以將其為一個(gè)單位用在應(yīng)用中所有的Activity當(dāng)中或者應(yīng)用中的某個(gè)Activity當(dāng) 中。比如,我們可以定義一個(gè)Theme,它為window frame和panel 的前景和背景定義了一組顏色,并為菜單定義可文字的大小和顏色屬性,可以將這個(gè)Theme應(yīng)用在你程序當(dāng)中所有的Activity里。

Style和Theme的XML文件結(jié)構(gòu)

對(duì)每一個(gè)Styles和Themes,給<style>元素增加一個(gè)全局唯一的名字,也可以選擇增加一個(gè) 父類屬性。在后邊我們可以用這個(gè)名字來(lái)應(yīng)用風(fēng)格,而父類屬性標(biāo)識(shí)了當(dāng)前風(fēng)格是繼承于哪個(gè)風(fēng)格。在<style>元素內(nèi)部,申明一個(gè)或者多個(gè)<item>,每 一個(gè)<item>定義了一個(gè)名字屬性,并且在元素內(nèi)部定義了這個(gè)風(fēng)格的值。

風(fēng)格

1.在res/values 目錄下新建一個(gè)名叫style.xml的文件。

2.對(duì)每一個(gè)風(fēng)格和主題,給<style>element增加一個(gè)全局唯一的名字,也可以選擇增加一個(gè)父類屬性。在后邊我們可以用這個(gè)名字來(lái) 應(yīng)用風(fēng)格,而父類屬性標(biāo)識(shí)了當(dāng)前風(fēng)格是繼承于哪個(gè)風(fēng)格。

3.在<style>元素內(nèi)部,申明一個(gè)或者多個(gè)<item>,每一個(gè)<item>定義了一個(gè)名字屬性,并且在元素 內(nèi)部定義了這個(gè)風(fēng)格的值。

4.你可以應(yīng)用在其他XML定義的資源。
下面SDK提供的Style的例子:(SDK提供的程序會(huì)有style/Text找不到的錯(cuò)誤,目前還不知道怎么解決)

<?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>

上面的樣式可以用在單個(gè)view中如:

<EditText id=”@+id/text1″
style=”@style/mytext
android:layout_width=”fill_parent”
android:layout_height=”wrap_content”
android:text=”Hello, World!” />

現(xiàn)在這個(gè)EditText組件的所表現(xiàn)出來(lái)的風(fēng)格就為我們?cè)谏线叺腦ML文件中所定義的那樣。

編寫一個(gè)簡(jiǎn)單的Style:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="SpecialText" >
<item name="android:textSize">18sp</item>
<item name="android:textColor">#EC9237</item>
</style>
<style name="SpecialText2" >
<item name="android:textSize">26sp</item>
<item name="android:textColor">#FF7F7C</item>
<item name="android:fromAlpha">0.0</item>
<item name="android:toAlpha">0.0</item>
</style>
</resources>

應(yīng)用的編寫:

<TextView
style="@style/SpecialText2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
<EditText android:text="@+id/EditText01"
style="@style/SpecialText"
android:id="@+id/EditText01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"></EditText>

最終實(shí)現(xiàn)的界面為:

image

當(dāng)然,Android也有很多預(yù)定義的主題:

image

主題

就像Style一樣,Theme依然在<style>元素里邊申明,也是以同樣的方式引用。不同的是通過(guò)在Android Manifest中定義的<application>和<activity>元素將主題添加到整個(gè)程序或者某個(gè) Activity,但是主題是不能應(yīng)用在某一個(gè)單獨(dú)的View里。

下邊是SDK中主題的一個(gè)例子:(SDK提供的程序會(huì)有Error:no resource found that matches the given name: panelForegroundColor等錯(cuò)誤,目前還不知道怎么解決這些錯(cuò)誤)

<?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>

注意我們用了@符號(hào)和?符號(hào)來(lái)應(yīng)用資源。@符號(hào)表明了我們應(yīng)用的資源是前邊定義過(guò)的(或者在前一個(gè)項(xiàng)目中或者在Android 框架中)。問(wèn)號(hào)?表明了我們引用的資源的值在當(dāng)前的主題當(dāng)中定義過(guò)。通過(guò)引用在<item>里邊定義的名字可以做到(panelTextColor 用 的顏色和panelForegroundColor中定義的一樣)。這中技巧只能用在XML資源當(dāng)中

在程序中使用主題的方法:

protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setTheme(android.R.style.Theme_Light);    
      setContentView(R.layout.linear_layout_3);
}

在mainfest.xml中應(yīng)用主題:
為了在成用當(dāng)中所有的Activity當(dāng)中使用主題,你可以打開AndroidManifest.xml 文件,編輯<application>標(biāo)簽,讓其包含android:theme屬性,值是一個(gè)主題的名字,如下:
<application android:theme=”@style/CustomTheme”>
如果你只是想讓你程序當(dāng)中的某個(gè)Activity擁有這個(gè)主題,那么你可以修改<activity>標(biāo)簽。

編寫的簡(jiǎn)單的一個(gè)Theme:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="CustomTheme" parent="android:Theme.Black">
<item name="android:windowNoTitle">true</item>
<item name="android:testSize">14sp</item>
<item name="android:textColor">#FFFF0000</item>
</style>
</resources>

Android中提供了幾種內(nèi)置的資源,有好幾種主題你可以切換而不用自己寫。比如你可以用對(duì)話框主題來(lái)讓你的Activity看起來(lái)像一個(gè)對(duì)話框。在manifest中定義如下:
<activity android:theme=”@android:style/Theme.Dialog”>
如果你喜歡一個(gè)主題,但是想做一些輕微的改變,你只需要將這個(gè)主題添加為父主題。比如我們修改Theme.Dialog主題。我們來(lái)繼承Theme.Dialog來(lái)生成一個(gè)新的主題。
<style name=”CustomDialogTheme” parent=”@android:style/Theme.Dialog”>
繼承了Theme.Dialog后,我們可以按照我們的要求來(lái)調(diào)整主題。我們可以修改在Theme.Dialog中定義的每個(gè)item元素的值,然后我們?cè)贏ndroid Manifest 文件中使用CustomDialogTheme 而不是 Theme.Dialog 。

一下列出了其他預(yù)定義的主題:

Android-Theme

 


 

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    国产精品福利一级久久| 欧美一级特黄特色大色大片| 日韩性生活视频免费在线观看 | 色狠狠一区二区三区香蕉蜜桃| 亚洲中文在线中文字幕91| 91久久精品国产一区蜜臀| 午夜直播免费福利平台| 亚洲中文字幕人妻av| 日韩欧美国产亚洲一区| 色婷婷成人精品综合一区| 久久亚洲国产视频三级黄| 日韩人妻一区二区欧美| 久久精品偷拍视频观看| 国产毛片不卡视频在线| 2019年国产最新视频| 夫妻激情视频一区二区三区| 高清一区二区三区四区五区| 久久一区内射污污内射亚洲| 男人的天堂的视频东京热| 免费一区二区三区少妇| 日韩欧美中文字幕人妻| 日韩av生活片一区二区三区| 福利一区二区视频在线| 国产免费人成视频尤物| 亚洲精品有码中文字幕在线观看| 日本精品最新字幕视频播放 | 日本高清视频在线观看不卡| 久久一区内射污污内射亚洲| 国产一区二区三区不卡| 成人国产激情在线视频| 99久久国产精品成人观看| 加勒比人妻精品一区二区| 国产欧美性成人精品午夜| 婷婷开心五月亚洲综合| 欧美日韩视频中文字幕| 中文字幕av诱惑一区二区| 亚洲成人免费天堂诱惑| 欧美日韩乱一区二区三区| 字幕日本欧美一区二区| 五月激情综合在线视频| 亚洲欧美黑人一区二区|