android PopupWindos之引导

来源:互联网 发布:qr分解求逆矩阵 编辑:程序博客网 时间:2024/06/03 21:43

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

设计图如下:


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();            }        });


1 0
原创粉丝点击