2015-05-20 72 views
3

我在我的项目中使用LDrawer。当抽屉打开时,我需要使托管导航抽屉的活动变暗/变暗/模糊。变暗/点心/模糊活动时,导航打开抽屉

我已经通过#2类似的问题消失了,我还没有找到一个satisfiying答案。

有没有简单的技巧,使活动的布局变暗/暗/模糊当我睁开NavigationDrawer

我有我的活动RelativeLayout定义为

RelativeLayout myActivity = (RelativeLayout) findViewById(R.id.myActivity) 

我有切换代码NavigationDrawer下面

public boolean onOptionsItemSelected(MenuItem item) { 
     if (item.getItemId() == android.R.id.home) { 
      if (mDrawerLayout.isDrawerOpen(mDrawerList)) { 
       mDrawerLayout.closeDrawer(mDrawerList); 
      } else { 
       //I want to manipulate myActivity's Layout here 
       mDrawerLayout.openDrawer(mDrawerList); 
      } 
     } 
     return super.onOptionsItemSelected(item); 
    } 
+0

你是否在标准'DrawerLayout'中使用了这个? –

+0

是'android.support.v4.widget.DrawerLayout' –

+0

嗯,我想它应该做的,默认情况下,除非'LDrawer'以某种方式覆盖它。尝试在设置切换后在'DrawerLayout'对象上调用'setScrimColor(0x99000000)'。 –

回答

0

有没有简单的技巧,使activit y的布局当我打开我的NavigationDrawer时变暗/变暗/模糊?

是的,你可以简单地改变为模糊你的活动的背景图像,当你打开抽屉。

另一种方式是改变字母或setalpha您的活动简单(),并通过你多少变化所需的值。

如果你有你的活动列表控制和你想的是模糊的,然后下面的代码将工作。

Display display = getActivity().getWindowManager().getDefaultDisplay(); 
     Point size = new Point(); 
     display.getSize(size); 
     int screenWidth = size.x; 
     int screenHeight = size.y; 

Bitmap blurBitmap = BitmapFactory.decodeResource(getResources(), 
       R.drawable.invitation_blur_bg); 

     Rect rect = new Rect(0, 0, blurBitmap.getWidth(), blurBitmap.getHeight()); 

您的活动或片段要将此落实OnScrollListener。

@Override 
    public void onScroll(AbsListView view, int firstVisibleItem, 
      int visibleItemCount, int totalItemCount) { 

     for (int i = 0; i < listview.getChildCount(); i++) { 
      View c = listview.getChildAt(i); 

      Rect r = new Rect(); 
      c.getHitRect(r); 

      RelativeLayout llItemBg = ((RelativeLayout) c.findViewById(R.id.root_layout of list item); 

      Drawable d = new BitmapDrawable(getResources(), cropImage(r,c)); 

      itemBackground.setBackgroundDrawable(d); 

     } 
    } 
    private Bitmap cropImage(Rect r, View c2) { 

     Bitmap bmOverlay = Bitmap.createBitmap(screenWidth - 60, 
       c2.getHeight(), Bitmap.Config.ARGB_8888); 
     Rect rect1=new Rect(0, 0, bmOverlay.getWidth(), bmOverlay.getHeight()); 
     Paint p = new Paint(); 
     Canvas c = new Canvas(bmOverlay); 
     rect.right = r.right; 
     rect.top = rect.top; 
     rect.bottom = r.bottom/2; 

     c.drawBitmap(blurBitmap, r, rect1, p); 

     return bmOverlay; 
    } 
+0

'setAlpha'不会更改我的活动中所有元素的“不透明度”,因为有很多白色文本。此外,我不在我的活动中使用“列表”。 –

+0

你的活动有任何背景图片吗? –

+0

现在只是一个黑色的bg颜色。 –