android - getDrawingCache always returns the same Bitmap -


i'm working on project needs display dialog grayout (black/white) background. achieve i'm taking screenshot , of whole app, place screenshot on background of fullscreen dialog , put colorfilter on have grayed out.

this works perfect first time, if scroll in underlaying content , request dialog again, shows same background 1 before.

i use code:

bitmap bitmap; view rootview = getactivity().getwindow().getdecorview().findviewbyid(android.r.id.content); rootview.setdrawingcacheenabled(true); bitmap = bitmap.createbitmap(rootview.getdrawingcache()); rootview.setdrawingcacheenabled(false); imageview.setimagebitmap(bitmap); 

in other words, getdrawingcache() returns same screenshot of app.

i think that's because old bitmap still in drawing cache. because of this, first need delete cache , put new image in cache. take @ question, seems on same topic:

deletion of drawing cache

edit: so, here code working me. use button save bitmap , set bitmap image view:

private view rootview; private imageview bitmapview; private button switchbutton; public bitmap capturedscreen; public boolean bitmapneeded = false;  ...  @override public view oncreateview(layoutinflater inflater, viewgroup container,         bundle savedinstancestate) {     // other stuff     rootview.setdrawingcacheenabled(true); //enable drawing cache on view     switchbutton.setonclicklistener(this); }  ...  @override public void onclick(view v) {     if (v == switchbutton) { //when button clicked         capturescreen();     } }  public void capturescreen() {     rootview.builddrawingcache();            capturedscreen = bitmap.createbitmap(rootview.getdrawingcache());     imageview.setimagebitmap(capturedscreen);     rootview.destroydrawingcache(); }  ....   //in ondraw method of view: @override protected void ondraw(canvas canvas) {     canvas.drawbitmap(capturedscreen, 0, 0, paint); } 

this how works: everytime user clicks button, inside rootview saved bitmap , drawn imageview. can of course call capturescreen method anywhere in code, if need to.

i hope example helps you.


Comments

Popular posts from this blog

android - Get AccessToken using signpost OAuth without opening a browser (Two legged Oauth) -

org.mockito.exceptions.misusing.InvalidUseOfMatchersException: mockito -

google shop client API returns 400 bad request error while adding an item -