文件资源(raw/data/asset)的存取
- 私有文件下的文件存取(/data/data/包名)
public void weiteFileData(String fileName, String message){
try{
FileOutputStream fout = openFileOutput(fileName, MODE_PRIVATE);
byte[] bytes = message.getBytes();
fout.write(bytes);
fout.close();
}catch(Exception e){
e.ptintStackTrace();
}
}
public String readFileData(String fileName){
String res = "";
try{
FileInputStrem fin = openFileInput(fileName);
int length = fin.available();
byte[] buffer = new byte[lenght];
fin.read(buffer);
res = EncodingUtils.getString(buffer, "UTF-8");
fin.close();
}catch(Exception e){
e.ptintStackTrace();
}
return res;
}
- 从raw读取资源(这里的资源文件只能读不能写)
public String getFromRaw(String fileName){
String res = "";
try{
InputStream in = getResources().openRawResource(R.raw.test1);
int length = in.available();
byte[] buffer = new byte[length];
in.read(buffer);
res = EncodingUtils.getString(buffer, "UTF-8");
in.close();
}catch(Exception e){
e.ptintStackTrace();
}
return res;
}
- 从asset读取资源(这里的资源文件只能读不能写)
public String getFromAsset(String fileName){
String res = "";
try{
InputStream in = getResources().getAssets().open(fileName);
int length = in.available();
byte[] buffer = new byte[length];
in.read(buffer);
res = EncodingUtils.getString(buffer, "UTF-8");
in.close();
}catch(Exception e){
e.ptintStackTrace();
}
return res;
}
Android对Drawable对象的优化
Android本身就对Drawable进行了优化,例如,当每次创建一个按钮时,一个新的Drawable就会被装载,这就意味着应用程序中所有使用不同Drawable对象实现不同的背景的按钮,所有的Drawable对象公用一个公用的状态,称之为“constant state(常态)”。如此一来,一个按钮将共享一张位图,节省了资源。
Drawable star = context.getResources().getDrawable(R.drawable.star);
if(book.isFavorite()){
star.setAlpha(255);
}else{
star.setAlpha(70);
}
以上代码运行后,你会发现即使判断了isFavorite后,使用同一资源的两张图的透明度都是一样的,这是因为它们拥有同样的“constant state”,所以透明值这个属性常量是一样的。
Drawable对象下,我们可以利用mutate()方法处理这个问题,使这个对象不会因为复制而影响其他对象。但是在Bitmap对象下,mutate()方法无法解决这个问题。
Drawable star = context.getResources().getDrawable(R.drawable.star);
if(book.isFavorite()){
star.mutate().setAlpha(255);
}else{
star.mutate().setAlpha(70);
}
建议使用Drawable,而不是Bitmap
使用Drawable保存图片对象,占用更小的内存空间,而使用Bitmap对象,则会占用很大的内存空间。