2014-03-06 96 views
0

我使用ViewPager作爲我在應用程序中的主要導航。我也使用ActionBar。我想要實現的是,當用戶單擊ActionBar中的搜索按鈕時,我想要模糊背景。所以我的方法是截取屏幕截圖,模糊它,設置爲ImageView並在整個視圖中顯示爲疊加層。它的工作原理。但問題是,實際上當我第一次打開搜索它顯示正確的截圖。然後,我打開覆蓋圖,在ViewPager中更改頁面,再次單擊搜索,然後...我可以看到以前的屏幕截圖 - 沒有新的頁面。這裏是我的代碼片段:當佈局更改時,屏幕截圖不會更改

  1. 顯示和隱藏疊加搜索點擊(我傳遞R.id.container鑑於這是我的內容視圖的父ID,menuOverlay是我ImageView從佈局引用)

  2. 這是我的方法,採取截圖,使其模糊

    //廣告。 1 item.setOnActionExpandListener(新MenuItem.OnActionExpandListener(){ @覆蓋 公共布爾onMenuItemActionExpand(菜單項菜單項){ 如果(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); 
        } 
    

我。?... M使用發現這裏的某個地方在計算器上快速模糊算法是相當快的 哪裏是爲什麼會發生

回答

0

好吧,我找到了答案的問題,如果你想一直有「新鮮」的截圖中,你需要destro y所有操作後的緩存:

v.setDrawingCacheEnabled(false);