作为积累,不定时添加
package com.chg.utils;
import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.widget.Toast;
import java.io.InputStream;
import java.util.HashMap;
import java.util.List;
/**
* Created by g on 2016/10/24.
*/
public class Utils {
private static Toast toast;
/**
* 避免弹出多个Toast
* @param context
* @param content
*/
public static void showToast(Context context,
String content) {
if (toast == null) {
toast = Toast.makeText(context,
content,
Toast.LENGTH_SHORT);
} else {
toast.setText(content);
}
toast.show();
}
/**
* 通过资源文件获取bitmap
* @param context 上下文
* @param resource 资源文件
* @param SampleSize 压缩比例
* @return 返回bitmap
*/
public static Bitmap readBitmap(Context context,int resource,int SampleSize ){
InputStream is = context.getResources().openRawResource(resource);
//为位图设置100K的缓存
BitmapFactory.Options opts=new BitmapFactory.Options();
opts.inTempStorage = new byte[100 * 1024];
//设置位图颜色显示优化方式
opts.inPreferredConfig = Bitmap.Config.RGB_565;
//设置图片可以被回收,创建Bitmap用于存储Pixel的内存空间在系统内存不足时可以被回收
opts.inPurgeable = true;
//设置位图缩放比例
opts.inSampleSize = SampleSize;
//设置解码位图的尺寸信息
opts.inInputShareable = true;
return BitmapFactory.decodeStream(is,null, opts);
}
/**
* 通过输入流获取Bitmap
* @param is 输入流
* @param SampleSize 压缩比例
* @return
*/
public static Bitmap readBitmap(InputStream is,int SampleSize ){
//为位图设置100K的缓存
if(is==null)return null;
BitmapFactory.Options opts=new BitmapFactory.Options();
opts.inTempStorage = new byte[100 * 1024];
//设置位图颜色显示优化方式
opts.inPreferredConfig = Bitmap.Config.RGB_565;
//设置图片可以被回收,创建Bitmap用于存储Pixel的内存空间在系统内存不足时可以被回收
opts.inPurgeable = true;
//设置位图缩放比例
opts.inSampleSize = SampleSize;
//设置解码位图的尺寸信息
opts.inInputShareable = true;
return BitmapFactory.decodeStream(is,null, opts);
}
/**
*SharedPreferences储存
* @param context 上下文
* @param name SharedPreferences名称
* @param key 保存键
* @param values 保存值
* @return 返回是否成功
*/
public static boolean saveSharePreference(Context context,String name, List<String> key,List<String> values){
if(key==null||values==null||key.size()!=values.size())return false; //为空返回false
SharedPreferences sharedPreferences = context.getSharedPreferences(name, Activity.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
for (int i = 0; i < key.size(); i++) {
editor.putString(key.get(i),values.get(i));
}
editor.commit();
return true;
}
/**
*SharedPreferences获取数据
* @param context 上下文
* @param name SharedPreferences名称
* @param key 键,需要取的键
* @return 返回hashMap
*/
public static HashMap<String,String> getSharePreference(Context context, String name, List<String> key){
HashMap<String,String> value=new HashMap<>();
SharedPreferences sharedPreferences = context.getSharedPreferences(name, Activity.MODE_PRIVATE);
for (int i = 0; i < key.size(); i++) {
value.put(key.get(i),sharedPreferences.getString(key.get(i),""));
}
return value;
}
}
/**
* 将Assets文件保存到本地
*
* @param context
* @param assetsFile assets里面文件路径
* @param sdFile 需要保存的SD卡路径
* @param newName 文件名
* @return 返回保存好后的文件路径
*/
public static String saveAssets(Context context, String assetsFile, String sdFile, String newName) {
try {
InputStream abpath = context.getAssets().open(assetsFile);
String path = Environment.getExternalStorageDirectory().getAbsolutePath() + sdFile;
File file = new File(path);
if (!file.exists()) {
file.mkdirs();
}
path = path + "/" + newName;
FileOutputStream fos = new FileOutputStream(path);
byte[] buffer = new byte[1024];
int byteCount = 0;
while ((byteCount = abpath.read(buffer)) != -1) {//循环从输入流读取 buffer字节
fos.write(buffer, 0, byteCount);//将读取的输入流写入到输出流
}
fos.flush();//刷新缓冲区
fos.close();
abpath.close();
return path;
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
/**
* 将assets文件拷贝到本地
* @param context
* @param assetsPath 需要复制的assets文件名
* @param sdPath sd卡路径 如:/abc
*/
public static void copyFileOrDir(Context context, String assetsPath,String sdPath) {
AssetManager assetManager = context.getAssets();
String assets[] = null;
try {
assets = assetManager.list(assetsPath);
if (assets.length == 0) {
String file=sdPath+"/"+assetsPath.substring(0,assetsPath.lastIndexOf("/"));
String name=assetsPath.substring(assetsPath.lastIndexOf("/")+1,assetsPath.length());
saveAssets(context,assetsPath,file,name);
} else {
String fullPath = Environment.getExternalStorageDirectory().getAbsolutePath()+ sdPath+"/"+assetsPath;
File dir = new File(fullPath);
if (!dir.exists())
dir.mkdir();
for (int i = 0; i < assets.length; ++i) {
copyFileOrDir(context, assetsPath + "/" + assets[i], sdPath);
}
}
} catch (IOException ex) {
}
}