Posted at

GONEなViewに対してstartAnimationが動かない(時がある)

自分用備忘録です。

下の様に、ContainerというViewをタッチするとその子ViewであるgonableViewがフェードイン・アウトするようなものを作ろうとしました。(フェードアウトの方は特に問題なかったので省略しています。)

gonableViewがGONEにContainerをタッチすれば、本来ならばstartAnimationのonAnimationStart内のgonableView.setVisibility(View.VISIBLE)が動き、ヒョコッとフェードインするというものです。


Container.java


public class Container extends LinearLayout {

public Container(Context context){
super(context);
this.setOnClickListener(new myOnClickListener());
}

}

private class myOnClickListener implements View.OnClickListener {

final LinearLayout gonableView
= (LinearLayout) v.findViewById(R.id.gonableview);

@Override
public void onClick(final View v) {

Animation OutAnimation
= AnimationUtils.loadAnimation(getContext(),R.anim.out_animation);

OutAnimation.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
gonableView.setVisibility(View.VISIBLE);
}
@Override
public void onAnimationEnd(Animation animation) {
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});

if(gonableView.getVisibility()!=View.VISIBLE){
gonableView.startAnimation(OutAnimation);
}
}
}


途中までこれで動いていたのですが、急に動かなくなり、色々コードを見てみるものの、特に改変した部分は無く…

色々苦戦した後、何となく最後のifブロックに

gonableView.setVisibility(View.VISIBLE);

を入れてみると問題なく動きました。

onAnimationStartは呼ばれたり呼ばれなかったりする…?