Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何使我的ImageView在.startAnimation()运行时响应onClickevents?_Android_Multithreading_Animation - Fatal编程技术网

Android 如何使我的ImageView在.startAnimation()运行时响应onClickevents?

Android 如何使我的ImageView在.startAnimation()运行时响应onClickevents?,android,multithreading,animation,Android,Multithreading,Animation,我是android新手,我正面临一个问题,我试图让我的ImageView,通过startAnimation()播放动画,当用户点击它时,它变得不可见。然而,只有在动画完成后,Imageview才不可见。我的假设是,这是因为它们都在UI线程上运行。然而,令人惊讶的是,当我将事件处理从setVisibility更改为startAnimation()时,它实际上听到了单击,中断了动画并重新启动了它 为了解决我的问题(结果确实很好),我制作了一个新的动画对象,与第一个对象相反,它显示了图像视图,隐藏了图

我是android新手,我正面临一个问题,我试图让我的
ImageView
,通过
startAnimation()
播放动画,当用户点击它时,它变得不可见。然而,只有在动画完成后,
Imageview
才不可见。我的假设是,这是因为它们都在UI线程上运行。然而,令人惊讶的是,当我将事件处理从
setVisibility
更改为
startAnimation()
时,它实际上听到了单击,中断了动画并重新启动了它

为了解决我的问题(结果确实很好),我制作了一个新的
动画
对象,与第一个对象相反,它显示了
图像视图
,隐藏了
图像视图
,效果非常好,但我仍然很好奇为什么我的
图像视图
会选择性地响应不同的事件处理

此代码仅在动画完成后更改可见性

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    face = (ImageView)findViewById(R.id.face);
    final Animation showAnimation=AnimationUtils.loadAnimation(MainActivity.this,R.anim.animation);
    face.startAnimation(showAnimation);
    face.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            face.setVisibility(View.INVISIBLE);

        }
    });
}
此代码在播放原始动画时更改动画

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    face = (ImageView)findViewById(R.id.face);
    final Animation showAnimation=AnimationUtils.loadAnimation(MainActivity.this,R.anim.animation);
    face.startAnimation(showAnimation);
    face.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Animation hideAnimation = AnimationUtils.loadAnimation(MainActivity.this,R.anim.animation1);
            face.startAnimation(hideAnimation);

        }
    });
}

您不应调用
face.setVisibility(…)
,安装的tt应为:

face.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        v.setVisibility(View.INVISIBLE);

    }
});
当我添加clearAnimation()时,setVisibility()起作用