導航:首頁 > 操作系統 > androidtheme使用

androidtheme使用

發布時間:2023-04-01 21:11:18

Ⅰ 如何在 android 應用程序中使用自定義主題

在Android中,定義外觀最簡單的方式是直接設置屬性在視圖對象上。由於要對整個應用程序設置樣式,這種方法就顯得不是很方便了。因此,我們可以創建
樣式來綁定視圖屬性。但要注意的是,樣式只能設置在xml里。這意味著,我們在創建/載入視圖的時候,只能一次設置一個樣式。下面是如何在res
/values/styles.xml文件中給TextView設置屬性的示例。

<style name="CustomText" parent="<a href="http" target="_blank" rel="nofollow">@android</a> :style/TextAppearance.Medium">
<item name="android:textSize">20sp</item> <item name="android:textColor">#008</item>
</style>

我們引用@style/CustomText樣式應用在我們的layout.xml文件中。該樣式引用了一個父樣式
@android:style/TextAppearance.Medium。由於開始樣式引自android: 命名空間,那麼我們這個樣式默認也隨android平台。

創建主題綁定樣式

假設我們要改變我們所有TextView的文字大小和顏色,並且不需要明確設置每一個TextView。這是一個非常常見的情況,幸運的
是,Android提供了一個非常強大的主題機制。從本質上講,主題就是樣式資源本身,使用「key」指向具體的樣式。一個視圖對象基於這個key可以查
看到具體的樣式。下面是一個簡單的例子,在res/values/themes.xml文件:

<style name="Theme.MyApp" parent="<a href="http" target="_blank" rel="nofollow">@android</a> :style/Theme.Holo">
<item name="android:textAppearance">@style/CustomText</item>
</style>

如上所述,主題是樣式資源本身,所以我們聲明一個Theme.App繼承自Android平台提供的holo主題。我們將我們的CustomText樣式
指定到android:textAppearance屬性。屬性就是一個預定義的「變數」,它可以被其他資源元素引用。事實上,它也可以創建自定義屬性在
res/values/attr.xml文件。

現在有趣的事情來了。我們的主題Theme.MyApp不僅可以通過AndroidManifest.xml的設置應用到Activity上,它也可以在
運行時在代碼中設置。你將不得不重新啟動當前Activity(或使用ContextWrapper應用UI的主題部分),但它使主題更加動態。

Ⅱ 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

Ⅲ android l theme怎麼用

theme主要用來定製樣式風格統一的頁面設置一些屬性的,類似無標題,或者標題欄背景統一
theme有@theme的用法?
一般都是android:theme = "@style/XXXXtheme"類似這種吧

這個style如果是你自定義的那就直接用@style/XXX,從你定義的style裡面應用進來;如果不是你定義的,引用系統的就是@android:style/XXXX,都是需要用@的,就類似我們直接定義一個系統空間listview,如果你不修改它的ID,那麼它就是"@id/list"中各種,我們要修改的話就改成"@+id/listview1"。

如果你認可我的回答,敬請及時採納,
~如果你認可我的回答,請及時點擊【採納為滿意回答】按鈕
~~手機提問的朋友在客戶端右上角評價點【滿意】即可。
~你的採納是我前進的動力
~~O(∩_∩)O,記得好評和採納,互相幫助。

Ⅳ 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

Ⅳ 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="Theme.Translucent" //透明背景

android:theme="Theme.Translucent.NoTitleBar" //透明背景並無標題

android:theme="Theme.Translucent.NoTitleBar.Fullscreen" //透明背景並無標題,全屏

android:theme="Theme.Panel " //面板風格顯示

android:theme="Theme.Light.Panel" //平板風格顯示

Ⅵ 記一次使用Android AppCompat(兼容庫)的Theme所引發的思考

最近在優化App,首先從界面上優化,對所有頁面的ui繪制進行查看和優化,其中發現在

Api 小於21的手機設備上的效果圖為:

運行在Api大於21的設備上的效果圖為:

同樣是使用統一兼容主題

在圖1中發現了過度繪制現象。就是這一端綠色的區域。可我們的完全定義的是全屏的啊?為什麼會出現這種情況呢。

在解釋上面現象之前,首先了解下Android使用Theme的正確用法:

Android的Theme的主要來源分為以下三種:

這里主要探討前兩者,自定義主題不做探討,使用Android系統自帶的Theme要加上"android:",如:android:Theme.Light,使用v7兼容包的主題就不需要前綴了,直尺灶接:Theme.AppCompat。現在看看有哪些主題:

1.系統自帶主題:

Theme.AppCompat主題是兼容主題,是什麼意思呢?

意思就是說如果運行程序在手機API是21則就是相當於使用Material主題,如果運行程序的手機API是11則就相當於使用Holo主題,以此類推。

兼容v7會被Google公司不斷升級:

比如appcompat-v7-21.0表示升級到向API 21兼容

比如appcompat-v7-23.2表示升級到向API 23兼容

所以要使用最新的兼容包。

我們已經知道了統一使用兼容包的話,目標設備API 為21及以上時會使用Material主題,API 為11時使用Holo主題,下面我們來比較下Material與Holo主題高困和的區別:

通過比較發現Holo主題的windoContentOverlay使用ab_solid_shadow_holo為背景,而Material未設置任戚盯何背景。再來看下windoContentOverlay是何許人也,查看源碼得知:

onCreate()中設置的Window.FEATURE_NO_TITLE對應的窗口修飾布局文件為screen_simple.xml:

windowContentOverlay代表content的foreground並且填充寬,位於content的頂部,代表內容區域頂部的陰影背景(與TitleBar和ActionBar都沒有關系),因為這種屬性是在無標題欄的時候才會被設置到content的top,所以有標題欄或者actionBar時也不會出現這種情況。現在問題就迎刃而解了,修改Theme為:

增加<item name="android:windowContentOverlay">@null</item>

Ⅶ androidtheme添加圖片

android選項菜單怎麼添加圖片
android選項菜單怎麼添加圖片,Android圖片選擇框架--PictureSelector

weixin_39756235
轉載
關注
0點贊·464人閱讀
圖片.png

功能特點

支持通過拍照獲取圖片

支持通過相冊獲取圖片

支持圖片裁切

支持仿IOS底部彈出選擇菜單ActionSheet效果

支持6.0動態授予許可權

解決圖片有黑邊問題

解決7.0調用相機crash問題

解決小米miui系統調用系盯鬧察統裁剪圖片功能crash問題

使用

Step 1. 添加JitPack倉庫

在項彎沒目的build.gradle添加JitPack倉庫

allprojects {

repositories {

...

maven { url "https://jitpack.io" }

}

}

Step 2. 添加依賴

在需要使用的mole中添加依賴

dependencies {

compile 'com.github.wildma:PictureSelector:1.0.0'

}

或者引用本地lib

compile project(':pictureselector')

Step 3. 配置清單文件所需activity

android:name="com.wildma.pictureselector.PictureSelectActivity"

android:theme="@android:style/Theme.Translucent.NoTitleBar"/>

Step 4. 拍照或者從相冊選擇圖片

/**

* create方法參數一是上下文,在activity中傳activity.this,在fragment中傳fragment.this。參數二為請求碼,用於結果回調onActivityResult中判斷

* selectPicture方法參數分別為圖片的裁剪寬、裁剪高、寬比例、高比例。默認不傳則為寬200,高200,寬高比例為凱茄1:1。

*/

PictureSelector

.create(MainActivity.this, PictureSelector.SELECT_REQUEST_CODE)

.selectPicture(200, 200, 1, 1);

Step 5. 獲取裁剪後的圖片地址

@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

super.onActivityResult(requestCode, resultCode, data);

/*結果回調*/

if (requestCode == PictureSelector.SELECT_REQUEST_CODE) {

if (data != null) {

String picturePath = data.getStringExtra(PictureSelector.PICTURE_PATH);

Ⅷ Android 的style和theme

例子

Theme是針對窗體級別的,改變窗體樣式;
Style是針對窗體元素級別的,改變指定控制項或者Layout的樣式

簡單的說就是Theme裡面有包含了好多好多Style

常用於Toolbar下

比如

android:theme="@style/AppTheme.AppBarOverlay設置了Toolbar的主題
app:popupTheme="@style/AppTheme.PopupOverlay"設置了Toolbar節點下的view的主題

默認情況下我們使用theme為android:Theme.Holo.Light.DarkActionBar那麼ActionBar文字是白的,ActionBar Overflow彈出的是黑底白字,如果需求是白底黑字那麼只要設置toolbar的app:popupTheme="ThemeOverlay.AppCompat.Light"

附上一張官方的

裝載自 關於Android的style和theme

Ⅸ Android關於Theme.AppCompat相關問題的深入分析

先來看這樣一個錯誤:

No resource found that matches the given name '@style/Theme.AppCompat.Light'

對於這個錯誤,相信大部分Android開發者都遇到過,可能很多朋友通過網路或者Google已經解決了這個問題,但是網上大部分都只給出了解決方法。

正所謂知其然,知其所以然,本文將從此問題出發,深入分析探討導致此問題的原因、由其衍生出來的一系列問題及其解決方案。

Android的SDK版本很多,新的SDK版本包含了很多新的特性,為此Google官方提供Android Support Library package來保證高版本SDK的向下兼容。通過使用此包,可以讓擁有最新SDK特性的應用運行在API lever 4(即Android 1.6) 及更高版本的設備之上。

在4.0之前Android可辯州以說是沒有設計可言的,在4.0之後推出了Android Design,從此Android在設計上有了很大的改善,而在程序實現上相應的就滲灶廳是Holo風格,所以你看到有類似 Theme.Holo.Light Theme.Holo.Light.DarkActionBar 就是4.0的設計風格,但是為了讓4.0之前的版本也能有這種風格怎麼辦呢?這個時候就不得不引用v7包了,所以對應的就有 Theme.AppCompat.Light Theme.AppCompat.Light.DarkActionBar ,如果你的程序最小支持的版本是API14(即Android 4.0),那麼可以不用考慮v7的兼容。

Android在5.0版本推出了Material Design的概念,這是Android設計上又一大突破。對應的程序實現上就有 Theme.Material.Light Theme.Material.Light.DarkActionBar 等,但是這種風格只能應用在在5.0版本的手機,如果在5.0之前應用Material Design該怎麼辦呢?同樣的引用appcompat-v7包,這個時候的 Theme.AppCompat.Light Theme.AppCompat.Light.DarkActionBar 就是相對應兼容的Material Design的Theme。

由此可以得出以下情形會導致本文一開始提出的問題。

AndroidManifest.xml文件裡面

此時的解決方法有如下幾種:

此時再將項目values,values-v11,values-v14目錄下的styles.xml文件裡面style都改為

3.2 將此目錄下的項目導入到Eclipse中

3.3 右鍵點擊我們的Android項目,選擇Properties,左側選擇Android,在下方Library框里叢隱點擊Add,最後選擇appcompat_v7,確定。
此時問題就解決了。

出現此問題的原因是appcompat_v7已經更新到了最新版本並且高於編譯環境的SDK版本,此時在Android SDK Manager將SDK及編譯工具更新到最高版本

升級完成之後右鍵點擊appcompat_v7項目,選擇Properties,選擇Project Build Target 為最新版本,這樣就OK了。

通過以上的分析,相信朋友們以後再遇到AppCompat相關的問題應該不再是問題了。歡迎大家留言討論。

純凈日報 https://github.com/laucherish/PureZhihuD
一個採用 RxJava + Retrofit + OkHttp 框架實現的開源軟體

Ⅹ 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

閱讀全文

與androidtheme使用相關的資料

熱點內容
鬼叫春為什麼吃了餅變黃牛。 瀏覽:146
女子穿越與多個男主在一起 瀏覽:734
電影刪減視頻去哪裡看 瀏覽:638
韓國電影兩個當兵的救一個女的 瀏覽:305
大遲度未刪電影 瀏覽:912
金花媛 寡糖 瀏覽:359
pdf的application 瀏覽:125
pdf數理邏輯 瀏覽:885
歐美愛情喜劇電影 瀏覽:194
主角叫李天的小說 瀏覽:574
台灣風情片 瀏覽:468
xcode新版編譯運行 瀏覽:182
原版純英文字幕電影 瀏覽:231
阿里雲如何做到雲伺服器獨立ip 瀏覽:708
單片機進制教案 瀏覽:476
有什麼好的演算法書 瀏覽:157
到達市電影院英語 瀏覽:135
韓國電影男的進健房找女教練 瀏覽:10
國內十個免費網站 瀏覽:703
雙女主的小說 瀏覽:545