日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

06、主题 样式 国际化

發(fā)布時(shí)間:2023/12/20 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 06、主题 样式 国际化 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、樣式

AndroidStyle分為兩種:

1、Theme是針對(duì)窗體級(jí)別的,改變窗體的樣式。

2、Style是針對(duì)窗體元素級(jí)別的,改變指定控件或者Layout樣式。

Android系統(tǒng)的主題和樣式位于frameworks\base\core\res\res\values\,其中包含很多系統(tǒng)定義好的style。

1.1、自定義樣式

??? 1、在res/values目錄新建style.xml文件,并增加<resources>根節(jié)點(diǎn)。

??? 2、對(duì)每個(gè)主題或風(fēng)格增加唯一名稱,同時(shí)也可以繼承某個(gè)風(fēng)格。

??? 3、在<style>元素內(nèi)部,申明一個(gè)或多個(gè)<item>,并得以名稱屬性,并在元素內(nèi)部定義該風(fēng)格的值。

??? 4、之后則可以通過(guò)@style應(yīng)用在其他xml中。

<?xml version="1.0" encoding="utf-8"?> <resources><style name="SpecialText" parent="@style/Text"><item name="android:textSize">18sp</item><item name="android:textColor">#008</item></style> </resources>

1.2、樣式抽取

為了提高布局文件復(fù)用性,我們可以將相同控件的屬性進(jìn)行抽取,在res/string.xml中添加style節(jié)點(diǎn),每個(gè)屬性對(duì)應(yīng)一個(gè)item子節(jié)點(diǎn)

1.3、樣式繼承

1、當(dāng)一種樣式具有另一種樣式相同的屬性,并且還有自特有的屬性,我們就可以使用繼承樣式。

2、繼承的第二種方式

1.4、修改系統(tǒng)樣式

1、查找D:\Android\sdk\platforms\android-18\data\res\values目錄下的styles.xml文件

2、文件中搜索需要用到的控件,進(jìn)行觀察,這里以ProgressBar系統(tǒng)樣式為例。

<style name="Widget.ProgressBar"><item name="android:indeterminateOnly">true</item><item name="android:indeterminateDrawable">@android:drawable/progress_medium_white</item><item name="android:indeterminateBehavior">repeat</item><item name="android:indeterminateDuration">3500</item><item name="android:minWidth">48dip</item><item name="android:maxWidth">48dip</item><item name="android:minHeight">48dip</item><item name="android:maxHeight">48dip</item><item name="android:mirrorForRtl">false</item> </style>

3.發(fā)現(xiàn)其實(shí)ProgressBar引用了一個(gè)圖片資源,那么使用工具搜索到Progress_medium_white,發(fā)現(xiàn)其實(shí)是一個(gè)xml文件,也就是一個(gè)旋轉(zhuǎn)動(dòng)畫。

<?xml version="1.0" encoding="utf-8"?> <animated-rotate xmlns:android="http://schemas.android.com/apk/res/android"android:drawable="@drawable/spinner_white_48"android:pivotX="50%"android:pivotY="50%"android:framesCount="12"android:frameDuration="100" />

4.旋轉(zhuǎn)動(dòng)畫中又引用了spinner_white_48,發(fā)現(xiàn)它其實(shí)是一張圖片,所以我們可以修改ProgressBar的樣式圖片。

5.拷貝第3步的內(nèi)容,也就是布局動(dòng)畫文件,然后在drawable目錄下創(chuàng)建一個(gè)xml文件,將拷貝的內(nèi)容復(fù)制進(jìn)去,再修改drawable屬性下對(duì)應(yīng)的圖片。

6.在布局文件的ProgressBar中使用indeterminateDrawable引用該xml資源文件。

二、主題

1.1、自定義主題

和風(fēng)格一樣,主題依然在<style>元素中申明,引用方式也是一樣的,不同的是通過(guò)在清單文件定義的<application>和<activity>元素將主題添加到某個(gè)程序,

但是主題不能應(yīng)用在view中。

<resources><style name="CustomTheme"><item name="android:windowNoTitle">true</item><item name="windowFrame">@drawable/screen_frame</item><item name="windowBackground">@drawable/screen_background_white</item><item name="panelForegroundColor">#FF000000</item><item name="panelBackgroundColor">#FFFFFFFF</item><item name="panelTextColor">?panelForegroundColor</item><item name="panelTextSize">14</item><item name="menuItemTextColor">?panelTextColor</item><item name="menuItemTextSize">?panelTextSize</item></style> </resources>
  • @符號(hào):表示我們應(yīng)用的資源是前面定義過(guò)的或在前一個(gè)項(xiàng)目中又或者在Android框架中。
  • ?符號(hào):表示我們引用的資源的值在當(dāng)前的主題當(dāng)中定義過(guò)的。

1.2、靜態(tài)設(shè)置主題

1、如果在所有的activity中使用主題,則將主題設(shè)置在<application>標(biāo)簽中。

<application android:theme="@style/CustomTheme">

2、如果只讓某個(gè)activity擁有主題,則將主題設(shè)置在<activity>標(biāo)簽中。

<activity android:theme="@android:style/Theme.Dialog">

3、如果針對(duì)某個(gè)主題進(jìn)行輕微改變,只需要在style中將改主題設(shè)置為父主題即可。

<style name="CustomDialogTheme" parent="@android:style/Theme.Dialog">

1.3、動(dòng)態(tài)設(shè)置主題

當(dāng)我們想在代碼setTheme()對(duì)主題進(jìn)行動(dòng)態(tài)設(shè)置的話,則必須在初始化任何view之前進(jìn)行設(shè)置,比如在setContentView(View)或inflate(int,ViewGroup)方法之前。

protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);...setTheme(android.R.style.Theme_Light);setContentView(R.layout.linear_layout_3); }

如果在代碼中動(dòng)態(tài)加載主界面主題,那么注意主題當(dāng)中不能包括任何系統(tǒng)啟動(dòng)這個(gè)activity鎖使用的動(dòng)畫,這些動(dòng)畫將在程序前顯示。

1.4、利用主題設(shè)置Activity默認(rèn)動(dòng)畫

a) 首先在res文件夾下建立anim文件夾,然后在里面建立fase_in.xml和fade_out.xml兩個(gè)動(dòng)畫資源

fade_in.xml

<?xml version="1.0" encoding="utf-8"?> <alpha xmlns:android="http://schemas.android.com/apk/res/android"android:duration="300"android:fromAlpha="0.0"android:interpolator="@android:anim/accelerate_interpolator"android:toAlpha="1.0" />

fade_out.xml

<?xml version="1.0" encoding="utf-8"?> <alpha xmlns:android="http://schemas.android.com/apk/res/android"android:duration="300"android:fromAlpha="1.0"android:interpolator="@android:anim/accelerate_interpolator"android:toAlpha="0.0" />

b) 然后在values文件夾下的style.xml中的resources標(biāo)簽內(nèi)寫:

<style name="Anim_fade" parent="android:Theme.NoTitleBar"><item name="android:windowAnimationStyle">@style/fade</item> </style> <style name="fade" parent="@android:style/Animation.Activity"><item name="android:activityOpenEnterAnimation">@anim/fade_in</item><item name="android:activityOpenExitAnimation">@anim/fade_out</item><item name="android:activityCloseEnterAnimation">@anim/fade_in</item><item name="android:activityCloseExitAnimation">@anim/fade_out</item> </style>

c) 最后一步在AndroidManifest.xml中的Activity的聲明上加入android:theme="@style/Anim_fade"?

但是在高版本的Android下可能會(huì)沒有效果。

三、資源目錄

1.1.字符串國(guó)際化

字符串的國(guó)際化只需要在res文件夾下新建對(duì)應(yīng)語(yǔ)言的values文件夾即可。

1.2.圖片國(guó)際化

在Android工程的res目錄下,通過(guò)定義特殊的文件夾名稱就可以實(shí)現(xiàn)多語(yǔ)言支持。比如我們的程序兼容簡(jiǎn)體中文、英文,在values文件夾中建立默認(rèn)strings.xml,再建立values-zh-rCN文件夾。

在每個(gè)文件夾里放置一個(gè)strings.xml,strings.xml里是各種語(yǔ)言字符串。如果涉及到參數(shù)配置類xml文件夾名稱也要改成xml-zh、xml。

這樣在android的系統(tǒng)中進(jìn)行語(yǔ)言切換,所開發(fā)的程序也會(huì)跟著切換語(yǔ)言。

1、常見的有

zh_cn: 簡(jiǎn)體中文

zh_hk: 繁體中文(中國(guó)香港)??

zh_tw: 繁體中文(中國(guó)臺(tái)灣地區(qū))

en-hk: 英語(yǔ)(香港)

en_us: 英語(yǔ)(美國(guó))

en_gb: 英語(yǔ)(英國(guó))

en_ww: 英語(yǔ)(全球)

ja_jp: 日語(yǔ)(日本)

ko_kr: 韓文(韓國(guó))

2、簡(jiǎn)單示例

3、引用字符串

?a) xml文件中獲取

android:text="@string/resource_name"

b) 活動(dòng)中獲取

方法一: this.getString(R.string.resource_name); 方法二: getResources().getString(R.string.resource_name);

c) 在其他java文件

方法一: context.getString(R.string.resource_name); 方法二: application.getString(R.string.resource_name);

1.4.String.xml

a)定義string類型

<?xml version="1.0" encoding="utf-8"?> <resources><string name="hello" >Hello World, MainActivity!</string><string name="app_name" >TestExample01</string> </resources> 使用方式:String appName = (String) this.getResources().getText(R.string.app_name); 或String appName = (String) this.getResources().getString(R.string.app_name);

b)定義string數(shù)組(arrays.xml)

<?xml version="1.0" encoding="utf-8"?> <resources><string-array name="sports"><item>足球</item><item>籃球</item><item>太極</item><item>冰球</item></string-array> </resources> 使用方式:getResources().getStringArray(R.array.sports);

c)定義顏色(colors.xml)

<?xml version="1.0" encoding="utf-8"?> <resources><color name="black">#FFFFFF</color> </resources> 使用方式:getResources().getDrawable(R.string.black); 或getResources().getColor(R.string.black);

d)定義尺寸(dimens.xml)

<?xml version="1.0" encoding="utf-8"?> <resources><dimen name="height">80dip</dimen> </resources> 使用方式:getResource().getDimension(R.string.height);

? e)定義樣式(style.xml)

<?xml version="1.0" encoding="utf-8"?> <resources><style name="sharpText"><item name="android:textSize">18sp</item><item name="android:textColor">#000000</item></style> </resources>

1.5、占位符

在Android中,如果需要?jiǎng)討B(tài)的修改value/string.xml中的值,則可以使用占位符

string.xml中節(jié)點(diǎn)是支持占位符的,如下所示:

<string name="data">整數(shù)型:%1$d,浮點(diǎn)型:%2$.2f,字符串:%3$s</string>

獲取字符串并進(jìn)行格式化,需要注意的是浮點(diǎn)型數(shù)據(jù)中的.2表示保留多少位小數(shù)。

String data = getResources().getString(R.string.data); data = String.format(data, 100,10.3,"2016-02-14");

運(yùn)行結(jié)果如下所示:

假設(shè)我們需要讓部分的文字變色,則可以通過(guò)html代碼來(lái)實(shí)現(xiàn)

tvRemaid.setText(Html.fromHtml("每月提現(xiàn)次數(shù)為5次,剩余<font color='#ff0000'>" + count + "</font>次"));

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?


?

?

轉(zhuǎn)載于:https://www.cnblogs.com/pengjingya/p/5505332.html

總結(jié)

以上是生活随笔為你收集整理的06、主题 样式 国际化的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。