将膨胀的布局转换为位图android

我正在充气布局并将其转换为,然后我将按照惯常的意图分享它。

使用 -

LayoutInflater inflater2 = LayoutInflater.from(this);

        qr_sheetview = inflater2.inflate(R.layout.dummy_layout, mainlayout, false);

我尝试了三种方法 -

  • 使用此方法将充气视图转换为位图
  • qr_sheetview.setDrawingCacheEnabled(真); qr_sheetview.measure(View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED),View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED)); qr_sheetview.layout(0,0,qr_sheetview.getMeasuredWidth(),qr_sheetview.getMeasuredHeight()); qr_sheetview.buildDrawingCache(真); sharedbmap = Bitmap.createBitmap(qr_sheetview.getDrawingCache());

    但是使用这种方法我的布局会缩小并重叠。

    宽度为1107,高度为448

    我使用Framelayout作为内部视图的rootlayout和相对布局。

  • 我正在使用的第二种方法是 - >

    sharedbmap = Bitmap.createBitmap(qr_sheetview.getWidth(),qr_sheetview.getHeight(),Bitmap.Config.ARGB_8888); canvas = new Canvas(sharedbmap); qr_sheetview.draw(帆布);

  • 在此方法中发生错误:高度和宽度必须> 0

    使用这也给了我同样的错误

    qr_sheetview.post(new Runnable() {
                        @Override
                        public void run() {
    
                            sharedbmap = loadBitmapFromView(qr_sheetview);
    
                            shareBitmap(adjustOpacity(sharedbmap), "temporary");
    
                        }
                    });
    
  • 第三种方法是这个 - >

    public static Bitmap loadBitmapFromView(View v){

            int specWidth = View.MeasureSpec.makeMeasureSpec(0 /* any */, View.MeasureSpec.UNSPECIFIED);
            v.measure(specWidth, specWidth);
    
            Log.d("TAG", "height" + v.getMeasuredHeight());
            Log.d("TAG", "width" + v.getMeasuredWidth());
    
            Bitmap b = Bitmap.createBitmap(v.getMeasuredWidth(), v.getMeasuredHeight(), Bitmap.Config.ARGB_8888);
            Canvas c = new Canvas(b);
            v.layout(v.getLeft(), v.getTop(), v.getRight(), v.getBottom());
            v.draw(c);
    
            return b;
        }
    
  • 在这里,我得到了与第一个相同的结果。

    布局是 - >

    <?xml version="1.0" encoding="utf-8"?>
    <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:card_view="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#ffffff"
        >
    
        <RelativeLayout
            android:id="@+id/mainqrlayout"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="#ffffff">
    
            <RelativeLayout
                android:id="@+id/layout001"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:padding="10dp">
    
                <TextView
                    android:id="@+id/appname"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_centerHorizontal="true"
                    android:layout_marginTop="5dp"
                    android:gravity="center|bottom"
                    android:text="Some text"
                    android:textColor="#212121"
                    android:textStyle="bold"
                    android:textSize="24sp" />
    
                <ImageView
                    android:id="@+id/logo"
                    android:layout_width="64dp"
                    android:layout_height="64dp"
                    android:layout_centerHorizontal="true"
                    android:layout_below="@+id/appname"
                    android:layout_marginTop="10dp"
                    android:src="@drawable/logomain" />
    
    
            </RelativeLayout>
    
            <RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_above="@+id/layout003"
                android:layout_below="@+id/layout001">
    
                <ImageView
                    android:id="@+id/qrimage"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_centerInParent="true" />
    
                <ProgressBar
                    android:id="@+id/progressBar"
                    android:layout_width="50dp"
                    android:layout_height="50dp"
                    android:layout_centerInParent="true"
                    android:visibility="gone" />
    
                <ImageView
                    android:id="@+id/qr_logo"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_centerInParent="true"
                    android:visibility="gone"
                    card_view:srcCompat="@drawable/kj_qr_logo_svg" />
    
    
    
    
            </RelativeLayout>
    
            <RelativeLayout
                android:id="@+id/layout003"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_alignParentBottom="true">
    
                <TextView
                    android:id="@+id/vpaname"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_centerHorizontal="true"
                    android:gravity="center"
                    android:text="kdvkjadsfkasmd"
                    android:textColor="#212121" />
    
                <TextView
                    android:id="@+id/qr_vpa"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_below="@+id/vpaname"
                    android:layout_centerHorizontal="true"
                    android:text="skdmfkjasdf"
                    android:textColor="#444444" />
    
                <TextView
                    android:id="@+id/text3"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_below="@+id/qr_vpa"
                    android:layout_centerHorizontal="true"
                    android:layout_marginTop="15dp"
                    android:gravity="center"
                    android:padding="10dp"
                    android:text="ckasfdowmdmwkmdwkdmkwmdklmekld n sdafasdfasdfaasdf"
                    android:textColor="#727272" />
    
                <TextView
                    android:id="@+id/companyname"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_below="@+id/text3"
                    android:layout_centerHorizontal="true"
                    android:layout_marginBottom="10dp"
                    android:layout_marginTop="20dp"
                    android:gravity="bottom"
                    android:text="@string/companyname"
                    android:textColor="#727272"
                    android:textSize="10sp" />
    
            </RelativeLayout>
    
        </RelativeLayout>
    </FrameLayout>
    
    链接地址: http://www.djcxy.com/p/67633.html

    上一篇: Convert inflated layout into a bitmap android

    下一篇: view.getDrawingCache() returns null only in Samsung Galaxy note 8.0?