功能目的
將app需要將代碼中經(jīng)常改動的常量,以Properties的方式放到assets目錄下,在修改常量時(shí),將不需要改動代碼,直接修改配置Properties文件即可.
實(shí)現(xiàn)過程
1) 在項(xiàng)目的app/src/main/下如圖創(chuàng)建assets目錄
image.png
2)創(chuàng)建properties文件
在創(chuàng)建好的assets目錄下創(chuàng)建我們需要的properties文件
例子中properties中名字:my.properties
3)properties書寫規(guī)范
my.properties中內(nèi)容為我們需要保存的會經(jīng)常變動的常量,以Key=Value的形式書寫,多常量,以換行分隔,如圖: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包下的系統(tǒng)類,可以直接使用,調(diào)用load接口,使用InputStream作為參數(shù),
參數(shù)為從assets目錄下讀取文件(過程是獲取AssetManager實(shí)例load進(jìn)my.properties文件,獲取InputStream),獲取InputStream對象,
執(zhí)行完畢,Properties實(shí)例加載成功.通過實(shí)例方法getProperty(key),獲取key對應(yīng)的value值.
如此這般,通過將經(jīng)常變動的常量寫入Properties后,再通過Java代碼獲取的整體的流程執(zhí)行完畢了
下面看下執(zhí)行結(jié)果
發(fā)現(xiàn)問題
在Properties中出現(xiàn)的中文,獲取后為亂碼,首先償試有沒有替換getProerty(key)接口的其它接口,發(fā)現(xiàn)沒有,創(chuàng)建Properties實(shí)例的構(gòu)造方法有沒有,也沒有發(fā)現(xiàn)與編碼相關(guān)的構(gòu)造方法.最后還是google/百度,找到了解決變法.將下圖中的transparent native-to-ascii conversion勾選(大致意思是透明的(對開發(fā)者而言吧)將本地編碼轉(zhuǎn)換成ascii碼)
再次執(zhí)行,查看結(jié)果如下
總結(jié)
這只是一種方式將經(jīng)常變動的常量從代碼中提取出來的方式,還有其它方法實(shí)現(xiàn),感覺還算是簡單.過程相對簡單,注意下value為中文的情況,使用起來,還是很方便的