android 弹出框总结一
方法1:
在当前acti里获取(WindowManager) getSystemService(Context.WINDOW_SERVICE); 管理对象;然后获取WindowManager.LayoutParams 对象来对
view的属性进行设置 ,各种现实的样式;然后 windowManager.addView(linear, lp); 在当前acti里去addview; 在acti中的onDestroy()
windowManager.removeView(linear);(ViewGroup.LayoutParams http://www.eoeandroid.com/thread-84919-1-1.html#597413-tsina-1-69502-9aa6525872536044b0a25da36d88a2ee)
/** 弹出悬浮框*/
private void addWindowView() {
linear = LayoutInflater.from(this) .inflate(R.layout.listpouwindow, null); m_txtOverlay = (TextView) linear.findViewById(R.id.textwindow); // 默认设置为不可见。 m_txtOverlay.setVisibility(View.INVISIBLE); // 设置WindowManager WindowManager.LayoutParams lp = new WindowManager.LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.TYPE_TOAST, // 设置为无焦点状态 WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE, // 半透明效果 PixelFormat.TRANSLUCENT);
windowManager = (WindowManager) getSystemService(Context.WINDOW_SERVICE); windowManager.addView(linear, lp); }
各个变量的解释:
/*
* 1:首先,得到WindoeManager对象: WindowManager wManager =
* getApplicationContext().getSystemService( Context. WINDOW_ SERVICE);
*
* 2: 其次,得到WindowManager.LayoutParams对象,为后续设置相关参数做准备: private
* WindowManager.LayoutParams wmParams=new WindowManager.LayoutParams();
*
* 3:接着,设置相关的窗口布局参数,要实现悬浮窗口效果,主要需要设置的参数有: wmParams.type =
* LayoutParams.TYPE_PHONE; // 设置window type wmParams.format =
* PixelFormat.RGBA_8888; // 设置图片格式,效果为背景透明
*
* 下面的flags属性的效果形同“锁定”。 悬浮窗不可触摸,不接受任何事件,同时不影响后面的事件响应。
*
* wmParams.flags=LayoutParams.FLAG_NOT_TOUCH_MODAL |
* LayoutParams.FLAG_NOT_FOCUSABLE | LayoutParams.FLAG_NOT_TOUCHABLE;
*
* wmParams.gravity = Gravity.RIGHT| Gravity. CENTER_VERTICAL; //
* 调整悬浮窗口至右侧中间 // 以屏幕左上角为原点,设置x、y初始值 wmParams.x = 0; wmParams.y = 0;
*
* //设置悬浮窗口长宽数据 wmParams.width = WindowManager.LayoutParams.WRAP_CONTENT;;
* wmParams.height =WindowManager.LayoutParams.WRAP_CONTENT;;
*
* 然后,就可以将需要加到悬浮窗口中的View加入到窗口中了:
* if(view.getParent==null)//如果view没有被加入到某个父组件中,则加入WindowManager中
* wManager.addView(view,wmParams);
*
* //移除 if(view.getParent()!=null) wManager.removeView(view);
*/
方式2:自定义对话框
public class UserInfoDialog extends Dialog { private LayoutParams lp;
public UserInfoDialog(Context context) { super(context, R.style.Dialog); setContentView(R.layout.user_center_content); // 设置点击对话框之外能消失 setCanceledOnTouchOutside(true); // 设置window属性 lp = getWindow().getAttributes(); lp.gravity = Gravity.TOP; lp.dimAmount = 0; // 去背景遮盖 lp.alpha = 1.0f; lp.y = 55; getWindow().setAttributes(lp);
} }
posted on 2013-05-13 15:21 yujian_bcq 阅读(493) 评论(0) 编辑 收藏 举报