布局更改时,屏幕截图不会更改

时间:2014-03-06 13:17:07

标签: java android android-viewpager

我正在使用ViewPager作为应用程序中的主导航。我也在使用ActionBar。我想要实现的是,当用户点击ActionBar中的搜索按钮时,我希望背景模糊。所以我的方法是截取屏幕截图,模糊它,设置为ImageView并在整个视图中显示为叠加层。它有效。但问题是,实际上当我第一次打开搜索时,它会显示正确的截图。然后我关闭叠加,更改ViewPager中的页面,再次单击搜索...我可以看到上一个屏幕截图 - 不是新页面上的新页面。以下是我的代码片段:

  1. 在搜索点击上显示和隐藏叠加层(我正在传递R.id.container视图,这是我的内容视图的父ID,menuOverlay是我从布局引用的ImageView

    < / LI>
  2. 这是我拍摄屏幕截图并使其模糊的方法

    //广告1     item.setOnActionExpandListener(new MenuItem.OnActionExpandListener(){                 @覆盖                 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);
        }
    
  3. 我使用快速模糊算法在StackOverflow上找到了一个非常快的地方。 哪里有问题?为什么会这样?

1 个答案:

答案 0 :(得分:0)

好的,我找到了答案。如果你想永远拥有&#34; fresh&#34;截图你需要在所有操作后销毁缓存:

v.setDrawingCacheEnabled(false);