@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR1)
public Bitmap getBitmap(View view) {
if (null == view) {
return null;
}
Bitmap bitmap = null;
// 步驟一:獲取視圖的寬和高
int width = view.getRight() - view.getLeft();
int height = view.getBottom() - view.getTop();
// 判斷背景是否爲不透明
final boolean opaque = view.getDrawingCacheBackgroundColor() != 0 || view.isOpaque();
Bitmap.Config quality;
if (!opaque) {
switch (view.getDrawingCacheQuality()) {
case DRAWING_CACHE_QUALITY_AUTO:
case DRAWING_CACHE_QUALITY_LOW:
case DRAWING_CACHE_QUALITY_HIGH:
default:
quality = Bitmap.Config.ARGB_8888;
break;
}
} else {
quality = Bitmap.Config.RGB_565;
}
// 步驟二:生成bitmap
bitmap = Bitmap.createBitmap(getResources().getDisplayMetrics(), width, height, quality);
bitmap.setDensity(getResources().getDisplayMetrics().densityDpi);
if (opaque){
bitmap.setHasAlpha(false);
}
boolean clear = view.getDrawingCacheBackgroundColor() != 0;
// 步驟三:繪製canvas
Canvas canvas = new Canvas(bitmap);
if (clear) {
bitmap.eraseColor(view.getDrawingCacheBackgroundColor());
}
view.computeScroll();
final int restoreCount = canvas.save();
canvas.translate(-view.getScrollX(), -view.getScrollY());
view.draw(canvas);
canvas.restoreToCount(restoreCount);
canvas.setBitmap(null);
return bitmap;
}
抖音短視頻系統開發Android將佈局內容生成圖片
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.