PopupWindow 定点弹窗使用实例

完成效果:点哪儿, 哪儿弹出窗口

1、写一个xml布局文件用来当作点击后的弹窗,

在Activtity中用onTouchEvent方法,通过参数MotionEvent.getX/getY来获取对应的xy轴坐标:

public int x, y;

         Viewvv;

         Viewview;

         PopupWindowpop;

         //手机屏幕大小

         intxX, yY;

         privateDisplayMetrics dm;

 

         @Override

         protectedvoid onCreate(Bundle savedInstanceState) {

                   //TODO Auto-generated method stub

                   super.onCreate(savedInstanceState);

                   setContentView(R.layout.popup_activity);

                   vv= getLayoutInflater().inflate(R.layout.popup_activity, null);

                   initPopupWindow();

//               获取当前手机分辨率

                   dm= new DisplayMetrics();

                   getWindowManager().getDefaultDisplay().getMetrics(dm);

                   xX= dm.widthPixels / 2;

                   yY= dm.heightPixels / 2;

         }

 

         //实现onTouchEvent方法

         publicboolean onTouchEvent(MotionEvent event) {

                   //如果是按下操作

                   if(event.getAction() == MotionEvent.ACTION_DOWN) {

                            //获取点击后的x_y轴坐标

                            x= (int) event.getX();

                            y= (int) event.getY();

 

                            showXY(x,y);

                   }

                   returnsuper.onTouchEvent(event);

         }

 

         privatevoid showXY(int x, int y) {

 

                   //y-=60;

                   //判断当前的popupwindow是否正在显示,如正在显示,会清除后在对当前坐标位置显示

                   if(pop.isShowing()) {

                            pop.dismiss();

                            pop.showAtLocation(vv,Gravity.CENTER, x - xX+88, y - yY+44);

                            //pop.showAsDropDown(view, x, y);

                   }else {

                            //这是第一次点击!(小编对天发誓!)

                            //y+=60;

                            pop.showAtLocation(vv,Gravity.CENTER, x - xX+88, y - yY+44);

                            //pop.showAsDropDown(view, x, y);

                   }

         }

重写Activity中的initPopupWindow方法,实例化PopupWindow,showAsDropDown,参数中传入x,y轴坐标,便能根据坐标点显示

private void initPopupWindow() {

                   //填充布局

                   view= this.getLayoutInflater().inflate(R.layout.popup_window, null);

                   //用来将当前布局设置为wrapcontent

                   pop= new PopupWindow(view, ViewGroup.LayoutParams.WRAP_CONTENT,

                                     ViewGroup.LayoutParams.WRAP_CONTENT);

                   //允许在外点击消失

                   pop.setOutsideTouchable(true);

         }


好了,到此完成全部的操作,是不是觉得很简单呢?哈哈哈~跟着兄弟连王老师的步伐走就是这么简单!

添加QQ:1981812120 获取更多安卓新知识!

小报~ 听说兄弟连安卓春季班优惠力度极大哟~快快联系我深入了解吧

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值