功能目的
將app需要將代碼中經常改動的常量,以Properties的方式放到assets目錄下,在修改常量時,將不需要改動代碼,直接修改配置Properties文件即可.
實現過程
1) 在項目的app/src/main/下如圖創建assets目錄
image.png
image.png
2)創建properties文件
在創建好的assets目錄下創建我們需要的properties文件
例子中properties中名字:my.properties
3)properties書寫規范
my.properties中內容為我們需要保存的會經常變動的常量,以Key=Value的形式書寫,多常量,以換行分隔,如圖:image.png
4)獲取properties文件的Java代碼
Properties properties = new Properties();
try {
properties.load(getAssets().open("my.properties"));
Log.e("mengqi","hello:" + properties.getProperty("hello"));
Log.e("mengqi","hi :" + properties.getProperty("hi"));
} catch (IOException e) {
e.printStackTrace();
}
其中Properties為java.util包下的系統類,可以直接使用,調用load接口,使用InputStream作為參數,
參數為從assets目錄下讀取文件(過程是獲取AssetManager實例load進my.properties文件,獲取InputStream),獲取InputStream對象,
執行完畢,Properties實例加載成功.通過實例方法getProperty(key),獲取key對應的value值.
如此這般,通過將經常變動的常量寫入Properties后,再通過Java代碼獲取的整體的流程執行完畢了
下面看下執行結果
image.png
發現問題
在Properties中出現的中文,獲取后為亂碼,首先償試有沒有替換getProerty(key)接口的其它接口,發現沒有,創建Properties實例的構造方法有沒有,也沒有發現與編碼相關的構造方法.最后還是google/百度,找到了解決變法.將下圖中的transparent native-to-ascii conversion勾選(大致意思是透明的(對開發者而言吧)將本地編碼轉換成ascii碼)
image.png
再次執行,查看結果如下
image.png
總結
這只是一種方式將經常變動的常量從代碼中提取出來的方式,還有其它方法實現,感覺還算是簡單.過程相對簡單,注意下value為中文的情況,使用起來,還是很方便的