功能目的
将app需要将代码中经常改动的常量,以Properties的方式放到assets目录下,在修改常量时,将不需要改动代码,直接修改配置Properties文件即可.
实现过程
1) 在项目的app/src/main/下如图创建assets目录
2)创建properties文件
在创建好的assets目录下创建我们需要的properties文件
例子中properties中名字:my.properties
3)properties书写规范
my.properties中内容为我们需要保存的会经常变动的常量,以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包下的系统类,可以直接使用,调用load接口,使用InputStream作为参数,
参数为从assets目录下读取文件(过程是获取AssetManager实例load进my.properties文件,获取InputStream),获取InputStream对象,
执行完毕,Properties实例加载成功.通过实例方法getProperty(key),获取key对应的value值.
如此这般,通过将经常变动的常量写入Properties后,再通过Java代码获取的整体的流程执行完毕了
下面看下执行结果
发现问题
在Properties中出现的中文,获取后为乱码,首先偿试有没有替换getProerty(key)接口的其它接口,发现没有,创建Properties实例的构造方法有没有,也没有发现与编码相关的构造方法.最后还是google/百度,找到了解决变法.将下图中的transparent native-to-ascii conversion勾选(大致意思是透明的(对开发者而言吧)将本地编码转换成ascii码)
再次执行,查看结果如下
总结
这只是一种方式将经常变动的常量从代码中提取出来的方式,还有其它方法实现,感觉还算是简单.过程相对简单,注意下value为中文的情况,使用起来,还是很方便的