Android 点击View外部消失

来源:互联网 发布:电音大神 知乎 编辑:程序博客网 时间:2024/05/20 11:46
public void setOnTouchOutsideViewListener(View view, OnTouchOutsideViewListener onTouchOutsideViewListener) {    mTouchOutsideView = view;    mOnTouchOutsideViewListener = onTouchOutsideViewListener;}public OnTouchOutsideViewListener getOnTouchOutsideViewListener() {    return mOnTouchOutsideViewListener;}@Overridepublic boolean dispatchTouchEvent(final MotionEvent ev) {    if (ev.getAction() == MotionEvent.ACTION_DOWN) {        // Notify touch outside listener if user tapped outside a given view        if (mOnTouchOutsideViewListener != null && mTouchOutsideView != null                && mTouchOutsideView.getVisibility() == View.VISIBLE) {            Rect viewRect = new Rect();            mTouchOutsideView.getGlobalVisibleRect(viewRect);            if (!viewRect.contains((int) ev.getRawX(), (int) ev.getRawY())) {                mOnTouchOutsideViewListener.onTouchOutside(mTouchOutsideView, ev);            }        }    }    return super.dispatchTouchEvent(ev);}/** * Interface definition for a callback to be invoked when a touch event has occurred outside a formerly specified * view. See {@link #setOnTouchOutsideViewListener(View, OnTouchOutsideViewListener).} */public interface OnTouchOutsideViewListener {    /**     * Called when a touch event has occurred outside a given view.     *     * @param view  The view that has not been touched.     * @param event The MotionEvent object containing full information about the event.     */    public void onTouchOutside(View view, MotionEvent event);}
0 0
原创粉丝点击