欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android strings.xml使用方法及技巧

 更新時(shí)間:2016年08月31日 09:58:45   作者:Hevin丶  
本文主要介紹Android strings.xml,這里對(duì)strings.xml文件的使用和一些小技巧做了總結(jié),有興趣的同學(xué)可以看下

相信 strings.xml 已經(jīng)是大家在 Android 開發(fā)中最熟悉的文件之一了,但其實(shí)它也有很多需要注意的地方和一些小技巧,知道了這些可以讓你的 Android 應(yīng)用更加規(guī)范易用,大家來看看吧。:   )

不要復(fù)用

這一條可能很多人會(huì)有不同的意見,因?yàn)閺V為流行的編程理念就在教導(dǎo)我們要復(fù)用代碼,當(dāng)然代碼復(fù)用是很好的理念,可以讓程序更加簡(jiǎn)潔。但也容易形成什么都想復(fù)用的思維慣性,而這在某些場(chǎng)景下就可能會(huì)造成麻煩。

比如,想象下你在應(yīng)用中的登錄和注冊(cè)界面中都是用了相同的字符串 – R.string.loading.

<string name="loading">Loading...</string>

之后如果產(chǎn)品需求變更,要分別使用不同的提示語,那就不得不新創(chuàng)建兩個(gè) string 并在代碼中配置它們。所以如果從一開始就為不同頁面分別配置,那需要做的就僅僅是修改下 strings.xml 文件。

<string name="sign_in_loading">正在登錄...</string>
<string name="sign_up_loading">正在注冊(cè)...</string>

更容易忽略的一個(gè)原因是,如果你們的應(yīng)用不想只是面對(duì)國(guó)內(nèi)用戶,還要面對(duì)其他語系的用戶的話,有些語言可能會(huì)造成意想不到的問題。

因?yàn)橐恍┱Z言同樣一個(gè)意思在不同的語境下,會(huì)用到不同的單詞,個(gè)中滋味經(jīng)歷過的自然會(huì)懂。

良好的文件結(jié)構(gòu)

<!-- register start -->
<string name="register_username">用戶名</string>
<string name="register_password">密碼</string>
<!-- register end -->

<!-- login start -->
<string name="login_username">用戶名</string>
<string name="login_password">密碼</string>
<!-- login end -->

千萬不要對(duì)此覺得麻煩,使用這樣的方式來組織 strings.xml 文件,在應(yīng)用變得復(fù)雜后,還能夠很簡(jiǎn)單的通過搜索甚至觀察的方式來找出你想要修改的字符串。

格式化

千萬不要使用字符串拼接的方法,因?yàn)椴煌Z言的句子順序是多樣的,字符串拼接會(huì)讓你的邏輯非常復(fù)雜。

這個(gè)時(shí)候就可以考慮使用字符串格式化了:

<string name="welcome_messages">Hello, %1$s! You have %2$d new messages.</string>

%1$s 代表了會(huì)格式化的字符串,%2$d 代表了會(huì)格式化的數(shù)值并在第二的位置,大家可以以此類推。

// Java 代碼:


Resources res = getResources();
String text = String.format(res.getString(R.string.welcome_messages), username, mailCount); // 注意參數(shù)的順序。

復(fù)數(shù)名詞

不要像下面這樣在你的 Java 代碼中處理單詞復(fù)數(shù)問題,因?yàn)椴煌恼Z言針對(duì)復(fù)數(shù)會(huì)有不同的語法規(guī)則。

<!-- strings.xml start -->
<string name="book">book</string>
<string name="books">books</string>
<!-- strings.xml end -->

if (bookCount == 0) {
  text = getString(R.string.book);
} else {
  text = getString(R.string.books);
}

正確的做法應(yīng)該是使用 getQuantityString(int id, int quantity) 方法。

<plurals name="book">
  <item name="one">book</item>
  <item name="others">books</item>
</plurals>

int bookCount = 4;
Resources res = getResources();
String bookCount = res.getQuantityString(R.plurals.book, bookCount);
// result: books.

當(dāng)然 Quantity String 不僅支持 one,還支持 zero, two, few, many 和 other。
可以自由決定各自情況下,使用什么詞語(當(dāng)然,在中文環(huán)境下可能用處并不大)。

并且 Quantity String 也能和上面提到的格式化搭配使用:

<plurals name="book">
  <item name="one">%d book found.</item>
  <item name="others">%d books found.</item>
</plurals>

int count = 4;
Resources res = getResources();
String bookCount = res.getQuantityString(R.plurals.book, count, count);
// result: 4 books found.

谷歌官方建議,作為一個(gè)開發(fā)者至少應(yīng)該給名詞提供 ‘one' 和 ‘other' 屬性。

文本高亮

大家可能知道用 ForegroundColorSpan 或 SpannableStringBuilder 能夠高亮一段文本中的某些內(nèi)容,但這對(duì)于多語言應(yīng)用來說可能并不是最好的方式,因?yàn)檫@兩個(gè)方法都要依靠待高亮文字的具體位置作為參數(shù)。如果應(yīng)用需要支持的語言多了之后,這就會(huì)寫大量的 Java 代碼,和頻繁計(jì)算待高亮內(nèi)容位置。

這個(gè)時(shí)候就可以試試用 HTML:

<string name="html_text" formatted="false">
<![CDATA[    
<font color=\'#28b5f5\'>Hello</font> world.
]]>
</string>

TextView tv = (TextView) findViewById(R.id.tv_txt);
tv.setText(Html.fromHtml(getString(R.string.html_text)));

這其實(shí)也是格式化的一種,我們不僅能定義顏色,還可以使用 < b >、< i >、< u > 來分別使字符串具有加粗、斜體和下劃線。

其實(shí) strings.xml 的用法遠(yuǎn)沒有很多人想的那么簡(jiǎn)單,這里也算是拋磚迎玉一下,如果大家想要了解更詳細(xì)的用法,可以參考官方文檔。:   )

以上就是對(duì)Android strings.xml 文件的使用方法和技巧做的總結(jié),后續(xù)繼續(xù)整理,謝謝大家對(duì)本站的支持!

相關(guān)文章

  • android 使用 IJKPlayer 播放視頻流的實(shí)現(xiàn)代碼

    android 使用 IJKPlayer 播放視頻流的實(shí)現(xiàn)代碼

    這篇文章主要介紹了android 使用 IJKPlayer 播放視頻流,這需要借助 IAndroidIO 這個(gè)接口,也可以用于播放本地文件,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-11-11
  • Android百度地圖之方向感應(yīng)和模式更改

    Android百度地圖之方向感應(yīng)和模式更改

    這篇文章主要為大家詳細(xì)介紹了Android百度地圖之方向感應(yīng)和模式更改,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • Android實(shí)現(xiàn)視圖輪播效果

    Android實(shí)現(xiàn)視圖輪播效果

    這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)視圖輪播效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • Android仿QQ微信未讀消息小紅點(diǎn)BadgeHelper

    Android仿QQ微信未讀消息小紅點(diǎn)BadgeHelper

    這篇文章主要介紹了Android仿QQ微信未讀消息小紅點(diǎn)的實(shí)現(xiàn),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-09-09
  • Android 夜間模式的實(shí)現(xiàn)代碼示例

    Android 夜間模式的實(shí)現(xiàn)代碼示例

    本篇文章主要介紹了Android 夜間模式的實(shí)現(xiàn)代碼示例,實(shí)現(xiàn)能夠根據(jù)不同的設(shè)定,呈現(xiàn)不同風(fēng)格的界面給用戶,有興趣的可以了解一下。
    2017-03-03
  • item高度不同時(shí)Recyclerview獲取滑動(dòng)距離的方法

    item高度不同時(shí)Recyclerview獲取滑動(dòng)距離的方法

    這篇文章主要介紹了item高度不同時(shí)Recyclerview獲取滑動(dòng)距離的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-11-11
  • Notification自定義界面

    Notification自定義界面

    這篇文章主要為大家詳細(xì)介紹了Notification自定義界面的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • Kotlin中的5種單例模式示例詳解

    Kotlin中的5種單例模式示例詳解

    這篇文章主要給大家介紹了關(guān)于Kotlin中5種單例模式的相關(guān)資料,分別包括了餓漢式、懶漢式 、線程安全的懶漢式 、雙重校驗(yàn)鎖式以及靜態(tài)內(nèi)部類式,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2018-08-08
  • Android?Studio實(shí)現(xiàn)智能聊天

    Android?Studio實(shí)現(xiàn)智能聊天

    這篇文章主要為大家詳細(xì)介紹了Android?Studio實(shí)現(xiàn)智能聊天,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • android 引導(dǎo)界面的實(shí)現(xiàn)方法

    android 引導(dǎo)界面的實(shí)現(xiàn)方法

    現(xiàn)在越來越多程序都有引導(dǎo)頁面了。網(wǎng)上資料不全?,F(xiàn)在自己實(shí)現(xiàn)下。
    2013-06-06

最新評(píng)論