之前做了一個類似朋友圈里的查看大圖功能,現在也要加上保存功能。
保存圖片有很多思路,可以從imageview里提取bitmap,可以用url下載到本地。imageview提取的話,gif圖就會變成一張靜態圖。
我的圖片使用glide加載的,glide自帶緩存,如果再次用glide下載圖片,則會直接讀取緩存,節省時間。這次用的原理就是在點擊保存圖片的時候,將glide緩存文件保存到Pictures文件夾。
/** * Created by csonezp on 16-1-12. */ public class SaveImageTask extends AsyncTask<String, Void, File> { private final Context context; public SaveImageTask(Context context) { this.context = context; } @Override protected File doInBackground(String... params) { String url = params[0]; // should be easy to extend to share multiple images at once try { return Glide .with(context) .load(url) .downloadOnly(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL) .get() // needs to be called on background thread ; } catch (Exception ex) { return null; } } @Override protected void onPostExecute(File result) { if (result == null) { return; } String path = result.getPath(); FileUtil.copyFile(path, FileUtil.getPubAlbumDir().getPath() + UUID.randomUUID().toString() + ".gif"); GlobalUtil.shortToast(context, context.getString(R.string.save_success)); } }