因為突然想起有個同學之前做課程設計時,因為這個Theme使用的問題糾結良久,這裡就給大家小節一下,很簡單,(*^__^*) 嘻嘻……
Style(樣式)
什麼是樣式?為每個View重複地指定字型,顏色等屬性,無疑會增加大量的代碼,而且不利於我們後期項目的維護,所以就引入樣式(Style)學過web的都知道,我們可以通過css的選取器對html中的元素進行設定;而在UI組件中,我們可以通過style屬性來指定樣式。
Style的使用步驟:
樣式資源檔都放在
res/values目錄下,根項目,
;可包含多個
</strong>子項目,每個style可定義一個樣式;有如下兩個屬性,<strong>name:樣式名 parent:繼承父樣式,當然也可以覆蓋</strong><strong><br></strong><strong><br></strong>使用樣本:程式碼範例:<br><strong>①定義一個樣式檔案 my_style.xml</strong><pre class="code"><?xml version="1.0" encoding="utf-8"?><resources xmlns:android="http://schemas.android.com/apk/res/android"> <!-- 定義一個樣式指定文本的背景,字型大小 --> <style name="sty1"> <item name="android:background">#574867</item> <item name="android:textSize">50sp</item>
程式碼分析:定義了兩個樣式,第二個樣式繼承了第一個樣式的所有屬性,並且覆蓋了父類的背景屬性
②在另一個xml檔案中使用該樣式:
③運行:
Theme(主題)
什麼是主題?與前面的樣式類似,區別在於,主題是對整個應用中所有的Activity都起作用,或者對指定的Activity起作用定義格式通常是改變視窗的外觀格式,標題,邊框等
Theme的使用步驟:
根項目依舊為,使用</strong>來定義主題<br><br>使用執行個體:<br><br>:<br><br>這裡的話我們在主題中設定了沒有標題,覆蓋整個螢幕,以及設定了綠色的邊框設定了內邊距,以及填充了顏色(我們用了透明的顏色):在#xxxxxx的前面加上兩位元表示透明度<br>代碼執行個體:<br>①建立一個shapeDrawable.xml資源檔,用於<strong>繪製邊框</strong>border.xml:<br><pre class="code"><?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" > <!-- 設定邊框 --><stroke android:width="5dp" android:color="#86D04E"/> <!-- 設定內邊距 --><padding android:left="5dp"android:right="5dp"android:top="5dp"android:bottom="5dp"/><!-- 設定填充顏色 --><solid android:color="#00000000"/></shape></pre><br><br>②<strong>自訂佈景主題檔案</strong>,MyTheme<br><pre class="code"><?xml version="1.0" encoding="utf-8"?><resources> <style name="MyTheme"> <item name="android:windowNoTitle">true</item> <item name="android:windowFullscreen">true</item> <item name="android:windowFrame">@drawable/border</item> <item name="android:windowBackground">@drawable/back</item>
③調用該主題:調用方法有以下幾種:1)這隻在AndroidManifest.xml檔案中,為Activity指定主題,或者為整個應用設定主題,在元素添加android:theme = "MyTheme"即可2)在Java代碼中設定,如下:
package com.jay.example.themedemo;import android.os.Bundle;import android.app.Activity;public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setTheme(R.style.MyTheme);setContentView(R.layout.activity_main);}}
當然theme和style一樣可以繼承哦,這裡就不多解釋了...
源碼下載:style執行個體源碼:http://pan.baidu.com/s/1o64nEeItheme執行個體源碼:http://pan.baidu.com/s/1sjtYkWX