Android開(kāi)發(fā) -- UI界面之threme和style
Android系統(tǒng)的themes.xml和style.xml(位于\base\core\res\res\values\)包含了很多系統(tǒng)定義好的style,建議在里面挑個(gè)合適的,然后再繼承修改。
一、threme android中的主題一般用于窗體級(jí)別的,用于改變窗體樣式
1、Theme:
它的意思為默認(rèn)狀態(tài),即如果theme這里不填任何屬性的時(shí)候,默認(rèn)為Theme
1.1、Theme_NoDisplay
它的意思為任何都不顯示。比較適用于只是運(yùn)行了activity,但未顯示任何東西。
1.2、Theme_NoTitleBar
意思為:背景主題的沒(méi)有標(biāo)題欄的樣式,默認(rèn)如果沒(méi)有設(shè)置的話,顯示黑背景
1.3、Theme_NoTitleBar_Fullscreen
意思為:背景主題的沒(méi)有標(biāo)題欄且全屏的樣式,默認(rèn)為黑背景
2、Theme_Black:
它的意思為默認(rèn)狀態(tài)下黑背景。
2.1、Theme_Black_NoTitleBar:
意思為:黑背景主題的沒(méi)有標(biāo)題欄的樣式
2.2、Theme_Black_NoTitleBar_Fullscreen
意思為:黑背景主題的沒(méi)有標(biāo)題欄且全屏的樣式
3、Theme_Light
意思為:默認(rèn)狀態(tài)下亮背景,與上述黑背景Theme_Black相反。
3.1、Theme_Light_NoTitleBar
意思為:亮背景主題的沒(méi)有標(biāo)題欄的樣式,與Theme_Black_NoTitleBar相反
3.2、Theme_Light_NoTitleBar_Fullscreen
意思為:亮背景主題的沒(méi)有標(biāo)題欄且全屏顯示的樣式,與Theme_Black_NoTitleBa_Fullscreenr相反
4、Theme_Dialog
意思為:對(duì)話框樣式 將整個(gè)activity變成對(duì)話框樣式出現(xiàn)。
5、Theme_InputMethod
6、Theme_Panel
意思為:刪除掉所有多余的窗口裝飾,在一個(gè)空的矩形框中填充內(nèi)容,作用范圍相當(dāng)于把dialog中的所有元素全部去掉,只是一個(gè)空的矩形框,且此為默認(rèn)的樣式。
6.1、Theme_Light_Panel
意思為:刪除掉所有多余的窗口裝飾,在一個(gè)空的矩形框中填充內(nèi)容,作用范圍相當(dāng)于把dialog中的所有元素全部去掉,只是一個(gè)空的矩形框,且默認(rèn)是light的樣式。
7、Theme_Wallpaper
意思為:使用墻紙做主題,默認(rèn)狀態(tài)。
7.1、Theme_WallpaperSettings
意思為:使用墻紙做主題,默認(rèn)是使用將上一個(gè)界面調(diào)暗之后作為主題
7.2、Theme_Light_WallpaperSettings
意思為:使用墻紙做主題,默認(rèn)Light狀態(tài)。
7.3、Theme_Wallpaper_NoTitleBar
意思為:使用墻紙做主題,且沒(méi)有標(biāo)題欄
7.4、Theme_Wallpaper_NoTitleBar_Fullscreen
意思為:使用墻紙做主題,且沒(méi)有標(biāo)題欄,且全屏顯示
8、Theme_Translucent
意思為:半透明狀態(tài)下的背景,將運(yùn)行此activity之前的屏幕作為半透明狀態(tài)作為此activity運(yùn)行時(shí)的樣式。
8.1、Theme_Translucent_NoTitleBar
意思為:半透明狀態(tài)下沒(méi)有標(biāo)題欄的背景,將運(yùn)行此activity之前的屏幕作為半透明狀態(tài)作為此activity運(yùn)行時(shí)的樣式。
8.2、Theme_Translucent_NoTitleBar_Fullscreen
意思為:半透明狀態(tài)下沒(méi)有標(biāo)題欄且全屏的背景,將運(yùn)行此activity之前的屏幕作為半透明狀態(tài)作為此activity運(yùn)行時(shí)的樣式。
二、style android中的樣式一般是用于窗體元素界別的,用于改變控件的樣式
理解為將寫在控件屬性里面的屬性,用一個(gè)文件給包裝起來(lái)了??!
樣式文件規(guī)范:
<resources>
<style name="TextStyle">
<item name="android:textSize">14sp</item>
<item name="android:textColor">#fff</item>
</style>
</resources>
就是一個(gè)xml,以<resources>開(kāi)頭,定義style節(jié)點(diǎn),在style下定義item每一項(xiàng)。
引用也非常簡(jiǎn)單,如下:
style="@style/TextStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello, World!" />
以上只是style的一些簡(jiǎn)單的應(yīng)用 ,下在將會(huì)講到一個(gè)非常實(shí)用的知識(shí),也就是style的繼承關(guān)系。這樣才能更好的簡(jiǎn)化我們代碼的工作量,也更利用整個(gè)程序邏輯的組建。它的繼承關(guān)系可以有兩種實(shí)現(xiàn)的方式:
1. 是通過(guò) parent屬性來(lái)指定
2. 通過(guò)點(diǎn)號(hào)來(lái)指定
接下來(lái)我們分別來(lái)舉例:我們程序中應(yīng)用到最多的可能就是TextView了,它可能會(huì)有很多種情況 ,比如 作為title,正文,提示等等,而這一些的TextView有他的共同點(diǎn),也有他們的不同之處。首先我們定義一個(gè)通過(guò)的style:
<item name="android:shadowDx">-0.5</item>
<item name="android:shadowDy">1</item>
<item name="android:shadowRadius">0.5</item>
<item name="android:singleLine">true</item>
<item name="android:ellipsize">marquee</item>
</style>
以上主要是定義了他的陰影啊,單行啊,超過(guò)長(zhǎng)度怎么辦啊。接下來(lái)我們?cè)俣x一個(gè)title級(jí)別的樣式,title我們也想要這些屬性,那么就得繼承它了。首先我們用 parent屬性來(lái)繼承
<item name="android:textSize">18sp</item>
<item name="android:textColor">#fff</item>
<item name="android:textStyle">bold</item>
</style>
parent屬性中跟的就是父類的名稱,就樣title的陰影 ,字體大小 ,辨色,粗細(xì)就一起出來(lái)了,而我們不用再去定義title的陰影了。節(jié)省了不少的時(shí)間。第二種繼承是利用parentStyle.childStyle的方式 ,用點(diǎn)號(hào)來(lái)繼承 ,上面的TextTitle我們也可以這樣寫:
<item name="android:textSize">18sp</item>
<item name="android:textColor">#fff</item>
<item name="android:textStyle">bold</item>
</style>
這樣也能得到預(yù)期的效果。這樣做不爽的地方 就是名字就長(zhǎng)了,我們?cè)谝眠@個(gè)style的時(shí)候,就得 style="@style/TextStyle.TextTitle",如果繼承的層級(jí)越多,這個(gè)名字就會(huì)越長(zhǎng)。
以上就是Android開(kāi)發(fā)UI界面之threme和style的全部?jī)?nèi)容,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- Android設(shè)置Activity背景為透明style的簡(jiǎn)單方法(必看)
- Android Style.xml的應(yīng)用詳解及代碼實(shí)現(xiàn)
- Android中自定義控件的declare-styleable屬性重用方案
- Android入門之Style與Theme用法實(shí)例解析
- Android 避免APP啟動(dòng)閃黑屏的解決辦法(Theme和Style)
- 基于android樣式與主題(style&theme)的詳解
- Android自定義Style實(shí)現(xiàn)方法
- Android style的繼承方式 點(diǎn)(.)和parent詳解及實(shí)例
相關(guān)文章
android使用 ScrollerView 實(shí)現(xiàn) 可上下滾動(dòng)的分類欄實(shí)例
本篇文章主要介紹了android使用 ScrollerView 實(shí)現(xiàn) 可上下滾動(dòng)的分類欄實(shí)例,具有一定的參考價(jià)值,有興趣的可以了解一下。2017-01-01Android StatusBar 透明化方法(不同的版本適配)
本篇文章主要介紹了Android StatusBar 透明化方法(不同的版本適配),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-01-01Android列表實(shí)現(xiàn)單選點(diǎn)擊縮放動(dòng)畫效果
在android開(kāi)發(fā),我們會(huì)常常使用到縮放動(dòng)畫,這篇文章主要給大家介紹了關(guān)于Android列表實(shí)現(xiàn)單選點(diǎn)擊縮放動(dòng)畫效果的相關(guān)資料,需要的朋友可以參考下2021-08-08Android之高德地圖定位SDK集成及地圖功能實(shí)現(xiàn)
本文主要介紹了Android中高德地圖定位SDK集成及地圖功能的實(shí)現(xiàn)。具有很好的參考價(jià)值。下面跟著小編一起來(lái)看下吧2017-04-04Flutter使用?input?chip?標(biāo)簽組件示例詳解
這篇文章主要為大家介紹了Flutter使用?input?chip?標(biāo)簽組件示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10Android實(shí)現(xiàn)登錄注冊(cè)頁(yè)面(上)
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)登錄注冊(cè)頁(yè)面,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-04-04Android 友盟第三方登錄與分享的實(shí)現(xiàn)代碼
這篇文章主要介紹了Android 友盟第三方登錄與分享的實(shí)現(xiàn)代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09Android進(jìn)階手寫IPC通信框架告別繁瑣AIDL
這篇文章主要為大家介紹了Android進(jìn)階手寫IPC通信框架告別繁瑣AIDL實(shí)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01Android 實(shí)現(xiàn)手機(jī)接通電話后振動(dòng)提示的功能
本文主要介紹Android 實(shí)現(xiàn)手機(jī)接通電話后振動(dòng)提示的功能,這里整理了詳細(xì)的相關(guān)資料,并附有示例代碼,有需要的朋友可以參考下2016-08-08