只要按下ImageView,就显示ImageView

时间:2016-11-24 23:54:51

标签: android imageview android-recyclerview onclicklistener ontouchlistener

我真的不知道我做错了什么。我正在尝试实现一种方法,在我的overlay(container_dia)上显示ImageView(container_post),其中包含已发布图像的信息(例如:日期,文件名等)。

只要用户按下ImageView,就会显示overlay(container_dia)。为此我在这里写了这个:

  fadeIn = AnimationUtils.loadAnimation(mView.getContext(), android.R.anim.fade_in);
            fadeIn.setDuration(100);
            fadeOut = AnimationUtils.loadAnimation(mView.getContext(), android.R.anim.fade_out);
            fadeOut.setDuration(100);

            container_post = (RelativeLayout) mView.findViewById(R.id.container_post);
            container_post.setVisibility(View.VISIBLE);
            container_diagramm = (RelativeLayout) mView.findViewById(R.id.container_diagramm);
            container_diagramm.setVisibility(View.INVISIBLE);
            ImageView postImageLouminadeStream = (ImageView) mView.findViewById(R.id.postImageLouminadeContent);
            Picasso.with(ctx).load(image).into(postImageLouminadeStream);
            postImageLouminadeStream.setOnTouchListener(new View.OnTouchListener() {
                @Override
                public boolean onTouch(View view, MotionEvent motionEvent) {
                    switch (motionEvent.getAction()) {
                        case MotionEvent.ACTION_DOWN:
                            container_post.startAnimation(fadeOut);
                            container_post.setVisibility(view.INVISIBLE);
                            container_diagramm.startAnimation(fadeIn);
                            container_diagramm.setVisibility(View.VISIBLE);
                            break;

                        case MotionEvent.ACTION_UP:
                            container_post.startAnimation(fadeIn);
                            container_post.setVisibility(view.VISIBLE);
                            container_diagramm.startAnimation(fadeOut);
                            container_diagramm.setVisibility(View.INVISIBLE);
                            break;

                        case MotionEvent.ACTION_CANCEL:
                            container_post.startAnimation(fadeIn);
                            container_post.setVisibility(view.VISIBLE);
                            container_diagramm.startAnimation(fadeOut);
                            container_diagramm.setVisibility(View.INVISIBLE);
                            break;
                    }
                    return false;
                }
            });
        }

我已经读到这应该是我的意图的正确方法,但它只是像普通的onClickListener一样工作,因为当我的手指离开屏幕时overlay停留。当我再次按Image时,会显示Image一瞬间,然后再次显示叠加层。有谁知道我做错了什么?

1 个答案:

答案 0 :(得分:0)

如果您足够高兴使用图书馆来获得相同的效果,您可以尝试 https://github.com/RiccardoMoro/LongPressPopup