简体   繁体   English

Android将视图转换为BitMap

[英]Android Convert view to BitMap

I'm trying to convert a view to bitmap but I lose the black color. 我正在尝试将视图转换为位图,但是我失去了黑色。 I'm converting like this: 我这样转换:

Bitmap returnedBitmap = Bitmap.createBitmap(view.getWidth(),view.getHeight(), Bitmap.Config.ARGB_8888);

Example

How can i convert to bitmap so the black of the percentage value is not lost? 我如何转换为位图,这样百分比值的黑色不会丢失?

Thanks, Regards 感谢和问候

Hi you can use this method to convert View to Bitmap 嗨,您可以使用此方法将视图转换为位图

private Bitmap createBitmapFromView(Context context, View view) {
        DisplayMetrics displayMetrics = new DisplayMetrics();
        ((Activity) context).getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
        view.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));

        view.measure(displayMetrics.widthPixels, displayMetrics.heightPixels);
        view.layout(0, 0, displayMetrics.widthPixels, displayMetrics.heightPixels);
        view.buildDrawingCache();
        Bitmap bitmap = Bitmap.createBitmap(view.getMeasuredWidth(), view.getMeasuredHeight(), Bitmap.Config.ARGB_8888);

        Canvas canvas = new Canvas(bitmap);
        view.draw(canvas);

        return bitmap;
    }

If you want to get result as you see in your view , must use below code. 如果要获得视图中显示的结果,则必须使用以下代码。

private static Bitmap getBitmapFromView(Context ctx, View view) {
        view.setLayoutParams(new 
ConstraintLayout.LayoutParams(ConstraintLayout.LayoutParams.MATCH_PARENT, 
ConstraintLayout.LayoutParams.MATCH_PARENT));
        DisplayMetrics dm = ctx.getResources().getDisplayMetrics();
            view.measure(View.MeasureSpec.makeMeasureSpec(dm.widthPixels,
                View.MeasureSpec.EXACTLY),
                View.MeasureSpec.makeMeasureSpec(dm.heightPixels,
                    View.MeasureSpec.EXACTLY));
        view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight());
        Bitmap bitmap = Bitmap.createBitmap(view.getMeasuredWidth(), 
view.getMeasuredHeight(),
                Bitmap.Config.ARGB_8888);

        Canvas canvas = new Canvas(bitmap);
        view.layout(view.getLeft(), view.getTop(), view.getRight(), view.getBottom());
        view.draw(canvas);
        return bitmap;
    }

Note : Your view must have background color. 注意 :您的视图必须具有背景色。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM