GridView(ImageViews):setOnTouchListener 和 setOnItemClickListener 实现

GridView (of ImageViews) : setOnTouchListener and setOnItemClickListener implementation

目前我有一个包含一些 ImageView 的 GridView。 GridView 实现了 setOnItemClickListener。当 onItemClick 发生时,用户会得到一个对话框,然后按下或关闭,他 returns 到当前的 GridView。 到目前为止一切正常。

我想知道是否有办法更改选定的 imageView(使用另一个图像,甚至只是 alpha)。

我曾尝试在 setOnItemClickListener 中更改图像,但是当我在 dialog.dismiss() 调用后尝试将其更改回正常图像时,会弹出几毫秒的白屏。虽然图像设置正确,但我想避免这种白色图像。

我已经尝试实现 GridView.setOnTouchListener,但我只会得到一个白屏(几毫秒)并且不会执行其他操作(没有弹出对话框)。

我什至尝试在 ViewHolder class 中实现 OnTouchListener,尽管它似乎解决了一些问题(更改 ACTION_DOWN 上的 alpha 是永久性的,因此我不得不重新选择相同的项目以将 alpha 改回正常),setOnItemClickListener 根本不起作用。

有人可以帮我解决这个问题吗? 提前致谢!

对于遇到同样问题的人,我使用了 TransitionDrawable。在我的 imageAdapter 中,我加载了转换 xml 个文件:

<?xml version="1.0" encoding="utf-8"?>
<transition xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@drawable/soft"/>
    <item android:drawable="@drawable/soft_pressed"/>

</transition>

以及 gridview.setOnItemClickListener,我使用了这个代码示例:

ViewHolder holder = (ViewHolder) v.getTag();
final ImageView imageview = holder.image;
((TransitionDrawable)imageview.getDrawable()).startTransition(2000);

并执行下一条命令(需要一些延迟):

 final Handler handler = new Handler();
 handler.postDelayed(new Runnable() {
    @Override
    public void run() {
    YourMethod(...);
    //reverse the transition
((TransitionDrawable)imageview.getDrawable()).reverseTransition(2000);
    }
  }, 2000);