android原生主題
1. android studio怎麼更換默認主題
方法/步驟
1、點擊File下邊的setting選項
2. 原生安卓不能換主題嗎
原生系統應該是沒有提供更新主題的功能,但是可以通過安裝第三方桌面應用來實現。
以下列舉幾個常用的桌面軟體:
91桌面是一款手機桌面軟體,桌面軟體可以說是廠商進駐手機的一個重大入口,能夠把握住手機UI的審美,也就能慢慢的滲透到其他領域,GO就是一個很好的例子,91桌面定位在用戶的手機管家,還不錯。
Next桌面:Next Launcher是go桌面團隊的最新作品,一些動畫的特效做的不錯,東西做的還行,小編對桌面好像有點麻木了,個人還是喜歡apex。
小米桌面:小米官方手機主題,本站提供小米桌面下載下載點。這款官方的小米桌面讓更多非米粉的安卓用戶也能體驗小米桌面。不得不說,雖然小米備受爭議,但它的一些應用和系統確實有值得點贊的地方。
3. Android系統自帶樣式Theme總結
本文從網上復制,給自己做筆記的,摘自: http://blog.csdn.net/hongya1109110121/article/details/11985545
Android系統自帶樣式(@android:style/) (轉)
1 android:theme="@android:style/Theme.Holo.Light.NoActionBar.Fullscreen"
布局頁面最上面 不會顯示 android:icon="@drawable/ic_launcher"中的值和android:label="@string/app_name"的值。
2 android:theme="@style/AppTheme"
布局頁面最上面 顯示 android:icon="@drawable/ic_launcher"中的值和android:label="@string/app_name"的值。
其他
在數嫌並AndroidManifest.xml文件的activity中配置
1、android:theme="@android:style/Theme"
默認狀態,即如果theme這里不填任何屬性的時候,默認為Theme
2、android:theme="@android:style/Theme.NoDisplay"
任何都不顯示。比較適用於只是運行了activity,但未顯示任何東西
3、android:theme="@android:style/Theme.NoTitleBar「
背景主題的沒有標題欄者岩的樣式,默認如果沒有設置的話,顯示黑背景
4、android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
背景主題的沒有標題欄且全屏的樣式,默認為黑背景
5、android:theme="@android:style/Theme.Black"
默認狀態下黑背景
6、android:theme="@android:style/Theme.Black.NoTitleBar"
黑背景主題的沒有標題欄的樣式
7、android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"
黑背景主題的沒有標題欄且全屏的樣式
8、薯跡android:theme="@android:style/Theme.Light"
默認狀態下亮背景,與上述黑背景Theme.Black相反
9、android:theme="@android:style/Theme.Light.NoTitleBar"
亮背景主題的沒有標題欄的樣式,與Theme.Black.NoTitleBar相反
10、android:theme="@android:style/Theme.Light.NoTitleBar.Fullscreen"
亮背景主題的沒有標題欄且全屏顯示的樣式,與Theme.Black.NoTitleBa.Fullscreenr相反
11、android:theme="@android:style/Theme.Dialog"
對話框樣式 將整個activity變成對話框樣式出現
12、android:theme="@android:style/Theme.InputMethod"
Window animations that are applied to input method overlay windows
13、android:theme="@android:style/ Theme.Panel"
刪除掉所有多餘的窗口裝飾,在一個空的矩形框中填充內容,作用范圍相當於把dialog中的所有元素全部去掉,只是一個空的矩形框,且此為默認的樣式
14、android:theme="@android:style/ Theme.Light.Panel"
刪除掉所有多餘的窗口裝飾,在一個空的矩形框中填充內容,作用范圍相當於把dialog中的所有元素全部去掉,只是一個空的矩形框,且默認是light的樣式
15、android:theme="@android:style/Theme.Wallpaper"
使用牆紙做主題,默認狀態。
16、android:theme="@android:style/ Theme.WallpaperSettings"
使用牆紙做主題,默認是使用將上一個界面調暗之後作為主題
17、android:theme="@android:style/ Theme.Light.WallpaperSettings"
使用牆紙做主題,默認Light狀態
18、android:theme="@android:style/Theme.Wallpaper.NoTitleBar"
使用牆紙做主題,且沒有標題欄
19、android:theme="@android:style/Theme.Wallpaper.NoTitleBar.Fullscreen"
使用牆紙做主題,且沒有標題欄,且全屏顯示
20、android:theme="@android:style/Theme.Translucent"
半透明狀態下的背景,將運行此activity之前的屏幕作為半透明狀態作為此activity運行時的樣式。
21、android:theme="@android:style/Theme.Translucent.NoTitleBar"
半透明狀態下沒有標題欄的背景,將運行此activity之前的屏幕作為半透明狀態作為此activity運行時的樣式。
22、android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"
半透明狀態下沒有標題欄且全屏的背景,將運行此activity之前的屏幕作為半透明狀態作為此activity運行時的樣式。
摘自: http://blog.csdn.net/hongya1109110121/article/details/11985545
4. Android如何定製主題
目的:
為了加強用戶體驗,增強品牌效應,使我們的產品有自己獨特的風格,主題的定製將會是必然趨勢……
然而Android原生系統是不支持主題定製的,所以如何來定製主題,如何做得更好,需要大家集思廣益……
策略:
將介紹兩種定製主題的機制:
1.根據Android Configuration Qualifier機制,加入我們自己的JRDTheme定製。
2.用主題包的形式,根據用戶選擇不同的主題,而載入不同主題包中的資源。
基本原理:
首先介紹方式一:
Android Configuration Qualifier
Android 系統為一個項目提供了多套可供選擇的資源,通過命名特殊的資源文件夾來區別它們。系統在運行的時候,根據設備的當前配置為每個應用載入合適的資源。
這些不同的資源都是放在每個應用的res/目錄下面的,特殊的命名方式是-:
: 資源文件夾的名字,與默認資源文件夾保持一致
: 根據設備不同配置,需要使用的資源文件夾名字
Android系統根據優先順序的先後順序已經支持多種Configuration Qualifier,如圖1:
如何添加 Jrd Theme Resources
JrdTheme 的核心策略是當我們設定了不同的主題後,會自動的替換我們想要替換的資源(Framework&App)。具體步驟如下:
1. 工程師從UE哪裡獲得我們想要改變的主題資源,
2.把這些資源放到對應模塊的res/目錄下,以Contacts模塊為例,假如我們想要定製drawable、color、layout。
原來在Contacts模塊中默認的資源目錄如下:
res/
layout/
main.xml
info.xml
drawable/
icon.png
values/
colors.xml
定製後的資源目錄如下:
res/
layout/
main.xml
info.xml
layout-jrdthemexxx/
main.xml
info.xml
drawable/
icon.png
drawable-jrdthemexxx/
icon.png
values/
colors.xml
values-jrdthemexxx/
colors.xml
Notes: jrdthemexxx 是其中一個 主題的 Qualifier,如果有多個主題,那麼將會有多個jrdthemexxx存在。
3.與原來一樣編譯這些模塊,push到手機中即可。
這只是一個guide ,具體實現還要細化…… 目前在diablo、beetle上面已經用這種方式實現了……我在smartiii上嘗試過,機制沒問題,但是改動的范圍太大了,比較麻煩。
方式二:
核心思想:系統中有多套主題資源包,並且應用可以用相同的資源ID來訪問不同資源包中對應的資源。 Android原生系統的資源訪問流程 對應用來說,資源訪問主要有下面三種方
式:
第一、比較普遍的方式是使用xml定義,並且通過AAPT工具生成一個R文件,列出資源的索引來讓Android系統自己去遍歷整個資源樹的方式來訪問。
第二、通過Resources介面來訪問,使用Resources類的getDrawable、getString等介面來獲取資源。
第三、通過AssetManager類的介面去訪問,使用這個類的open方法來返回一個InputStream對象得到資源。
其實這三個訪問方式只是Android資源訪問中整個流程中在不同層次對外提供的三個介面,到底層的實現都是殊途同歸的。
因此我們實際上需要修改的部分主幹是在訪問資源具體路徑前,按照當前系統主題設置訪問不同資源APK下的文件
即是把原生Android中資源ID和資源文件路徑之間一對一的關系改為一對多的關系。
例子如下:如果原有資源ID和資源文件路徑關系為:
R.drawable.image01 = 0x7F020001
通過系統的資源查找之後找到文件路徑為 /system/app/frameworks-res.apk下的res/drawable_hdpi/icon.png
在AssetManager native中去讀取資源並上傳。
那麼我們需要做的是在傳入路徑去讀取資源時把文件路徑替換為/data/app/SystemTheme01.apk下的res/drawable_hdpi/icon.png
5. Android開發主題樣式詳解
application標簽中的@style/AppTheme引用自哪個文件夾中的styles.xml,這是根據運行此程序的手機系統來決定的,如果手機系統的API版本是11以上就是v11/styles.xml,API版本是14以上就是v14/styles.xml,以此類推。我們可以通過修改AppBaseTheme的父主題來實現我們需要的樣式,此文章主要就是來討論這個主題如何修改。
使用android系統中自帶的主題要加上"android:",如:android:Theme.Black
使用v7兼容包中的主題不需要前綴,如:Theme.AppCompat
系統自帶主題:
API 1:
android:Theme 根主題
android:Theme.Black 背景黑色
android:Theme.Light 背景白色
android:Theme.Wallpaper 以桌面牆紙為背景
android:Theme.Translucent 透明背景
android:Theme.Panel 平板風格
android:Theme.Dialog 對話框風格
API 11:
android:Theme.Holo Holo根主題
android:Theme.Holo.Black Holo黑主題
android:Theme.Holo.Light Holo白主題
API 14:
android:Theme.DeviceDefault 設備默認根主題
android:Theme.DeviceDefault.Black 設備默認黑主題
android:Theme.DeviceDefault.Light 設備默認白主題
API 21: (網上常說的 Android Material Design 就是要用這種主題)
android:Theme.Material Material根主題
android:Theme.Material.Light Material白主題
兼容包v7中帶的主題:
Theme.AppCompat 兼容主題的根主題
Theme.AppCompat.Black 兼容主題的黑色主題
Theme.AppCompat.Light 兼容主題的白色主題
以下都是指「包含」,比如包含「Dialog」表示對話框風格
比如Theme.Dialog、Theme.Holo.Dialog、Theme.Material.Dialog、Theme.AppCompat.Dialog都是對話框風格
Black 黑色風格
Light 光明風格
Dark 黑暗風格
DayNight 白晝風格
Wallpaper 牆紙為背景
Translucent 透明背景
Panel 平板風格
Dialog 對話框風格
NoTitleBar 沒有TitleBar
NoActionBar 沒有ActionBar
Fullscreen 全屏風格
MinWidth 對話框或者ActionBar的寬度根據內容變化,而不是充滿全屏
WhenLarge 對話框充滿全屏
TranslucentDecor 半透明風格
NoDisplay 不顯示,也就是隱藏了
WithActionBar 在舊版主題上顯示ActionBar