java - screenshots don't change when layout changes -
i'm using viewpager main navigation in app. i'm using actionbar, well. want achieve when user clicks search button in actionbar want have blurred background. approach take screenshot, blur it, set imageview , display overlay on whole view. , works. problem when first open search displays proper screenshot. turn overlay off, change page in viewpager
, click search again , ... can see previous screenshot- not new 1 new page on it. here snippets of code:
show , hide overlay on search click (i'm passing
r.id.container
view parent id of content view, menuoverlayimageview
referenced layout)here's method takes screenshot , makes blurry
// ad. 1 item.setonactionexpandlistener(new menuitem.onactionexpandlistener() { @override public boolean onmenuitemactionexpand(menuitem menuitem) { if(menuitem.getitemid() == r.id.action_search) {
menuoverlay.setimagebitmap(utils.takesnapshot(findviewbyid(r.id.container))); menuoverlay.setvisibility(view.visible); } return true; } @override public boolean onmenuitemactioncollapse(menuitem menuitem) { if(menuitem.getitemid() == r.id.action_search) { menuoverlay.setvisibility(view.gone); } return true; } }); // ad. 2 public static bitmap takesnapshot(view v) { v.setdrawingcacheenabled(true); v.builddrawingcache(); bitmap bm = v.getdrawingcache(); bitmap scaled = bitmap.createscaledbitmap(bm, bm.getwidth()/5, bm.getheight()/5, false); return utils.fastblur(scaled, 5); }
i;m using fast blur algorithm found somewhere here on stackoverflow quite fast. where's problem? why happens?
ok, found answer. if want have "fresh" screenshot need destroy cache after operations:
v.setdrawingcacheenabled(false);
Comments
Post a Comment