在这种情况下如何使用触摸监听器

问题描述

在这方面我需要帮助 无论如何,我正在尝试通过using MyUMap = std::unordered_map<std::string,std::string>; MyUMap default_map_object_with_static_storage_duration{}; bool existence_checker(const std::string& s = "",MyUMap& um = default_map_object_with_static_storage_duration); 来实现按钮按下。我想要的是,ImageView显示认图像,如果按下(ImageView)[具有OnTouch块],则可以运行帧动画。当您释放触摸[有一个MotionEvent.ACTION_DOWN块时,它将停止动画并返回认图像。

注意:帧动画是连续重复的,并且不应包括认图像作为循环播放的图像之一。 (触摸时不应显示按钮上的图像)

现在的问题是,我可以使用动画了,但是根据android文档,认情况下会显示``标签中的第一项。但是,如果我将认图像(按钮未触摸状态)添加为第一项,则它将在循环中显示。另外,当我释放触摸时,我使用MotionEvent.ACTION_UP的{​​{1}}方法,该方法将动画停止在当前帧(图像)上,我似乎找不到任何方法来停止并转到图片认状态。

这是我的代码

button_anim.xml

stop()

MainActivity.java

AnimationDrawable

图片:-button1_inactive.png

解决方法

天真的解决方法是停止后重新分配默认图像,所以:

...
else if (action == MotionEvent.ACTION_UP) {
        buttonAnim.stop();
        button.setBackgroundResource( /** Assign again here the default image */ );
    }
...

“在此处再次分配默认图片” 注释替换为默认图片标识符或可绘制图片。

从逻辑上讲,在按下时再次将R.drawable.button_anim分配给按钮,然后再次开始动画。