亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

項目工具類

2019-11-07 23:02:26
字體:
來源:轉載
供稿:網友

package com.example.zhiyuan.teacheryunifang.utils;

import android.content.Context;import android.graphics.Bitmap;import com.example.zhiyuan.teacheryunifang.R;import com.nostra13.universalimageloader.core.DisplayImageOptions;import com.nostra13.universalimageloader.core.ImageLoader;import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;import com.nostra13.universalimageloader.core.ImageLoaderConfiguration.Builder;import com.nostra13.universalimageloader.core.assist.ImageScaleType;import com.nostra13.universalimageloader.core.display.FadeInBitmapDisplayer;import com.nostra13.universalimageloader.core.display.RoundedBitmapDisplayer;public class ImageLoaderUtils {    /**     * 初始化ImageLoaderConfiguration 這個可以只做簡單的初始化,此方法建議在     * application中進行初始化     *     * @param context     */    public static void initConfiguration(Context context) {        Builder configuration = new ImageLoaderConfiguration.Builder(context);//--------------------------------------------------------------------//    本段代碼,如果是測試使用時,可以不添加,不影響ImageLoader的正常使用//      configuration.memoryCacheExtraOptions(480, 800)//      // default = device screen dimensions//      // 緩存到磁盤中的圖片寬高//              .diskCacheExtraOptions(480, 800, null)//              // .taskExecutor(null)//              // .taskExecutorForCachedImages()//              .threadPoolSize(3)//              // default 線程優先級//              .threadPRiority(Thread.NORM_PRIORITY - 2)//              // default//              .tasksProcessingOrder(QueueProcessingType.FIFO)//              // // default設置在內存中緩存圖像的多種尺寸//              // 加載同一URL圖片時,imageView從小變大時,從內存緩存中加載//              .denyCacheImageMultipleSizesInMemory()//              // 超過設定的緩存大小時,內存緩存的清除機制//              .memoryCache(new LruMemoryCache(2 * 1024 * 1024))//              // 內存的一個大小//              .memoryCacheSize(2 * 1024 * 1024).memoryCacheSizePercentage(13)//              // default 將圖片信息緩存到該路徑下//              // default 磁盤緩存的大小//              .diskCacheSize(50 * 1024 * 1024)//              // 磁盤緩存文件的個數//              .diskCacheFileCount(100)//              // 磁盤緩存的文件名的命名方式//一般使用默認值 (獲取文件名稱的hashcode然后轉換成字符串)或md5 new//              // Md5FileNameGenerator()源文件的名稱同過md5加密后保存//              .diskCacheFileNameGenerator(new HashCodeFileNameGenerator())//              // 設置默認的圖片加載//              // 使用默認的圖片解析器//              .imageDecoder(new BaseImageDecoder(true)) // default//              .defaultDisplayImageOptions(DisplayImageOptions.createSimple())//              .writeDebugLogs();//---------------------------------------------------------------------        ImageLoader.getInstance().init(configuration.build());    }    /**     * 初始化DisplayImageOptions     *     * @param     * @return     */    public static DisplayImageOptions initOptions() {        DisplayImageOptions options = new DisplayImageOptions.Builder()                // 設置圖片在下載期間顯示的圖片                .showImageOnLoading(R.mipmap.ic_empty_page)                // 設置圖片Uri為空或是錯誤的時候顯示的圖片                .showImageOnFail(R.mipmap.ic_empty_page)                // 設置下載的圖片是否緩存在內存中                .cacheInMemory(true)                // 設置下載的圖片是否緩存在SD卡中                .cacheOnDisc(true)//--------------------------------------------------------------------//如果您只想簡單使用ImageLoader這塊也可以不用配置                // 是否考慮JPEG圖像EXIF參數(旋轉,翻轉)                .considerExifParams(true)                // 設置圖片以如何的編碼方式顯示                .imageScaleType(ImageScaleType.EXACTLY_STRETCHED)                // 設置圖片的解碼類型//                .bitmapConfig(Bitmap.Config.RGB_565)                // 設置圖片的解碼配置                // .decodingOptions(options)                // .delayBeforeLoading(int delayInMillis)//int                // delayInMillis為你設置的下載前的延遲時間                // 設置圖片加入緩存前,對bitmap進行設置                // .preProcessor(BitmapProcessor preProcessor)                // 設置圖片在下載前是否重置,復位                .resetViewBeforeLoading(true)                // 是否設置為圓角,弧度為多少                .displayer(new RoundedBitmapDisplayer(20))                // 是否圖片加載好后漸入的動畫時間                .displayer(new FadeInBitmapDisplayer(100))                // 構建完成//-------------------------------------------------------------------                .build();        return options;    }

}

-----------------------------------------------------------------------------------------------

   SDcard讀寫工具

--------------------------------------------------------------------

package com.ynf.app.utils;import android.content.Context;import android.os.Environment;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.io.OptionalDataException;import java.io.StreamCorruptedException;import java.text.DecimalFormat;/** * @author: Leiqiuyun * @date: 2016/3/21. */public class SdCardCache {    public static void saveInSdCard(Object loop, Context context, String filepath) {        if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {            //File sdCardDir = Environment.getExternalStorageDirectory();//獲取SDCard目錄            File sdFile = new File(context.getExternalFilesDir(""), filepath);            try {                FileOutputStream fos = new FileOutputStream(sdFile);                ObjectOutputStream oos = new ObjectOutputStream(fos);                oos.writeObject(loop);// 寫入                fos.close(); // 關閉輸出流            } catch (FileNotFoundException e) {                // TODO Auto-generated catch block                e.printStackTrace();            } catch (IOException e) {                // TODO Auto-generated catch block                e.printStackTrace();            }            //Toast.makeText(WebviewTencentActivity.this, "成功保存到sd卡", Toast.LENGTH_LONG).show();        }    }    public static Object readSdcard(Context context, String filepath) {        Object oAuth_1 = null;        //File sdCardDir = Environment.getExternalStorageDirectory();//獲取SDCard目錄        File sdFile = new File(context.getExternalFilesDir(""), filepath);        try {            FileInputStream fis = new FileInputStream(sdFile);   //獲得輸入流            ObjectInputStream ois = new ObjectInputStream(fis);            oAuth_1 = (Object) ois.readObject();            return oAuth_1;        } catch (StreamCorruptedException e) {            // TODO Auto-generated catch block            e.printStackTrace();        } catch (OptionalDataException e) {            // TODO Auto-generated catch block            e.printStackTrace();        } catch (FileNotFoundException e) {            // TODO Auto-generated catch block            e.printStackTrace();        } catch (IOException e) {            // TODO Auto-generated catch block            e.printStackTrace();        } catch (ClassNotFoundException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }        return oAuth_1;    }    /**     * // 轉換文件大小     *     * @param fileS     * @return     */    public static String formetFileSize(long fileS) {        DecimalFormat df = new DecimalFormat("#.00");        String fileSizeString = "";        if (fileS < 1024) {            fileSizeString = df.format((double) fileS) + "B";        } else if (fileS < 1048576) {            fileSizeString = df.format((double) fileS / 1024) + "K";        } else if (fileS < 1073741824) {            fileSizeString = df.format((double) fileS / 1048576) + "M";        } else {            fileSizeString = df.format((double) fileS / 1073741824) + "G";        }        return fileSizeString;    }    public static void deleteFile(File directory) {        if (directory != null && directory.exists() && directory.isDirectory()) {            for (File item : directory.listFiles()) {                item.delete();            }        }    }}

-------------------------------------

  md5加密工具

----------------------------------

 package com.example.zhiyuan.teacheryunifang.utils;import java.security.MessageDigest;public class MD5Encoder {/*** Md5Encoder* * @param string* @return* @throws Exception*/public static String encode(String string) throws Exception {byte[] hash = MessageDigest.getInstance("MD5").digest(string.getBytes("UTF-8"));StringBuilder hex = new StringBuilder(hash.length * 2);for (byte b : hash) {if ((b & 0xFF) < 0x10) {hex.append("0");}hex.append(Integer.toHexString(b & 0xFF));}return hex.toString();}}

-------------------------------------------------

 網絡請求緩存工具

----------------------------

package com.example.zhiyuan.teacheryunifang.Base;import android.text.TextUtils;import com.example.zhiyuan.teacheryunifang.manager.ThreadManager;import com.example.zhiyuan.teacheryunifang.utils.CommonUtils;import com.example.zhiyuan.teacheryunifang.utils.LogUtils;import com.example.zhiyuan.teacheryunifang.utils.MD5Encoder;import com.example.zhiyuan.teacheryunifang.utils.NetUtils;import org.xutils.common.Callback;import org.xutils.http.RequestParams;import org.xutils.x;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;/** * Created by zhiyuan on 16/8/31. */public abstract class BaseData<T> {    /**     * 網絡出錯     */    public static final int Error_Net = 100;    /**     * 請求出錯     */    public static final int Error_Request = 200;    public static final long LONGTTIME = 1000 * 60 * 60 * 72;    public static final long SHORTTIME = 1000 * 60 * 10;    public static final long NOTIME = 0;    public void getData(String path, String args, int index, long time) {        //判斷一下緩存時間,如果緩存時間為0,說明是要最新的時間,直接請求網絡獲取數據        if (time == 0) {            getDataFromNet(path, args, index, time);        } else {            //先看本地是否有數據            String data = getDataFromLocal(path, index, time);            //如果為空,說明本地沒有數據            if (TextUtils.isEmpty(data)) {                //再看網絡                getDataFromNet(path, args, index, time);            } else {                //如果從本地將數據請求到了數據,設置數據                setResultData(data);            }        }    }    /**     * 本類不知道如何設置數據,將設置數據的方法進行抽象     *     * @param data     */    public abstract void setResultData(String data);    private void getDataFromNet(final String path, String args, final int index, final long time) {        //先判斷網絡狀態        int netWorkType = NetUtils.getNetWorkType(CommonUtils.getContext());        //如果網絡狀態是可用的,就進行網絡請求        if (netWorkType != NetUtils.NETWORKTYPE_INVALID) {            //請求時,對數據進行拼接,path+args 路徑+參數            RequestParams requestParams = new RequestParams(path + args);            LogUtils.e("AAAAAAAAAAAAAAAAAA", path + args);            //開始請求網絡            x.http().get(requestParams, new Callback.CommonCallback<String>() {                @Override                public void onSuccess(final String json) {                    //請求數據成功之后,進行數據設置                    setResultData(json);                    //開啟線程,將數據寫到本地                    ThreadManager.getThreadPoolProxy().execute(new Runnable() {                        @Override                        public void run() {                            writeDataToLocal(json, path, index, time);                        }                    });                }                //請求失敗,將結果回傳                @Override                public void onError(Throwable throwable, boolean b) {                    setFailResult(Error_Request);                }                @Override                public void onCancelled(CancelledException e) {                }                @Override                public void onFinished() {                }            });        } else {            //網絡問題            setFailResult(Error_Net);        }    }    protected abstract void setFailResult(int error_Net);    /**     * 將數據寫到本地     *     * @param json     * @param path     * @param index     * @param time     */    private void writeDataToLocal(String json, String path, int index, long time) {        //獲取緩存路徑        File cacheDir = CommonUtils.getContext().getCacheDir();        File file = null;        try {            file = new File(cacheDir, MD5Encoder.encode(path + index));        } catch (Exception e) {            e.printStackTrace();        }        if (!file.exists()) {            try {                //創建該文件                file.createNewFile();            } catch (IOException e) {                e.printStackTrace();            }        }        BufferedWriter bufferedWriter = null;        try {            bufferedWriter = new BufferedWriter(new FileWriter(file.getAbsolutePath()));            //在文件第一行寫入當前時間+有效時間            //21408348372737+1000*60*60            bufferedWriter.write(System.currentTimeMillis() + time + "/r/n");            //寫入json            bufferedWriter.write(json);            //數據刷新            bufferedWriter.flush();        } catch (IOException e) {            e.printStackTrace();        } finally {            try {                if (bufferedWriter != null)                    bufferedWriter.close();            } catch (IOException e) {                e.printStackTrace();            }        }    }    /**     * 從本地獲取信息     *     * @param path     * @param index     * @param time  @return     */    private String getDataFromLocal(String path, int index, long time) {        //獲取本地路徑        File cacheDir = CommonUtils.getContext().getCacheDir();        File file = null;        try {            //找到和寫入時對應的文件名稱            file = new File(cacheDir, MD5Encoder.encode(path + index));        } catch (Exception e) {            e.printStackTrace();        }        BufferedReader bufferedReader = null;        try {            //定義字符緩沖流,指向文件            bufferedReader = new BufferedReader(new FileReader(file.getAbsolutePath()));            //之前時間+有效時間            long t = Long.parseLong(bufferedReader.readLine());            //在有效時間之內            //90 +10            if (System.currentTimeMillis() - t < 0) {                StringBuilder stringBuilder = new StringBuilder();                String line = null;                while ((line = bufferedReader.readLine()) != null) {                    stringBuilder.append(line);                }                return stringBuilder.toString();            }        } catch (Exception e) {            e.printStackTrace();        } finally {            try {                if (bufferedReader != null)                    bufferedReader.close();            } catch (IOException e) {                e.printStackTrace();            }        }        return null;    }}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲美女在线视频| 欧美日韩亚洲天堂| 久久天天躁狠狠躁夜夜躁2014| 亚洲有声小说3d| 欧美激情免费在线| 17婷婷久久www| 日韩精品在线播放| 精品国产欧美一区二区五十路| 亚洲一区二区三| 国产成人一区二区| 日韩欧美极品在线观看| 日韩免费观看在线观看| 中文字幕亚洲国产| 91理论片午午论夜理片久久| 青青久久aⅴ北条麻妃| 国产精品视频最多的网站| 色综合亚洲精品激情狠狠| 热久久这里只有精品| 日韩电视剧在线观看免费网站| 国产精品久久久久久久午夜| 国产精品av在线播放| 欧美第一页在线| 亚洲一区二区中文字幕| 欧美激情极品视频| 91av视频导航| 国产亚洲精品美女| 久久久久久久久久久久久久久久久久av| 欧美电影免费看| 亚洲区在线播放| 91日韩在线视频| 国产一区二区欧美日韩| 亚洲精品自拍视频| 成人黄色在线播放| 国产亚洲精品久久| 欧美日韩一区二区免费视频| 久久久久久久一区二区| 日韩av一区在线观看| 久久精视频免费在线久久完整在线看| 亚洲欧美制服综合另类| 亚洲精品美女在线观看播放| 国产成人综合av| 韩国视频理论视频久久| 日韩中文字在线| 国产精品扒开腿做爽爽爽的视频| 欧美日韩国产一区在线| 精品日本高清在线播放| 亚洲精品电影在线| 日韩精品中文字| 欧美一级淫片aaaaaaa视频| 久久99热精品| www.久久撸.com| 亚洲黄色在线观看| 久久久久久国产精品美女| 精品国产乱码久久久久久虫虫漫画| 欧美精品成人91久久久久久久| 欧美亚洲另类在线| 国产精品流白浆视频| 伊人伊成久久人综合网小说| 在线观看欧美成人| 综合欧美国产视频二区| 精品免费在线视频| 国产亚洲a∨片在线观看| 18久久久久久| 日韩欧美aⅴ综合网站发布| 久久99精品久久久久久噜噜| 欧美电影免费观看大全| 亚洲成人av资源网| 欧美日韩久久久久| 亚洲精品久久久久中文字幕欢迎你| 欧美精品一区二区三区国产精品| 欧洲成人午夜免费大片| 亚洲天堂av在线免费| 久久久精品影院| 日韩美女免费观看| 国产精品成人av性教育| 在线观看免费高清视频97| 久久国产精品亚洲| 国产精品劲爆视频| 日韩免费不卡av| 久久精品视频网站| 91久久精品美女| 欧美另类第一页| 久久久av电影| 日本一区二区三区四区视频| 国产精选久久久久久| 亚洲视频欧美视频| 亚洲国产日韩精品在线| 欧美夫妻性生活视频| 精品国内自产拍在线观看| 亚洲欧美一区二区三区四区| 欧美精品情趣视频| 91精品国产91久久久久| 国产精品丝袜一区二区三区| 亚洲一区亚洲二区亚洲三区| 亚洲国产美女精品久久久久∴| 91热福利电影| 91精品久久久久久久久久久| 亚洲精品av在线| 欧美性生交大片免费| 国产亚洲aⅴaaaaaa毛片| 色综合91久久精品中文字幕| 日韩欧美国产免费播放| 视频在线一区二区| 亚洲天天在线日亚洲洲精| 亚洲一级免费视频| 亚洲一区亚洲二区| 久久国产精品99国产精| 欧美日韩中文字幕在线视频| 国产日本欧美一区| 精品亚洲一区二区| 狠狠躁夜夜躁人人躁婷婷91| 国产午夜精品美女视频明星a级| 亚洲欧洲在线视频| 亚洲激情视频在线观看| 日韩美女免费视频| 亚洲精选中文字幕| 欧美在线一区二区视频| 日韩欧美精品在线观看| 久久精品久久久久久国产 免费| 中文字幕日韩免费视频| 欧美日韩国产中文精品字幕自在自线| 久久人人爽亚洲精品天堂| 欧美福利视频在线| 日本精品久久久| 97超碰国产精品女人人人爽| 欧美精品一区二区免费| 欧美视频在线看| 国产精品久久久久秋霞鲁丝| 久久久免费av| 欧美另类极品videosbest最新版本| 久久综合久久八八| 久久伊人精品天天| 日韩h在线观看| 国产成人av在线| 国产精品嫩草视频| 国产一区二区三区在线免费观看| 亚洲自拍偷拍色片视频| 欧美性一区二区三区| 中文字幕亚洲精品| 亚洲人成伊人成综合网久久久| 成人xvideos免费视频| 欧美国产日韩中文字幕在线| 国产婷婷色综合av蜜臀av| 国产999精品久久久| 日韩av日韩在线观看| 精品福利视频导航| 亚洲色图15p| 欧美激情一区二区三区高清视频| 亚洲嫩模很污视频| 狠狠色狠狠色综合日日小说| 国产色综合天天综合网| 狠狠色噜噜狠狠狠狠97| 91网站免费观看| 亚洲性xxxx| 国产精品天天狠天天看| 亚洲成人网久久久| 久久久久999| 亚洲第一国产精品| 日本不卡高字幕在线2019| 国产精品美女免费视频| 欧美激情在线狂野欧美精品| 国产69精品久久久久9999| 久久久免费高清电视剧观看| 久久精品视频在线观看|