Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get bitmap from layout

Tags:

android

I'm trying to inflate a layout and use that to set a bitmap on an image view. Then, I'm adding that imageview to a linear layout and displaying the linear layout. Here's what I've tried:

public class TestActivity extends Activity {
    private static Bitmap bitMap;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        LinearLayout l = new LinearLayout(this);

        bitMap = Bitmap.createBitmap(getWindowManager().getDefaultDisplay().getWidth(), 
                getWindowManager().getDefaultDisplay().getHeight(), 
                Bitmap.Config.ARGB_8888);
        Canvas canvas = new Canvas(bitMap);
        LayoutInflater inflater = LayoutInflater.from(this);
        View v1 = inflater.inflate(R.layout.main, null);
        v1.layout(0, 0, getWindowManager().getDefaultDisplay().getWidth(), 
                getWindowManager().getDefaultDisplay().getHeight());
        v1.draw(canvas);

        ImageView i1 = new ImageView(this);
        i1.setImageBitmap(bitMap);
        i1.setAdjustViewBounds(true);
        i1.setLayoutParams(new FrameLayout.LayoutParams(getWindowManager().getDefaultDisplay().getWidth(), 
                getWindowManager().getDefaultDisplay().getHeight()));

        l.addView(i1);
        setContentView(l);
    }
}

Unfortunately, the bitMap is not being created properly. Is there anything I'm doing wrong?

like image 981
OckhamsRazor Avatar asked Nov 14 '11 10:11

OckhamsRazor


2 Answers

Convert a layout to Bitmap.

FrameLayout view = (FrameLayout)findViewById(R.id.framelayout);
view.setDrawingCacheEnabled(true);
view.buildDrawingCache();
Bitmap bm = view.getDrawingCache();
like image 169
RajaReddy PolamReddy Avatar answered Sep 20 '22 18:09

RajaReddy PolamReddy


You cant get bitmap on the views or layout is not being inflated.

Layout will only getting inflated after OnCreate()

.

1.Get bitmap on Button_Clicked(View view){}

2.Or using a Handle()to post delaying your get bitmap

3.Make sure drawing cache is created using view.buildDrawingCache();

like image 31
nyconing Avatar answered Sep 17 '22 18:09

nyconing