【问题标题】:GridView (of ImageViews) : setOnTouchListener and setOnItemClickListener implementationGridView(ImageViews):setOnTouchListener 和 setOnItemClickListener 实现
【发布时间】:2017-02-28 16:52:42
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

    标签: android gridview ontouchlistener onitemclicklistener


    【解决方案1】:

    对于遇到同样问题的人,我使用了 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);
    

    【讨论】:

      猜你喜欢
      • 2016-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-19
      • 2014-06-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多