您的位置:首页 > 移动开发 > Android开发

Android---悬浮框(PopupWindow)的弹出及屏幕变为半透明

2016-04-05 16:59 337 查看
先来说PopupWindow窗口的弹出,设计的重要类有,WindowManager(Android的窗口机制基类)和PopupWindow(悬浮框)

代码如下:

public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.headline_reback://返回键
Intent intent = getIntent();
setResult(0);
finish();
overridePendingTransition(R.anim.left_in,R.anim.right_out);
break;
case R.id.qr_code://点击二维码弹出
LayoutInflater inflater = this.getLayoutInflater();
LayoutInflater inflater2 = this.getLayoutInflater();
//得到界面视图
View currean_View = inflater.inflate(R.layout.activity_about_self, null);
//得到要弹出的界面视图
View view = inflater2.inflate(R.layout.qrcode_share, null);
WindowManager windowManager = getWindowManager();
int width = windowManager.getDefaultDisplay().getWidth();
int heigth = windowManager.getDefaultDisplay().getHeight();
Log.i("width", width+"");
Log.i("height", heigth+"");
PopupWindow popupWindow = new PopupWindow(view,(int)(width*0.8),(int)(heigth*0.5));
popupWindow.setFocusable(true);
popupWindow.setOutsideTouchable(true);
popupWindow.setBackgroundDrawable(new BitmapDrawable());
//显示在屏幕中央
popupWindow.showAtLocation(currean_View, Gravity.CENTER, 0, 40);
//popupWindow弹出后屏幕半透明
BackgroudAlpha((float)0.5);
//弹出窗口关闭事件
popupWindow.setOnDismissListener(new popupwindowdismisslistener());
break;
default:
break;
}
}
//设置屏幕背景透明度
private void BackgroudAlpha(float alpha) {
// TODO Auto-generated method stub
WindowManager.LayoutParams l = this.getWindow().getAttributes();
l.alpha = alpha;
getWindow().setAttributes(l);
}
//点击其他部分popwindow消失时,屏幕恢复透明度
class popupwindowdismisslistener implements PopupWindow.OnDismissListener{

@Override
public void onDismiss() {
// TODO Auto-generated method stub
BackgroudAlpha((float)1);
}

}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: