當前位置:首頁 » 安卓系統 » android樣式主題

android樣式主題

發布時間: 2023-07-27 20:05:22

A. 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

B. 如何在 Android 應用程序中使用自定義主題

Android 應用程序中使用自定義主題的方法:

1、新建一個項目 Lesson32_StyleAndTheme。

2、拷貝下面三張 Nine-Patch PNG圖片到res/drawable目錄下:

C. 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

D. Android studio中如何修改應用程序的主題和樣式

在Android 5.0時谷歌推出了一個新的設計語言Material Design。並用在了Android M的系統中。

在AndroidManifest.xml文件中有一個android:theme屬性,該屬性的作用就是設置應用程序的主題。

有關於如何設置主題樣式更為詳細的方法,我在一個叫做秒秒學的網站中有看到過,如果想要更加具體的了解,你可以去看看。

E. 如何修改Android App的樣式風格

android中可以自定義主題和風格。風格,也就是style,我們可以將一些統一的屬性拿出來,比方說,長,寬,字體大小,字體顏色等等。可以在res/values目錄下新建一個styles.xml的文件,在這個文件裡面有resource根節點,在根節點裡面添加item項,item項的名字就是屬性的名字,item項的值就是屬性的值,如下所示:
復制代碼 代碼如下:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="MyText" parent="@android:style/TextAppearance">
<item name="android:textColor">#987456</item>
<item name="android:textSize">24sp</item>
</style>
</resources>

style中有一個父類屬性parent, 這個屬性是說明當前的這個style是繼承自那個style的,當然這個style的屬性值中都包含那個屬性中的,你也可以修改繼承到的屬性的值,好了,style完成了,我們可以測試一下效果了,先寫一個布局文件,比如說一個TextView什麼的,可以用到這個style的。這里我就寫一個EditText吧。下面是布局文件:
復制代碼 代碼如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas。android。com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<EditText
android:id="@+id/myEditText"
android:layout_width="match_parent"
android:layout_height="match_parent"
style="@style/MyText"
android:text="測試一下下"/>
</LinearLayout>

說完了style,下面就說說Theme,Theme跟style差不多,但是Theme是應用在Application或者Activity裡面的,而Style是應用在某一個View裡面的,還是有區別的,好了,廢話不多說,還是看代碼吧。下面的是style文件:
復制代碼 代碼如下:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="MyText" parent="@android:style/TextAppearance">
<item name="android:textColor">#987456</item>
<item name="android:textSize">24sp</item>
</style>
<style parent="@android:style/Theme" name="CustomTheme">
<item name="android:windowNoTitle">true</item>
<item name="android:windowFrame">@drawable/icon</item>
<item name="android:windowBackground">?android:windowFrame</item>
</style>
</resources>

style中有一個父類屬性parent, 這個屬性是說明當前的這個style是繼承自那個style的,當然這個style的屬性值中都包含那個屬性中的,你也可以修改繼承到的屬性的值,好了,style完成了,我們可以測試一下效果了,先寫一個布局文件,比如說一個TextView什麼的,可以用到這個style的。這里我就寫一個EditText吧。下面是布局文件:
復制代碼 代碼如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas。android。com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<EditText
android:id="@+id/myEditText"
android:layout_width="match_parent"
android:layout_height="match_parent"
style="@style/MyText"
android:text="測試一下下"/>
</LinearLayout>

說完了style,下面就說說Theme,Theme跟style差不多,但是Theme是應用在Application或者Activity裡面的,而Style是應用在某一個View裡面的,還是有區別的,好了,廢話不多說,還是看代碼吧。下面的是style文件:
復制代碼 代碼如下:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="MyText" parent="@android:style/TextAppearance">
<item name="android:textColor">#987456</item>
<item name="android:textSize">24sp</item>
</style>
<style parent="@android:style/Theme" name="CustomTheme">
<item name="android:windowNoTitle">true</item>
<item name="android:windowFrame">@drawable/icon</item>
<item name="android:windowBackground">?android:windowFrame</item>
</style>
</resources>

可以看到這里寫了一個繼承自系統默認的Theme的主題,裡面有3個屬性,這里強調一下第三個屬性的值的問題,這里打個問號,然後加前面的一個item的名字表示引用的是那個名字的值,也就是那個名字對應的圖片。
然後我們在Manifest.xml裡面的Application裡面加一個Theme的屬性,這個屬性對應的就是我們上面寫的Theme。
復制代碼 代碼如下:

<application android:icon="@drawable/icon" android:label="@string/app_name"
android:theme="@style/CustomTheme">
<activity android:name=".TestStyle"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

上面的代碼沒有標題欄,背景和fram都是我們設置的圖片。當然也可以在代碼中設置主題:
復制代碼 代碼如下:

package com.test.shang;
import android.app.Activity;
import android.os.Bundle;
public class TestStyle extends Activity {
@Override
protected void onCreate (Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setTheme(R.style.CustomTheme);
setContentView(R.layout.test_style);
}
}

F. 如何為Android studio設置自定義的主題樣式

Android Studio默認主題IntelliJ,我們可以修改成黑色的Dracula的主題或者是Windows主題。 1、首先雙擊桌面AndroidStudio圖標,打開Android Studio。 2、選擇Android Studio菜單欄File——Settings選項 3、或者在工具欄中直接點擊Settings設置圖。詳細的可以看看安卓巴士教程:http://www.apkbus.com/thread-463460-1-1.html

G. 如何設計自己的android應用主題風格

•android:theme="@android:style/Theme.Dialog" 將一個Activity顯示為能話框模式
•android:theme="@android:style/Theme.NoTitleBar" 不顯示應用程序標題欄
•android:theme="@android:style/Theme.NoTitleBar.Fullscreen" 不顯示應用程序標題欄,並全屏
•android:theme="Theme.Light" 背景為白色
•android:theme="Theme.Light.NoTitleBar" 白色背景並無標題欄
•android:theme="Theme.Light.NoTitleBar.Fullscreen" 白色背景,無標題欄,全屏
•android:theme="Theme.Black" 背景黑色
•android:theme="Theme.Black.NoTitleBar" 黑色背景並無標題欄
•android:theme="Theme.Black.NoTitleBar.Fullscreen" 黑色背景,無標題欄,全屏
•android:theme="Theme.Wallpaper" 用系統桌面為應用程序背景
•android:theme="Theme.Wallpaper.NoTitleBar" 用系統桌面為應用程序背景,且無標題欄
•android:theme="Theme.Wallpaper.NoTitleBar.Fullscreen" 用系統桌面為應用程序背景,無標題欄,全屏
•android:theme="Translucent" 半透明
•android:theme="Theme.Translucent.NoTitleBar" 半透明、無標題欄
•android:theme="Theme.Translucent.NoTitleBar.Fullscreen" 半透明、無標題欄、全屏
•android:theme="Theme.Panel"
•android:theme="Theme.Light.Panel"

H. 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

熱點內容
安卓哪裡填寫apple代碼 發布:2025-02-05 00:28:54 瀏覽:287
oppo手機鎖屏密碼忘記後如何更換 發布:2025-02-05 00:28:19 瀏覽:24
幼兒思維編程 發布:2025-02-05 00:18:21 瀏覽:24
我的世界電腦正版如何進入伺服器 發布:2025-02-05 00:18:06 瀏覽:879
疫情防控健康碼預警機制演練腳本 發布:2025-02-04 23:58:46 瀏覽:38
分治演算法java 發布:2025-02-04 23:41:15 瀏覽:592
安卓app點進去就閃退怎麼回事 發布:2025-02-04 23:36:56 瀏覽:779
宏按鍵編程 發布:2025-02-04 23:05:11 瀏覽:904
微信隱形密碼在哪裡設置 發布:2025-02-04 23:05:01 瀏覽:866
android的補間動畫 發布:2025-02-04 23:03:42 瀏覽:416