Androidで回転するViewを非表示にするとき

回転するイメージボタンを非表示にする処理があったのですが、ちょっと躓きましたのでメモ

ボタンを回転させるにはやはりアニメーションでしょう!ってことで

RotateAnimation rotate = new RotateAnimation(0, 90, button.getWidth()/2, target.getHeight()/2);
rotate.setDuration(200);
rotate.setFillAfter(true);
button.startAnimation(rotate);

って感じで回転させてたのです。これはこれでOK

で、問題はこのボタンを非表示にする時。

button.setVisibility(View.INVISIBLE);

とかしても、消えない。消えないよぉ・・なんでだよぉ・・・
百歩譲ってアニメーション中ならわかるけど、回転終わってるじゃん。。

いろいろ頭にきますが、こんなときはアニメーションをクリアすれば消えます。

button.clearAnimation();
button.setVisibility(View.INVISIBLE);

で、さらに問題が、こんどはこれを表示するときなんですけど、当然同じ回転角で表示したいのです。

普通考えるとこんな感じ

button.setRotation(angle);
button.setVisibility(View.VISIBLE);

でもapi8(android2.2)では setRotation が使えないのです。
こまった。
で、WEBを検索するとアニメーションで時間を0にすればいいよ!との冗談みたいな方法が
至る所で書かれていたわけです。
まじですか。

しょうがないのでこんな感じで実装しました。かなしい。

RotateAnimation rotate = new RotateAnimation(0, 90, button.getWidth()/2,target.getHeight()/2);
rotate.setDuration(0);
rotate.setFillAfter(true);
button.startAnimation(rotate);

button.setVisibility(View.VISIBLE);

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です