最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

不可不知的Android strings.xml那些事

 更新時間:2016年08月08日 11:37:38   作者:Hevin丶  
相信 strings.xml 已經(jīng)是大家在 Android 開發(fā)中最熟悉的文件之一了,但其實它也有很多需要注意的地方和一些小技巧,知道了這些可以讓你的 Android 應用更加規(guī)范易用,大家來看看吧

strings.xml 有很多需要注意的地方和一些小技巧,知道了這些可以讓你的 Android 應用更加規(guī)范易用,感興趣的小伙伴們可以參考一下 

不要復用
 這一條可能很多人會有不同的意見,因為廣為流行的編程理念就在教導我們要復用代碼,當然代碼復用是很好的理念,可以讓程序更加簡潔。但也容易形成什么都想復用的思維慣性,而這在某些場景下就可能會造成麻煩。

 比如,想象下你在應用中的登錄和注冊界面中都是用了相同的字符串 – R.string.loading.
 <string name="loading">Loading...</string>
之后如果產(chǎn)品需求變更,要分別使用不同的提示語,那就不得不新創(chuàng)建兩個 string 并在代碼中配置它們。所以如果從一開始就為不同頁面分別配置,那需要做的就僅僅是修改下 strings.xml 文件。
 <string name="sign_in_loading">正在登錄...</string>
<string name="sign_up_loading">正在注冊...</string>
更容易忽略的一個原因是,如果你們的應用不想只是面對國內(nèi)用戶,還要面對其他語系的用戶的話,有些語言可能會造成意想不到的問題。 

因為一些語言同樣一個意思在不同的語境下,會用到不同的單詞,個中滋味經(jīng)歷過的自然會懂。 

良好的文件結(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 --> 

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

格式化 

千萬不要使用字符串拼接的方法,因為不同語言的句子順序是多樣的,字符串拼接會讓你的邏輯非常復雜。 

這個時候就可以考慮使用字符串格式化了:
 <string name="welcome_messages">Hello, %1$s! You have %2$d new messages.</string>
%1$s 代表了會格式化的字符串,%2$d 代表了會格式化的數(shù)值并在第二的位置,大家可以以此類推。

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

 不要像下面這樣在你的 Java 代碼中處理單詞復數(shù)問題,因為不同的語言針對復數(shù)會有不同的語法規(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);
} 

正確的做法應該是使用 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. 

當然 Quantity String 不僅支持 one,還支持 zero, two, few, many 和 other。
可以自由決定各自情況下,使用什么詞語(當然,在中文環(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.

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

文本高亮
 大家可能知道用 ForegroundColorSpan 或 SpannableStringBuilder 能夠高亮一段文本中的某些內(nèi)容,但這對于多語言應用來說可能并不是最好的方式,因為這兩個方法都要依靠待高亮文字的具體位置作為參數(shù)。如果應用需要支持的語言多了之后,這就會寫大量的 Java 代碼,和頻繁計算待高亮內(nèi)容位置。
 這個時候就可以試試用 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))); 

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

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

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Android中 自定義數(shù)據(jù)綁定適配器BaseAdapter的方法

    Android中 自定義數(shù)據(jù)綁定適配器BaseAdapter的方法

    本篇文章小編為大家介紹,Android中 自定義數(shù)據(jù)綁定適配器BaseAdapter的方法。需要的朋友參考下
    2013-04-04
  • Android中activity從創(chuàng)建到顯示的基本介紹

    Android中activity從創(chuàng)建到顯示的基本介紹

    這篇文章主要給大家介紹了關(guān)于Android中activity從創(chuàng)建到顯示的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對各位Android初學者們具有一定的參考學習價值,需要的朋友們下面隨著小編來一起看看吧。
    2017-11-11
  • android 禁止第三方apk安裝和卸載的方法詳解

    android 禁止第三方apk安裝和卸載的方法詳解

    這篇文章主要介紹了android 禁止第三方apk安裝和卸載,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11
  • Android中使用ViewFlipper進行手勢切換實例

    Android中使用ViewFlipper進行手勢切換實例

    這篇文章主要介紹了Android中使用ViewFlipper進行手勢切換的方法,以實例形式詳細講述了XML文件的定義及功能函數(shù)的實現(xiàn)過程,需要的朋友可以參考下
    2014-10-10
  • Android實現(xiàn)幾種推送方式解決方案

    Android實現(xiàn)幾種推送方式解決方案

    推送功能在手機開發(fā)中應用的場景是越來起來了,本篇文章主要介紹了Android實現(xiàn)幾種推送方式解決方案 ,具有一定的參考價值,有興趣的可以了解一下。
    2016-12-12
  • Flutter網(wǎng)絡(luò)請求庫DIO的基本使用

    Flutter網(wǎng)絡(luò)請求庫DIO的基本使用

    這篇文章主要介紹了Flutter網(wǎng)絡(luò)請求庫DIO的基本使用,幫助大家更好的理解和學習使用Flutter,感興趣的朋友可以了解下
    2021-04-04
  • react native打包apk文件安裝好之后進入應用閃退的解決方案

    react native打包apk文件安裝好之后進入應用閃退的解決方案

    這篇文章主要介紹了react native打包apk文件安裝好之后進入應用閃退的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • Android?AMS啟動App進程原理分析

    Android?AMS啟動App進程原理分析

    這篇文章主要介紹了Android?AMS啟動App進程原理,系統(tǒng)fork函數(shù)是如何創(chuàng)建進程,文中有詳細的代碼示例,對大家的學習或工作有一定的幫助,需要的朋友可以參考下
    2023-05-05
  • Android中SharedPreference使用實例講解

    Android中SharedPreference使用實例講解

    這篇文章主要介紹了Android中SharedPreference使用方法,實現(xiàn)登陸界面記住密碼功能,感興趣的小伙伴們可以參考一下
    2016-01-01
  • Android通過bin二進制程序調(diào)用jar原理

    Android通過bin二進制程序調(diào)用jar原理

    最近在研究monkey測試,發(fā)現(xiàn)monkey測試的代碼都是JAVA編寫的,通過編譯生成jar包,而我們在執(zhí)行測試時直接執(zhí)行/system/bin/monkey這個二進制程序的,那么它是如何能調(diào)起java程序的呢,本文小編給大家介紹了Android通過bin二進制程序調(diào)用jar原理,需要的朋友可以參考下
    2023-10-10

最新評論

陈巴尔虎旗| 台东市| 黔南| 济宁市| 昂仁县| 教育| 滁州市| 碌曲县| 乐山市| 通许县| 盈江县| 昭苏县| 九江市| 芮城县| 中超| 沂源县| 荣成市| 兴安县| 大荔县| 吉木萨尔县| 太康县| 清远市| 铜陵市| 五寨县| 乡宁县| 四平市| 唐山市| 界首市| 昆明市| 丹阳市| 长岛县| 吕梁市| 甘南县| 建平县| 东明县| 和龙市| 原平市| 会宁县| 哈密市| 乐清市| 德昌县|