我在我的项目中使用LDrawer。当导航抽屉打开时,我需要使托管导航抽屉的活动变暗/变暗/模糊。
我在Stackoverflow上遇到了类似的问题,我没有找到令人满意的答案。
当我打开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 :(得分:0)
当我打开NavigationDrawer时,是否有任何简单的技巧可以使活动的布局变暗/变暗/模糊?
是的,您可以在打开抽屉时将活动的背景图像更改为模糊。
其他方法是简单地通过setalpha()更改alpha或您的活动,并传递您想要的更改量。
如果您对自己的活动有列表控制,并且想要模糊,那么下面的代码就可以了。
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;
}