自分用備忘録です。
下の様に、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は呼ばれたり呼ばれなかったりする…?