項目背景:
private void ChartBitmap() {
LL_lineChart.destroyDrawingCache();
LL_lineChart.setDrawingCacheEnabled(true);
LL_lineChart.buildDrawingCache();
new Thread(new Runnable() {
@Override
public void run() {
Bitmap catchbitmap = LL_lineChart.getDrawingCache();
Bitmap bitmap = Bitmap.createBitmap(catchbitmap, 40, 0, catchbitmap.getWidth() - 40,
catchbitmap.getHeight() - 70);
if (catchbitmap != null) {
try {
boolean sdCardExist = Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED); // 判斷sd卡是否存在
if (sdCardExist) // 如果SD卡存在,則獲取跟目錄
{
sdDir = Environment.getExternalStorageDirectory();// 獲取跟目錄
} else {
UIUtils.showToast(AppContentActivity.this, "SD卡內存不足", Toast.LENGTH_SHORT);
return;
}
File myCaptureFile = new File(sdDir + "/appcontent" + selectTag + ".png");
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(myCaptureFile));
BitmapUtil.getRecordImage(bitmap, Color.parseColor("#dddcdc"), Color.parseColor("#e6e6e6"),
lineColors).compress(Bitmap.CompressFormat.JPEG, 80, bos);// 將LL_lineChart區域截圖,並保存
bos.flush();
bos.close();
} catch (Exception e) {
e.printStackTrace();
}
final BitmapDrawable blueBitmap = new BitmapDrawable(BitmapUtil.getRecordImage(bitmap,
Color.parseColor("#d2e5fb"), Color.parseColor("#e5f2fa"), lineColors));
AppContentActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
LL_clickfirst.setBackgroundDrawable(getGrayBitmap(beforeSelectTag));
LL_clickcontent.setBackgroundDrawable(blueBitmap);
beforeSelectTag = selectTag;
LL_clickfirst = LL_clickcontent;
}
});
} else {
AppContentActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
UIUtils.showToast(AppContentActivity.this, "截圖失敗", Toast.LENGTH_SHORT);
Log.i("CACHE_BITMAP", "DrawingCache=null");
}
});
}
AppContentActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
closeDialog();
}
});
}
}).start();
}
第一步:new Thread
Android異步處理系列文章索引參考文獻: