美文网首页Android开发Android知识Android技术知识
在Activity中实现某View触摸其外部区域后,此View隐

在Activity中实现某View触摸其外部区域后,此View隐

作者: 鲁克巴克诗 | 来源:发表于2017-02-04 15:04 被阅读152次

    标题所说的效果,就是类似Dialog和PopupWindow的 setOutsideTouchable()。
    按照惯例,先上效果图:

    show.gif

    首先说一下效果图,我是怎么操作的:

    1. 点击放大镜,将EditText控件使用淡入动画显示出来。
    2. 在EditText上随便打了几个字。
    3. 点击EditText之外的其他区域,EditText通过渐淡出动画逐渐消失。

    实现触摸其他位置EditText控件消失这个效果,需要重写Activity的onTouchEvent()方法。

    实现思路是,判断触摸点的xy轴坐标。当触摸点x轴的值大于EditText的left值并小于EditText的right值,则可以判断触摸点x轴的位置处于EditText的left值和right值之间。同理,判断触摸点y轴的值。最后将结果取反,则可知触摸点处于EditText之外的位置。

      @Override
        public boolean onTouchEvent(MotionEvent event) {
            if (event.getAction() == MotionEvent.ACTION_DOWN) {
               if (!(event.getX() > editText.getLeft() && event.getX() < editText.getRight() && event.getY() > editText.getTop() && event.getY() < editText.getBottom())) {
                    if (editText.getVisibility() == View.VISIBLE) {
                        AlphaAnimation alphaAnimation = new AlphaAnimation(1f, 0f);
                        alphaAnimation.setDuration(1000);
                        editText.startAnimation(alphaAnimation);
                        editText.setVisibility(View.GONE);
                    }
                }
            }
            return super.onTouchEvent(event);
        }
    

    相关文章

      网友评论

        本文标题:在Activity中实现某View触摸其外部区域后,此View隐

        本文链接:https://www.haomeiwen.com/subject/qdgjittx.html