android PopupWindos之引导

  
           今天在公司接到一个比较特殊的需求.需求相当简单,引导用户去点击某个按钮.

设计图如下:


1.解决问题思路

         1.使用PopupWindow.因为PopupWindow能够指定相对于某个View进行显示.所以我们可以使用这中方式做实现.

 2.需求.

        1.当点击PopupWindow 需要让PopupWindow消失.

        2.当点击PopupWindow指向的按钮的时候.需要触发当前按钮的事件. 但是点击其他按钮,(不包括PopupWindows中的按钮)不能触发该按钮的事件.


3.需要解决的问题.

         第一:我们需要给PopupWindow设置一个OnTouchListener对象. 该对象的onTouch(View v, MotionEvent event)中的event对象.用来获取你点击屏幕的位置.

         第二:我们需要监听PopupWindow的Dismiss事件 我们需要在 PopupWindow.OnDismissListener onDismiss 方法中获取该Buttom在屏幕中的位置.          

核心代码如下:     


 
 popupWindow.setTouchInterceptor(new OnTouchListener()
        {
            @Override
            public boolean onTouch(View v, MotionEvent event)
            {
                if(event.getAction() == MotionEvent.ACTION_DOWN) mEvent = event;
                return true;
            }
        });

        popupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {
            @Override
            public void onDismiss()
            {
                int[] local = new int[2];
                mButton.getLocationOnScreen(local);
                if(mEvent.getRawX() < local[0]  || mEvent.getX() > (local[0] + mButton.getWidth()) || mEvent.getRawY() < local[1] ||  mEvent.getRawY()> ( local[1] + mButton.getHeight()))
                {
                    return;
                }
                mButton.callOnClick();
            }
        });


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值