1. 程式人生 > >string.xml 的作用以及意義——國際化應用

string.xml 的作用以及意義——國際化應用

為什麼需要把應用中出現的文字單獨存放在string.xml檔案中呢?

一:是為了國際化,當需要國際化時,只需要再提供一個string.xml檔案,把裡面的漢子資訊都修改為對應的語言(如,English),再執行程式時,android作業系統會根據使用者手機的語言環境和國家來自動選擇相應的string.xml檔案,這時手機介面就會顯示出英文。這樣做國際化非常的方便。

二:為了減少應用的體積,降低資料的冗餘。假設在應用中要使用"我們一直在努力"這段文字1000次,如果在每次使用時直接寫上這幾個字,這樣下來程式中將有70000個字,這70000個字佔136KB的空間。而由於手機的資源有限,其CPU的處理能力及記憶體是非常有限的,   136KB 對手機記憶體來說是個不小的空間,我們在做手機應用是一定要記住“能省記憶體就省記憶體”。而如果將這幾個字定義在string.xml中,在每次使用到的地方通過Resources類來引用該文字,只佔用到了14B,因此對降低應用體積效果是非常有效地.當然我們可能在開發時可能並不會用到這麼多的文字資訊,但是,作為手機應用開發人員,我們一定要養成良好的程式設計習慣。

獲取string.xml檔案裡面的值有幾個不同的地方。

1.在AndroidManifest.xml與layout等xml檔案裡:

android:text="@string/resource_name" 

2.在activity裡:

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

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

3.在其他java檔案(必須有Context或pplication)

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

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

android中string.xml檔案的使用

1.在程式中獲取string.xml中字串和數值

<?xml version="1.0" encoding="utf-8"?>

<resources>

    <string name="hello">Hello World, MainActivity!</string>

    <string name="app_name">TestExample01</string>

</resources>

在Activity中使用:

String appName=(String) this.getResources().getText(R.string.app_name);

或者:

String appName=(String) this.getResources().getString(R.string.app_name);

2.定義string陣列(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.string.sports);

3.定義顏色(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);

4.定義尺寸(dimens.xml)

<?xml version="1.0" encoding="utf-8"?>

<resources>

   <dimen name="height">80dip</dimen>

</resources>

---getResource().getDimension(R.string.height);

5.定義樣式(styles.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>




assets資料夾資源的訪問

assets資料夾裡面的檔案都是保持原始的檔案格式,需要用AssetManager以位元組流的形式讀取檔案。

1. 先在Activity裡面呼叫getAssets() 來獲取AssetManager引用。

2. 再用AssetManager的open(String fileName, int accessMode) 方法則指定讀取的檔案以及訪問模式就能得到輸入流InputStream。 

3. 然後就是用已經open file 的inputStream讀取檔案,讀取完成後記得inputStream.close() 。

4.呼叫AssetManager.close() 關閉AssetManager。

需要注意的是,來自Resources和Assets 中的檔案只可以讀取而不能進行寫的操作

以下為從Raw檔案中讀取:

   public String getFromRaw(){ 

            try { 

                InputStreamReader inputReader = new InputStreamReader(getResources().openRawResource(R.raw.test1));

                BufferedReader bufReader = new BufferedReader(inputReader);

                String line="";

                String Result="";

                while((line = bufReader.readLine()) != null)

                    Result += line;

                return Result;

            } catch (Exception e) { 

                e.printStackTrace(); 

            }             

    } 

以下為直接從assets讀取

    public String getFromAssets(String fileName){ 

            try { 

                 InputStreamReader inputReader = new InputStreamReader(getResources().getAssets().open(fileName) ); 

                BufferedReader bufReader = new BufferedReader(inputReader);

                String line="";

                String Result="";

                while((line = bufReader.readLine()) != null)

                    Result += line;

                return Result;

            } catch (Exception e) { 

                e.printStackTrace(); 

            }

    } 

當然如果你要得到記憶體流的話也可以直接返回記憶體流!

相關推薦

string.xml作用以及意義——國際化應用

為什麼需要把應用中出現的文字單獨存放在string.xml檔案中呢? 一:是為了國際化,當需要國際化時,只需要再提供一個string.xml檔案,把裡面的漢子資訊都修改為對應的語言(如,English),再執行程式時,android作業系統會根據使用者手機的語言環境和國

__init__.py 檔案的作用以及意義

      這個檔案(這個檔案定義了包的屬性和方法)其實它可以什麼也不定義;可以只是一個空檔案,但是必須存在。如果 __init__.py 不存在,這個目錄就僅僅是一個目錄,而不是一個包,它就不能被匯入或者包含其它的模組和巢狀包。或者可以這樣理解。這樣,當我們匯入這個包的時候

國際化從伺服器獲取string.xml內容 要考慮的

1、/res 下面的內容不允許執行時修改; 2、針對Android UI 生成特定的string檔案; 3、文字間的空格(比如:<string name="action_sign_in">登\u0020\u0020錄</string>); 4、字串之間的佔位符(比

CSS3中box-sizing屬性的作用以及應用場景

盒模型box-sizing: 取值 1.content-box 預設值,標準盒模型,設定寬度為內容寬度,實際寬度為左右邊距加上左右邊框加上左右填充再加上內容寬度 2.border-box 設定寬度等於元素內容寬度,content包含了元素的border和padding 3.inherit 繼承父元素的

Lucene的作用以及應用

                Lucene是一套用於全文檢索和搜尋的開源程式庫,由Apache軟體基金會支援和提供。Lucene提供了一個簡單卻強大的應用程式介面,能夠做全文索引和搜尋。在Java開

Android開發中string.xml檔案存在的意義

為什麼需要把應用中出現的文字單獨存放在string.xml文中呢? 一:是為了國際化,Android建議將在螢幕上顯示的文字定義在strings.xml中,如果今後需要進行國際化,比如我們開發的應用本來是面向國內使用者的,當然在螢幕上使用中文,而如今我們要讓應用走

安卓應用使用字串:values/String.xml

一般安卓應用中用到的字串資源,都不在activity_main.xml中,而是放在values目錄下的String.xml裡。 寫一個string的資源,例如: <String name="name">名字</String> 其中 name相當於I

java解析xml文件練習——通過應用包名獲取應用圖標即其他信息(基於魅族應用商店)

fin vma tdm row con smartd enter music close 1、解析包名數據文件(txt文件),並生成包名數組: package jsouphtml; import java.io.BufferedReader; import j

事務的作用以及了解(原文來源於其他博文)

ram 代碼量 動態代理 n) 但是 表示 mit exe 永久 首先,說說什麽事務 (Transaction)。 事務,就是一組操作數據庫的動作集合。 事務是現代數據庫理論中的核心概念之一。如果一組處理步驟或者全部發生或者一步也不執行,我們稱該組處理步驟為一個事務。當所

Java String 面試題以及答案

other dart ole ash 技術 目錄 不同 iter 存在 String是最常使用的Java類之一,整理的了一些重要的String知識分享給大家。 作為一個Java新手程序員,對String進行更深入的了解很有必要。如果你是有幾年Java開發經驗,可以根據目錄選

企業建設網站有什麽作用意義——企業公司必看!!!

用戶 提升 競爭 規模 永久 物流 網上 方便 開始 1,企業形象的展示與提升有利於提升企業形象企業網站的作用更類似於企業在報紙和電視上所做的宣傳 企業本身及品牌的廣告。不同的是,企業網站的容量較大,企業可以把任何客戶想 要的信息和公眾的內容放到網站上。此外,企業網站的投資

54.string field聚合以及fielddata原理初探

word 設置 OS ever 磁盤 進行 fault 微軟 但是 主要知識點: 直接對分詞的term進行聚合後果 設置fielddata=true 直接用.keyword進行聚合 doc value 的性能問題 一、直接對分詞的term進行

python 學習 D7 遍歷字典的集中方法 集合的作用 以及增刪查

返回值 大小 ren span font enc 遍歷字典 list style 遍歷字典的幾種方法: dic = {‘a‘: ‘1‘, ‘b‘: ‘2‘, ‘c‘: ‘3‘} # 1 遍歷key值 # for key in dic: # print(key, d

Tomcat安裝部署和安全加固優化以及反向代理應用

proto 用戶 app home con 配置文件 ftw 並發 環境變量 1、Tomcat介紹 Tomcat是Apache軟件基金會(Apache Software Foundation)的Jakarta 項目中的一個核心項目,由Apache、Sun和其他一些公司及個人

Flask-Migrate的作用以及安裝

更新數據 div eat 了解 ins class ade 文件 重新 1.因為采用db.create_all() 在後期修改表字段時,不會自動映射到數據庫中,必須刪除表,然後重新運行才會映射,這樣不符合實際的需求,因此flask-Migrate就是為了解決這個問題,它可以

Java提高篇——理解StringString.intern() 在實際中的應用

部分 In 實例 補充 targe java 默認 target 常量池 1. 首先String不屬於8種基本數據類型,String是一個對象。     因為對象的默認值是null,所以String的默認值也是null;但它又是一種特殊的對象,有其它對象沒有的一些特性。

匯編中中括號[]作用以及lea和mov指令的區別

article truct err csdn 指針 valid tail 支持 art 現在總結一下:其中牽扯到lea指令,mov指令,[] 一.lea指令:對於寄存器來說:第二個操作數是寄存器必須要加[],不然報錯,這裏lea就是取[寄存器]的值,如:mov eax,2

withRouter的作用和一個簡單應用

通過 必須 情況下 style route 瀏覽器中 type red 用途 作用:把不是通過路由切換過來的組件中,將react-router 的 history、location、match 三個對象傳入props對象上 默認情況下必須是經過路由匹配渲染的組件才存在t

物聯網IoT WiFi+藍牙雙模模塊如何作用於物聯網應用

內嵌 溫度 模塊 mes tle hrp fde https 隨著 以WiFi、藍牙、ZigBee為主的無線通信技術為生產、醫療、家居、環境檢測、公共安全等各個領域物體與物體之間,人與物體之間,乃至人與自然萬物之間的順暢溝通創造無限可能。近年來隨著霧霾和汙染的嚴重,空氣凈化

解析url中的#、&、?的作用意義

twitter改版,一個顯著變化,就是URL加入了"#!"符號。比如,改版前的使用者主頁網址為 http://twitter.com/username 改版後,就變成了 http://twitter.com/#!/username 這是主流網站第一次將"#"大規模用於重要