編輯:關於Android編程
主題theme與風格style是兩個很相近的概念,經常把它們混亂著稱呼。它們都定義在xml文件中,都使用
這好比一本書,書的一級標題要使用一號字體(字體要比別的字體大),二級標題要使用二號字體,以此類推。每一級標題使用的文字,就對應的一種style
。以後在寫書的時候,每使用某級的標題,就自然將文字顯示成了這一級應該的字體大小。
style
的定義res\values
目錄下,新建一個styles.xml
文件; 在新建的文件中,使用\
style
的繼承style
也可以從已有的style
繼承而來。
style
有兩種繼承方式,一種是顯式繼承,一種是隱式繼承。
parent=
屬性, 在子style中,定義需要擴展或者需要覆蓋的屬性,
style
,給新style
以.
為分隔符取名,例如"BtnStyle.ExBtnStyle
,被繼承的style
名稱要放在前面; 在子style
中,定義需要擴展或者需要覆蓋的屬性,
style
的使用style
有兩種使用方式。
直接針對具體的控件使用。
通過控件的style
屬性設置,
提供給theme
使用。
相關的內容請參考主題相關的章節。
style
可用的各種屬性style
可以設置的屬性很多,不同的控件有不同的屬性。具體有哪些屬性可以設置,可以參考控件的開發文檔,例如TextView
就有很多屬性,開發文檔都有列舉。
在對屬性值設置時,可以使用三種方式。
直接賦值:直接將要設定的值寫到\標簽當中,
- #FFFFFFFF
@
引用:將要設定的值通過@
引用,設置給\標簽,這種引用是將要設定的值換了一個名字,
- @color/text_color
?
引用:這種引用並不直接設置值,而是表明希望設置的值與“另一個屬性”的值相同;這“另一個屬性”定義在當前使用的主題當中(怎麼定義的會在主題相關的章節介紹),
- ?android:attr/textColorLink
/*******************************************************************/
* 版權聲明
* 本教程只在CSDN和安豆網發布,其他網站出現本教程均屬侵權。
/*******************************************************************/
theme
主題theme由具備各種風格style的組件組合起來的。如果說style關注的是具體某個控件,那麼theme就關注的是整體宏觀的方面,例如一個Activity或者一個應用整體。
theme
的定義theme
的定義與style
的定義完全一樣,一樣的標簽、一樣的寫法,
res\values
目錄下,新建一個themes.xml
文件(如果使用styles.xml
文件)也可以; 在新建的文件中,使用\
theme
的繼承theme
的繼承與style
的繼承完全一樣
theme
也可以從已有的theme
繼承而來。
theme
與style
一樣,有兩種繼承方式,一種是顯式繼承,一種是隱式繼承。
theme
時,使用parent=
屬性, 在子theme
中,定義需要擴展或者需要覆蓋的屬性,
theme
,給新theme
以.
為分隔符取名,例如"MyTheme.ExMyTheme
,被繼承的theme
名稱要放在前面; 在子theme
中,定義需要擴展或者需要覆蓋的屬性,
theme
的使用theme
常用在兩種地方,一個是應用,一個是Activity。
theme
配置文件中設置:在項目工程的AndroidManifest.xml
文件中,標簽的
android:theme
屬性,就用來指定整個應用的theme
android:theme="@style/MyTheme">
java源碼中設置:當應用被創建的時候,在Application
的onCreate()
函數中設置,
@Override
public void onCreate() {
super.onCreate();
this.setTheme(R.style.MyTheme);
}
配置文件中設置:在項目工程的AndroidManifest.xml
文件中,標簽的
android:theme
屬性,就用來指定該Activity的theme
android:theme="@style/MyTheme">
java源碼中設置:當應用被創建的時候,在Activity
的onCreate()
函數中設置,
@Override
public void onCreate() {
super.onCreate();
this.setTheme(R.style.MyTheme);
}
在對屬性值設置時,可以使用三種方式,前兩種已經在style
的相關章節介紹了,下面介紹?
引用。
這種引用並不直接設置值,而是表明希望設置的值與“另一個屬性”的值相同;這“另一個屬性”定義在當前使用的主題當中,例如,
創建自定義屬性myAttr
:在res\values
目錄下創建一個attrs.xml
文件,添加一個自定義屬性myAttr
,
定義一個theme
-MyTheme,設置myAttr
的值,
讓這個應用使用MyTheme
,作為應用的主題(當然也可以指定某個具體的Activity使用這個主題),
android:theme="@style/MyTheme">
定義一個style
-MyStyle,使用myAttr
來指定按鈕文字的顏色,
為布局文件中的一個Button
使用MyStyle
這樣,Button
顯示的文字顏色就是MyTheme
中myAttr
指定的顏色了。
theme
可用的各種屬性theme
可以設置的屬性很多,可以參考安卓的系統源碼themes.xml themes_device_defaults.xml themes_material.xml themes_holo.xml等,裡面使用了很多定義主題時用到的屬性。
不過裡面有的屬性是不對應用層開放的,在應用層使用的這些屬性的時候,如果遇到編譯錯誤,那麼多半就是這個原因。
系統主題的屬性很多,我們將選擇性的介紹一些重要屬性的用法和效果。
調色板屬性是主題最為重要的屬性,它決定了主題的配色。這些屬性包括,
android:colorPrimaryDark
: android:colorPrimary
: android:colorAccent
: android:colorEdgeEffect
: android:colorControlNormal
: android:colorControlActivated
: android:colorControlHighlight
: android:colorButtonNormal
: android:colorSwitchThumbNormal
:
如果一款應用設計了自己的配色方案,那麼修改這些屬性,會讓開發的效率大大提高。
例如colorAccent
就被很多控件利用?訪問
的方式使用到,一旦修改了它,很多控件的配色也就跟著變化了。例如,我們將該屬性的值設置成綠色,
其它屬性也對應著修改界面控件的某些顏色,由於它們都是和主題配色相關的屬性,所以稱它們為調色板屬性。
從安卓5.0起,Android SDK加入了對導航欄和狀態欄顏色的設定屬性,
導航欄:android:navigationBarColor
;
狀態欄:android:statusBarColor
;
安卓系統內置了很多種主題,它們各有各的特點,也具有很多共同的性質。
按照設計思路,分成三個大類:
Theme
:這是安卓系統剛誕生時使用的界面元素設計理念,具有暗色和亮色兩種風格;
Holo
:這是安卓系統3.0時開始使用的界面元素設計理念,具有暗色和亮色兩種風格;
Material
:這是安卓系統5.0時開始使用的界面元素設計理念,具有暗色和亮色兩種風格;
以上三個大類下面還有很多主題,可以通過Android Studio提供的preview
工具看到這些主題。
activity_main.xml
; 點擊預覽窗口
上紅色方框對應的圖標,會彈出一個Select Theme
窗口;
這裡分門別類的列舉出了所有可用的系統內置的主題。
最後需要特別的指出一個類型的主題:device default
。
它並不是除了theme
holo
material
之外的第四類,而是為了安卓系統在不同版本上的兼容性而采取的兼容方案。
可以簡單的認為,當使用這種主題的應用在安卓3.0~安卓5.0之間的版本上運行時,它使用的主題就是holo
;當使用這種主題的應用在安卓5.0以上的版本,它使用的主題就是material
。
本文實例講述了Android開發之簡單文件管理器實現方法。分享給大家供大家參考,具體如下:這裡運用Java I/O、ListActivity、Dialog、Bitmap等
本文實例講述了Android編程實現圖片背景漸變切換與圖層疊加效果。分享給大家供大家參考,具體如下:本例要實現的目的:1.圖片背景漸變的切換,例如漸變的從紅色切換成綠色。
概述作為一個android開發者,在開發應用時,隨著業務規模發展到一定程度,不斷地加入新功能、添加新的類庫,代碼在急劇的膨脹,相應的apk包的大小也急劇增加,
既然本節是學習如何使用多線程下載,那我們先要明白什麼是多線程下載,在搞明白什麼是多線程下載之前,需要先知道什麼是單線程下載。上圖就是說明了單線程下載的原來,因此單線程下載