いちおくまんえん

最近はcocos2d-xでゲームアプリ「いちおくまんえん」の制作がメインです。 あとアニメも少々・・

Android invisibleとgoneの違いでアニメーションがうまく動かない

単純にinvisibleは実態はそこにあるけどただ見えていないもの。
goneは異空間にでも消えたかのように、どこかに実態はあるけど、そこには存在しないようになるもの。

というように考えていて、invisibleは触れてしまうのではないのか!とgoneをよく使うようにしてました。

同じ場所に違うタイプのものを予めgoneでいくつか置いておいて、状況に合わせてvisibleとgoneを切り替えてたりしてました。

普段はそれで特に問題なく動いてたので気にしてなかったんですが、いつも通りアニメーションさせようとしてはまりました。
動いたり動かなかったりするんです。

リリース目前でデバッガーさんにデバッグ機を全て確保されてシミュレータでしかほとんど動作確認できてない状況でして。
定時過ぎてデバッガーさんが帰った後に、ちょっと実機で動作みてみると動かない。。

バグチケットで一部の端末でアニメーションが動かない部分があるっていうのも上がっていて

機種依存か・・・これはめんどくさいやつや・・・('A`)

とちょっと優先順位下げて放置してたんですが、今回のやつはある程度優秀な端末で動いたり動かなかったりしてました。

原因はタイトルの通りアニメーションさせようとしているViewの元のVisibilityがinvisibleかgoneかによって起こっていました。

ImageViewをフェードイン・フェードアウトさせたりするのに最初goneで置いておいてアニメーションのタイミングでvisibleに切り替えてフェードインさせてました。

これが問題で元のVisibilityをgoneからinvisibleに変更したら動くようになりました。


ほんと半日くらい潰れました(´・ω・`)


とは言え、まだ数台でしか試してないので本当に解決したかは不明w


onCreateのタイミングでアニメーション開始してもまだViewの準備が出来てないから動作は保証されないよってことで、onWindowFocusChangedでようやく準備できるよと。

毎回画面復帰で発動させたくonResumeで発動してたので、onWindowFocusChangedに移動してみたけどそういう問題ではなかったようで、今回の件はこれでは解決しませんでした。

でもこれが一応解決のヒントにはなったんですよね。

もしかしてgone→visibleでまだViewの準備出来てないからではと・・・

Viewのサイズが保持されてるinvisibleであれば即実行できるんでは?と変更してみたところビンゴでした。


ふぅ


最近ずっとAndroidの開発ばっかりしてます(´・ω・`)cocosやりたい

確実にAndroidの方のスキルアップはしていて、色々とつまずいたとこを記事にしたいとは思ってるんですが、Androidのことばっかりになりそうで止めてました。

とはいえ、更新が止まるのは避けたいのでAndroidのことも書いていこうと思います(`・ω・´)ゞ