有没有简单的技巧,使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;
}
你是否在标准'DrawerLayout'中使用了这个? –
是'android.support.v4.widget.DrawerLayout' –
嗯,我想它应该做的,默认情况下,除非'LDrawer'以某种方式覆盖它。尝试在设置切换后在'DrawerLayout'对象上调用'setScrimColor(0x99000000)'。 –