/** * 显示弹出框 * * @param context */ public static void showPopupWindow( final Context context, final DialogCallback callback) { // 获取WindowManager final WindowManager mWindowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); final WindowManager.LayoutParams params = new WindowManager.LayoutParams(); // 类型 params.type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT; // 设置flag params.flags = WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE; // 如果设置了WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,弹出的View收不到Back键的事件 // 不设置这个弹出框的透明遮罩显示为黑色 params.format = PixelFormat.TRANSLUCENT; // FLAG_NOT_TOUCH_MODAL不阻塞事件传递到后面的窗口 // 设置 FLAG_NOT_FOCUSABLE 悬浮窗口较小时,后面的应用图标由不可长按变为可长按 // 不设置这个flag的话,home页的划屏会有问题 params.width = WindowManager.LayoutParams.WRAP_CONTENT; params.height = WindowManager.LayoutParams.WRAP_CONTENT; params.gravity = Gravity.CENTER; TextView textView = new TextView(context); textView.setText( "sfgsfdsfbsadfbasdfg" ); textView.setTextSize( 100 ); final View mView = LayoutInflater.from(context).inflate(R.layout.item_dialog_exit, null ); TextView tv_itemdialog_title = (TextView) mView.findViewById(R.id.tv_itemdialog_title); TextView tv_itemdialog_ok = (TextView) mView.findViewById(R.id.tv_itemdialog_ok); TextView tv_itemdialog_close = (TextView) mView.findViewById(R.id.tv_itemdialog_close); tv_itemdialog_ok.setText( "重新登录" ); tv_itemdialog_close.setText( "退出登录" ); tv_itemdialog_title.setText( "该账户在其他设备登录,若不是您在操作,请及时修改密码以防泄露信息" ); tv_itemdialog_ok.setOnClickListener( new View.OnClickListener() { @Override public void onClick(View v) { // 隐藏弹窗 mWindowManager.removeView(mView); callback.onPositive(); } }); tv_itemdialog_close.setOnClickListener( new View.OnClickListener() { @Override public void onClick(View v) { mWindowManager.removeView(mView); callback.onNegative(); } }); mWindowManager.addView(textView, params); } |