无法将视图组转换为Android中的位图
我正在开发一个生成图像的Android应用程序。 在生成图像之前,用户将视图拖放到RelativeLayout上。 然后我需要将具有子视图的相对布局转换为位图。 所以我将视图动态添加到相对布局,然后将其转换为位图。 但我的代码给我错误。
我将视图添加到像这样的相对布局
relativeLayout.add(imageView);
relativeLayout.add(textView);
//other steps and so on
这是我的函数将RelativeLayout转换为位图
private Bitmap convertTemplateViewToBitmap(RelativeLayout v)
{
v.measure(View.MeasureSpec.makeMeasureSpec(v.getLayoutParams().width, View.MeasureSpec.EXACTLY),
View.MeasureSpec.makeMeasureSpec(v.getLayoutParams().height, View.MeasureSpec.EXACTLY));
v.layout(0, 0, v.getMeasuredWidth(), v.getMeasuredHeight());
Bitmap bitmap = Bitmap.createBitmap(v.getLayoutParams().width, v.getLayoutParams().height, Bitmap.Config.RGB_565);
Canvas canvas = new Canvas(bitmap);
v.draw(canvas);
return bitmap;
}
所以我在通过相关布局作为参数的按钮中调用该按钮。 当我点击时,它会引发错误。
这是logcat中的错误消息
致命例外:主要过程:memegenerator.waiyanhein.com.memegenerator,PID:19993 java.lang.IllegalArgumentException:android.graphics上的android.graphics.Bitmap.createBitmap(Bitmap.java:829)处的宽度和高度必须> 0。在memegenerator.waiyanhein.com.memegenerator.CreateMemeActivity.convertTemplateViewToBitmap(CreateMemeActivity.java:898)at memegenerator.waiyanhein.com上的android.graphics.Bitmap.createBitmap(Bitmap.java:775)Bitmap.createBitmap(Bitmap.java:808) .memegenerator.CreateMemeActivity.saveBottomItemClick(CreateMemeActivity.java:285)at memegenerator.waiyanhein.com.memegenerator.CreateMemeActivity.access $ 800(CreateMemeActivity.java:51)at memegenerator.waiyanhein.com.memegenerator.CreateMemeActivity $ 2.onTabSelected(CreateMemeActivity.java :251)at com.roughike.bottombar.BottomBar.updateSelectedTab(BottomBar.java:717)at com.roughike.bottombar.BottomBar.handleClick(BottomBar.java:685)at com.roughike.bottombar.BottomBar.onClick(BottomBar。 java:656)在android.view.View.p 在android.os.Handler.dispatchMessage(Handler)上的android.os.Handler.handleCallback(Handler.java:739)处的android.view.View $ PerformClick.run(View.java:21153)处的erformClick(View.java:5204) .java:95)at android.os.Looper.loop(Looper.java:148)at android.app.ActivityThread.main(ActivityThread.java:5417)at java.lang.reflect.Method.invoke(Native Method)at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:726)
我的代码有什么问题? 我怎样才能将一个视图组与孩子转换成Android位图?
这里是我的解决方案:
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;
}
请享用 :)
链接地址: http://www.djcxy.com/p/33661.html上一篇: Unable to convert viewgroup into bitmap in Android
下一篇: Release Memory of Particular Activity when it is Destroyed