Android中的GIF监听器

Posted

技术标签:

【中文标题】Android中的GIF监听器【英文标题】:GIF Listener in android 【发布时间】:2016-05-29 21:03:38 【问题描述】:

我正在使用这个How to animate .gif images in an android? 解决方案(Shobhit Puri 的第一个答案)在我的应用程序中实现一些 Gif。现在我想在它们上添加一些监听器(单击监听器)。 我试过的每一个程序都没有奏效。

想法是:

gif是由3张图片组成的,当你点击第一张图片时,gif会换成另一张,以此类推。

感谢您的关注。

编辑: 其实我正在尝试这种方式

    findViewById(R.id.ivAnimation).setOnClickListener(new View.OnClickListener()
         @Override
    public void onClick(View v)
             Log.i(TAG, "onClickGif PrincipalActivity");
         
    );

在 mainActivity 的 onCreate() 上。日志生成良好,但我无法查看

【问题讨论】:

View.setOnClickListener 没用? 我忘了说 findViewById(R.id.ivAnimation).setOnClickListener(new View.OnClickListener() @Override public void onClick(View v) Log.i(TAG, "onClickGif PrincipalActivity "); );工作,在日志中我可以阅读“onClickgif ...”,但除了将其附加到日志中之外,我什么也做不了 您需要将 findViewById(R.id.ivAnimation) 的实例保存到 ImageView(或 XML 中的任何内容),以便对视图对象执行任何操作 【参考方案1】:

我不确定 gif,但如果你有单独的文件,你可以做这样的事情。

警告:未经测试:)

final int[] imgs = new int[] R.drawable.img1, R.drawable.img2, R.drawable.img3;
int position = 0;

final ImageView gifView = (ImageView) findViewById(R.id.ivAnimation);
gifView.setImageResource(imgs[position]);

gifView.setOnClickListener(new View.OnClickListener()
    @Override
    public void onClick(View v)
        Log.i(TAG, "onClickGif PrincipalActivity");
        position = (position + 1) % imgs.length; // wrap around to "restart" gif
        gifView.setImageResource(imgs[position]);
    
);

【讨论】:

感谢您的帮助。使用此代码,我可以看到 gif 像往常一样更改图像加上一个较小的静态图像,单击时会更改为第三个图像。 我不知道您使用什么 View 来显示 gif,但我认为它会不断地在背景中绘制它并忽略图像源。您可能需要编辑自定义 Gif 图像视图的源代码以允许单步执行“帧”

以上是关于Android中的GIF监听器的主要内容,如果未能解决你的问题,请参考以下文章

动画 gif 不播放 - 鼠标侦听器 - 事件鼠标输入

Android中的全局监听方式

Android jetpack compose中的按钮长按监听器

Glide只播放一次Gif以及监听播放完成的实现方案

Android:RecyclerView onClick 监听器没有得到

Android webview中的js如何监听键盘事件