-1

I have one problem in converting relativelayout to Bitmap in android.

In onCreate(), I have already converted the relativelayout to Bitmap. (The relativelayout inclue the imageview and the other view) And then I want to convert the relavielayout to Bitmap again after I change the image of the ImageView. But the result is same to last converted image result.

The code :

 v = (RelativeLayout) findViewById(R.id.relative_layout_id);
 v.setDrawingCacheEnabled(true);

 v.measure(View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED),
            View.MeasureSpec.makeMeasureSpec(0, view.MeasureSpec.UNSPECIFIED));

v.layout(0, 0, share_screen.getMeasuredWidth(), share_screen.getHeight());

v.buildDrawingCache(true);



Bitmap b = Bitmap.createBitmap(share_screen.getDrawingCache());

ByteArrayOutputStream bytes = new ByteArrayOutputStream();

b.compress(Bitmap.CompressFormat.PNG, 100, bytes);

image_view.setImageBitmap(b);
santoXme
  • 802
  • 5
  • 20

2 Answers2

0

Use this code.

public Bitmap getBitmap(View view)
{
    view.setDrawingCacheEnabled(true);
    view.buildDrawingCache();
    Bitmap bm = view.getDrawingCache();
    return bm;
}
0

you can create bitmap of a view by this way

private Bitmap createBitmapFromView(Context context, View view) {
    DisplayMetrics displayMetrics = new DisplayMetrics();
    ((Activity) context).getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
    view.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));

    view.measure(displayMetrics.widthPixels, displayMetrics.heightPixels);
    view.layout(0, 0, displayMetrics.widthPixels, displayMetrics.heightPixels);
    view.buildDrawingCache();
    Bitmap bitmap = Bitmap.createBitmap(view.getMeasuredWidth(), view.getMeasuredHeight(), Bitmap.Config.ARGB_8888);

    Canvas canvas = new Canvas(bitmap);
    view.draw(canvas);

    return bitmap;
}
Mobile Apps Expert
  • 1,028
  • 1
  • 8
  • 11