已测量过的View生成Bitmap
即经过测量、布局、绘制并显示在界面上的View,此类View无需再次进行测量和布局,可直接将内容绘制到指定的Bitmap上。
/**
* 绘制已经测量过的View
*/
private static Bitmap drawMeasureView(View view) {
int width = view.getWidth();
int height = view.getHeight();
Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.RGB_565);
Canvas canvas = new Canvas(bitmap);
view.draw(canvas);
return bitmap;
}
未测量过的View生成Bitmap
直接Inflate后并未显示在界面的View,此类View必须手动进行测量和布局后,方可进行绘制,否则获取不到对应的宽高和内容。
/**
* 先测量和布局,再生成Bitmap
*/
public static Bitmap getBitmap(View view) {
DisplayMetrics metric = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metric);
int screenWidth= metric.widthPixels; // 屏幕宽度(像素)
int screenHeight = metric.heightPixels; // 屏幕高度(像素)
// 测量
int w