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编辑  收藏  举报

导航