【问题标题】:How to make setOnClickListener on a dynamic imageview如何在动态图像视图上制作 setOnClickListener
【发布时间】:2020-11-21 10:42:52
【问题描述】:

在 Android Studio 中工作,我需要在我的应用中添加一个点击监听器,该监听器在我的 imageview 上具有一定的动画效果。这是我在 MainActivity 中的代码:

myImage.startAnimation(myAnimation);
myImage.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        //DO SOMETHING
    } 
});

myAnimation 来自 anim 文件夹中的 XML,它执行平移动画:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
    android:interpolator="@android:anim/accelerate_interpolator"
    android:repeatCount="infinite"
    android:repeatMode="reverse"
    android:fromYDelta="0%p"
    android:toYDelta="40%p"
    android:duration="1000"/>
</set>

这很好用,尽管此点击侦听器设置在布局上有图像的空间 (activity_main.xml) 上并且不跟随图像中插入的动画。如果我单击布局中属于图像的空间,即使由于动画而导致图像不存在,单击侦听器也会启动。

有没有一种方法可以将点击侦听器附加到运动中的图像视图?

谢谢

【问题讨论】:

    标签: android imageview android-animation onclicklistener


    【解决方案1】:

    发生这种情况是因为您使用的 xml Translate 动画并没有真正为 View 的属性设置动画,它只是移动屏幕上的像素,所以看起来它已经改变了位置,这就是 OnClickListener 仍然处于活动状态的原因View 的原始位置,因为 Android 认为 View 从未真正移动过。 简单的解决方案使用ObjectAnimator 甚至更好的ViewPropertyAnimator。两者都会为 View 的属性设置动画,因此 OnClicklistener 也会随之改变它的位置。

    【讨论】:

      猜你喜欢
      • 2021-03-20
      • 2020-04-17
      • 2018-12-16
      • 1970-01-01
      • 1970-01-01
      • 2011-07-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多