将膨胀的布局转换为位图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?