Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 布局更改时,屏幕截图不会更改_Java_Android_Android Viewpager - Fatal编程技术网

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

Java 布局更改时,屏幕截图不会更改,java,android,android-viewpager,Java,Android,Android Viewpager,我正在使用ViewPager作为应用程序中的主导航。我也在使用ActionBar。我想实现的是,当用户单击ActionBar中的搜索按钮时,我希望背景模糊。因此,我的方法是拍摄一个屏幕截图,模糊它,设置为ImageView,并显示为覆盖整个视图。它是有效的。但问题是,实际上,当我第一次打开搜索时,它会显示正确的屏幕截图。然后我关闭覆盖,在ViewPager中更改页面,再次单击搜索,然后。。。我可以看到上一个截图,而不是新的一个有新页面的截图。以下是我的代码片段: 搜索时显示和隐藏覆盖单击我正在传

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

搜索时显示和隐藏覆盖单击我正在传递R.id.container视图,它是我的内容视图的父id,menuOverlay是从布局中引用的我的ImageView

下面是我的方法,它可以截图并使其模糊

//公元1年 item.SetOnActionExpandListener新建菜单item.OnActionExpandListener{ @凌驾 公共布尔值onMenuItemActionExpandMenuItem menuItem{ ifmenuItem.getItemId==R.id.action\u搜索{

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);