Java 布局更改时,屏幕截图不会更改
我正在使用ViewPager作为应用程序中的主导航。我也在使用ActionBar。我想实现的是,当用户单击ActionBar中的搜索按钮时,我希望背景模糊。因此,我的方法是拍摄一个屏幕截图,模糊它,设置为ImageView,并显示为覆盖整个视图。它是有效的。但问题是,实际上,当我第一次打开搜索时,它会显示正确的屏幕截图。然后我关闭覆盖,在ViewPager中更改页面,再次单击搜索,然后。。。我可以看到上一个截图,而不是新的一个有新页面的截图。以下是我的代码片段: 搜索时显示和隐藏覆盖单击我正在传递R.id.container视图,它是我的内容视图的父id,menuOverlay是从布局中引用的我的ImageView 下面是我的方法,它可以截图并使其模糊 //公元1年 item.SetOnActionExpandListener新建菜单item.OnActionExpandListener{ @凌驾 公共布尔值onMenuItemActionExpandMenuItem menuItem{ ifmenuItem.getItemId==R.id.action\u搜索{Java 布局更改时,屏幕截图不会更改,java,android,android-viewpager,Java,Android,Android Viewpager,我正在使用ViewPager作为应用程序中的主导航。我也在使用ActionBar。我想实现的是,当用户单击ActionBar中的搜索按钮时,我希望背景模糊。因此,我的方法是拍摄一个屏幕截图,模糊它,设置为ImageView,并显示为覆盖整个视图。它是有效的。但问题是,实际上,当我第一次打开搜索时,它会显示正确的屏幕截图。然后我关闭覆盖,在ViewPager中更改页面,再次单击搜索,然后。。。我可以看到上一个截图,而不是新的一个有新页面的截图。以下是我的代码片段: 搜索时显示和隐藏覆盖单击我正在传
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);
}
一、 我使用的是StackOverflow上的快速模糊算法,速度非常快。
问题出在哪里?为什么会发生?好的,我找到了答案。如果你想一直有新的屏幕截图,你需要在所有操作后销毁缓存:
v.setDrawingCacheEnabled(false);