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

时间:2017-06-20 20:00:15

标签: android android-layout bitmap

我正在给布局充气并将其转换为然后我将使用通常的意图分享它。

使用 -

对布局进行充气
LayoutInflater inflater2 = LayoutInflater.from(this);

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

我尝试了三种方法 -

  1. 使用此方法将膨胀的视图转换为位图
  2.   

    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和内部视图的相对布局。

    1. 我使用的第二种方法是 - >

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

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

      使用它也会给我带来同样的错误

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

        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;
            }
        
      2. 在这里我得到的结果与第一次相同。

        布局是 - >

        <?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>
        

0 个答案:

没有答案