PopupWindow的显示和背景
来源:互联网 发布:c语言for语句continue 编辑:程序博客网 时间:2024/04/19 19:04
private void showWindow(View parent) { if (popupWindow == null) { LayoutInflater layoutInflater=(LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); View view = layoutInflater.inflate(自定义的XML, null); popupWindow = new PopupWindow(view,500, 400);//实例化一个popupwindow大小(LayoutParams.WRAP_CONTENT自适应大小) } popupWindow.setFocusable(true); //设置PopupWindow可获得焦点 popupWindow.setOutsideTouchable(true); //设置非PopupWindow区域可触摸//设置背景变暗 popupWindow.setBackgroundDrawable(new BitmapDrawable()); WindowManager windowManager = (WindowManager) getSystemService(Context.WINDOW_SERVICE); WindowManager.LayoutParams lp = getWindow().getAttributes(); lp.alpha = 0.4f; //0.0-1.0 getWindow().setAttributes(lp); popupWindow.setOnDismissListener(new poponDismissListener()); //设置背景变暗完 // 显示的位置为:屏幕的宽度的一半-PopupWindow的高度的一半 int xPos = windowManager.getDefaultDisplay().getWidth() / 2 - popupWindow.getWidth() / 2; Log.i("coder", "xPos:" + xPos); int[] location = new int[2]; parent.getLocationOnScreen(location);
/**popupWindow显示的位置有三种,简单说下,showAsDropDown(anchor),showAsDropDown(anchor, xoff, yoff),showAtLocation(parent, gravity, x, y);前两个showAsDropDown方法是让PopupWindow相对于某个控件显示,而showAtLocation是相对于整个窗口的。第一个参数是View类型的parent,虽然这里参数名是parent,其实,不是把PopupWindow放到这个parent里,并不要求这个parent是一个ViewGroup,这个参数名让人误解。官方文档”a parent view to get the android.view.View.getWindowToken() token from“,这个parent的作用应该是调用其getWindowToken()方法获取窗口的Token,所以,只要是该窗口上的控件就可以了。第二个参数是Gravity,可以使用|附加多个属性,如Gravity.LEFT|Gravity.BOTTOM。第三四个参数是x,y偏移。**/
popupWindow.showAtLocation(parent, Gravity.CENTER, 0,0); //popupWindow.showAsDropDown(parent, xPos, 0); } /** popupWindow出来之后其他地方变暗 */ class poponDismissListener implements PopupWindow.OnDismissListener{ @Override public void onDismiss() { //Log.v("List_noteTypeActivity:", "我是关闭事件"); WindowManager.LayoutParams lp = getWindow().getAttributes(); lp.alpha = 1f; //0.0-1.0 getWindow().setAttributes(lp); } }//点击其他地方消失popupWindow.setOutsideTouchable(true); // 自定义view添加触摸事件 layoutInflater.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { if (event.getAction() != MotionEvent.ACTION_OUTSIDE) { popupWindow.dismiss(); popupWindow = null; return true; } return false; } });
0 0
- PopupWindow的显示和背景
- popupWindow设置显示和消失的动画 add:如何点击背景或返回键让popuwindow消失
- PopupWindow思路和显示方式的详解
- popupwindow 显示和消失的动画
- PopupWindow和dialog的显示位置
- PopupWindow屏幕中部显示背景变暗
- Popupwindow显示的问题
- PopupWindow的显示
- 126.PopupWindow的显示
- 自定义PopupWindow,带显示隐藏动画、全屏背景以及触摸屏幕空白区域消失的功能
- popupWindow的简单例子 背景模糊
- PopupWindow的使用及背景变暗设置
- popupwindow的使用,背景虚化
- 点击PopUpWindow出现背景变暗的效果
- PopupWindow的应用以及渐变背景
- 弹出PopupWindow背景变暗的实现
- 设置popupwindow弹出后的背景颜色
- 自定义背景和显示时间的Toast
- How Did Watson Answer —— Computation Optimization
- Hello form提交
- redis的小测试工程
- 关于VMWare虚拟机下搭建hadoop集群练习各虚拟机间无法ping通主机名的问题
- 申请TexturePacker免费注册码(TP:FF7D2841)
- PopupWindow的显示和背景
- Shader 边缘发光、变灰、高亮着色器
- String & StringBuffer & StringBuilder
- 文章标题
- 实现listview的divider带边距效果
- hdu 1114 完全背包 背包问题通俗讲解
- Android RecyclerView 使用完全解析 体验艺术般的控件
- java基础知识:ArrayList和LinkedList的区别
- Shell管道学习 free -m|grep "Mem"|awk'{print$2,$4}'