安卓工具集

作为积累,不定时添加

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) {
        }
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值