android - 将布局另存为位图

标签 android bitmap android-linearlayout

我想将我的线性布局保存为 bmp。

<LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/linearLayout_QrCode" >

        <Space
            android:layout_width="15dp"
            android:layout_height="match_parent"
            android:layout_gravity="center_vertical" />

        <LinearLayout
            android:orientation="vertical"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" >

            <Space
                android:layout_width="match_parent"
                android:layout_height="15dp" />

            <ImageView
                android:layout_width="185dp"
                android:layout_height="185dp"
                android:id="@+id/imageView_qrcode" />

            <Space
                android:layout_width="match_parent"
                android:layout_height="15dp" />

        </LinearLayout>

        <RelativeLayout
            android:layout_width="417dp"
            android:layout_height="match_parent" >

            <Space
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_centerVertical="true"
                android:layout_alignParentStart="true"
                android:id="@+id/space2" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textAppearance="?android:attr/textAppearanceLarge"
                android:id="@+id/textView_QrSticker_label"
                android:layout_alignParentStart="true"
                android:layout_above="@+id/space2"
                android:textStyle="bold"
                android:textSize="40sp" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textAppearance="?android:attr/textAppearanceLarge"
                android:id="@+id/textView_QrSticker_serial"
                android:layout_below="@+id/space2"
                android:layout_alignParentStart="true"
                android:textSize="30sp" />
        </RelativeLayout>

    </LinearLayout>

因此我使用以下代码来执行此操作:

        public Bitmap viewToBitmap(View view) {
            Bitmap bitmap = Bitmap.createBitmap(view.getWidth(), view.getHeight(), Bitmap.Config.ARGB_8888);
            Canvas canvas = new Canvas(bitmap);
            view.draw(canvas);
            return bitmap;
        }

但是如果我运行这段代码,我的位图只包含 ImageView (ImageView_qrcode)。我查过了。如果我给 Linearview 充气,TextViews 会正确显示,但输出 bmp 只包含 ImageView 有人知道为什么吗?

最佳答案

您可以试试这个解决方案:

public static Bitmap getBitmapFromView(View view) {
    Bitmap returnedBitmap = Bitmap.createBitmap(view.getWidth(), view.getHeight(),Bitmap.Config.ARGB_8888);
    Canvas canvas = new Canvas(returnedBitmap);
    Drawable bgDrawable =view.getBackground();
    if (bgDrawable!=null) {
    bgDrawable.draw(canvas);
    } else {
        canvas.drawColor(Color.WHITE);
    }
    view.draw(canvas);
    return returnedBitmap;
}

有绘图缓存的解决方案:

public Bitmap getBitmapFromView(View view){
    view.setDrawingCacheEnabled(true);
    return view.getDrawingCache();
}

关于android - 将布局另存为位图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34067522/

相关文章:

android - 如何在Android主屏幕小部件中保持套接字连接有效

android - 在垂直方向的 LinearLayout 中将 TextView 和 EditText 左对齐

Android 录制应用声音输出

android - 显示 Snackbar 也会显示隐藏的底页吗?

c# - wp - 根据 slider 值将图像转换为灰度

c# - 将图像中的每个像素设置为颜色列表中最接近的匹配项

java - 如何在文本框下方显示三个标签和微调器?

android:重力中心_水平线性布局不起作用

java - 如何在Android中使用函数 "getAttribute"从带有exif的图像中提取字节数组?

android - 来自画廊的图像自动旋转 - Android