【发布时间】:2016-11-24 23:54:50
【问题描述】:
我真的不知道我做错了什么。我正在尝试实现一种在我的ImageView(container_post) 上显示overlay(container_dia) 的方法,其中包含发布图像的信息(例如:日期、文件名等)。
只要用户按下 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,然后覆盖再次出现。有谁知道我做错了什么?
【问题讨论】:
标签: android imageview android-recyclerview onclicklistener ontouchlistener