最近做一個(gè)需求,就是把點(diǎn)擊一個(gè)商品喘先,彈出一個(gè)dialog,然后點(diǎn)擊保存廷粒,把這個(gè)dialog保存到相冊(cè)窘拯,一開始了解這個(gè)需求,當(dāng)時(shí)想的就是調(diào)用系統(tǒng)的截屏坝茎,但是考慮到截屏了那多出來(lái)的部分不是還得去手動(dòng)裁剪涤姊,天呀,想想都覺(jué)得可怕景东,但是換個(gè)角度想想砂轻,把view轉(zhuǎn)換成bitmap然后保存貌似也可行,百度知google有緩存view的操作斤吐,利用api: setDrawingCacheEnabled(true)和buildDrawingCache()創(chuàng)建緩存;再使用view.getDrawingCache()即可將當(dāng)前的view轉(zhuǎn)換成bitmap搔涝,剩下就是利用流去進(jìn)行一定的寫入即可,ok和措,貼代碼:
寫入sd卡并通知圖庫(kù)刷新的操作:
//保存圖片
public static void saveImageToGallery(Context mContext, Bitmap bitmap) {
//注意小米手機(jī)必須這樣獲得public絕對(duì)路徑
File file = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).getAbsoluteFile();
//保存圖片的文件夾名
String fileName = "";
File appDir = new File(file, fileName);
if (!appDir.exists()) {
appDir.mkdirs();
}
fileName = System.currentTimeMillis() + ".jpg";
currentFile = new File(appDir, fileName);
FileOutputStream fos = null;
try {
fos = new FileOutputStream(currentFile);
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos);
fos.flush();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (fos != null)
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
// 最后通知圖庫(kù)更新
mContext.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE,
Uri.fromFile(new File(currentFile.getPath()))));}