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