我有一个GridView
,每个项目都来自ImageView
和ΤextView
,其可见性设置为INVISIBLE。
GridView为每个项目都有一个onClickListener。 OnItemClick我将TextView设置为可见并附加ClickListener。 然后,如果用户点击TextView,我将bakground设置为GRAY,我在自定义AsyncTask上执行某项任务,并且我使用动画,我想再次将视图设置为Invisible和bg颜色透明。
因为我需要在内部类方法(onAnimationEnd())中引用View,所以我将它分配给最终的var。 问题是,如果我连续第二次单击相同的视图,视图保持可见(不会通过onAnimationEnd())。
代码是:
gridview.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
child1 = getView().findViewById(position);
child1.setVisibility(View.VISIBLE);
child1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
final View animView = v;
animView.setBackgroundColor(Color.GRAY);
SetWallpaperTask t = new SetWallpaperTask();
t.execute(res2);
AlphaAnimation fadeOutAnimation = new AlphaAnimation(1, 0);
fadeOutAnimation.setDuration(4000); // time for animation in milliseconds
fadeOutAnimation.setFillAfter(false); // make the transformation persist
fadeOutAnimation.setAnimationListener(new AnimationListener() {
@Override
public void onAnimationEnd(Animation animation) {
animView.setBackgroundColor(0x00000000);
animView.setVisibility(View.INVISIBLE);
}
@Override
public void onAnimationRepeat(Animation animation) { }
@Override
public void onAnimationStart(Animation animation) { }
});
animView.setAnimation(fadeOutAnimation);
animView.startAnimation(fadeOutAnimation);
}
});
}
});