很多交互设计师都是拿iphone手机的,会给android提出很多iphone的交互风格,比如:一个从底部弹出的操作菜单,还要和黑色半透明蒙层的渐变一起出来。
看过很多应用,比如招行的掌上生活,甚至是连手机qq做的都不是很好。
这里贡献一个demo,可以很好的实现该功能。
效果如下:
实现原理:
在弹出自定义的PopupWindow时,增加一个半透明蒙层view到窗口,并置于PopupWindow下方。
代码如下:
@Override
public void showAtLocation(View parent, int gravity, int x, int y) {
addMaskView(parent.getWindowToken());
super.showAtLocation(parent, gravity, x, y);
}
private void addMaskView(IBinder token) {
WindowManager.LayoutParams p = new WindowManager.LayoutParams();
p.width = WindowManager.LayoutParams.MATCH_PARENT;
p.height = WindowManager.LayoutParams.MATCH_PARENT;
p.format = PixelFormat.TRANSLUCENT;
p.type = WindowManager.LayoutParams.TYPE_APPLICATION_PANEL;
p.token = token;
p.windowAnimations = android.R.style.Animation_Toast;
maskView = new View(context);
maskView.setBackgroundColor(0x7f000000);
maskView.setFitsSystemWindows(false);
maskView.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
removeMaskView();
return true;
}
return false;
}
});
wm.addView(maskView, p);
}
具体使用情况,请参考https://github.com/yzeaho/BottomPushPopWindow