AndroidでTitanium Mobileのアニメーション機能を使うのはまだ早い?

Titanium Mobile。
開発元がMacでiPhoneメインに作っているのか、Androidアプリを作ろうとすると色々問題があります…

今までに遭遇してしまった問題たち。

・WindowsでAndroidアプリ開発 > 画像出ない!
Titanium MobileでAndroidアプリ = 茨の道で書きましたが、fastDev機能使うと画像が出ません…(出す方法知ってる方がいたら是非教えてください!)

・WindowsでAndroid SDKが認識されない!
Android SDKをインストールしたパスに半角スペースが入っているとパラメータが勝手に区切られビルドできません。
Titaniumが悪い! とは言い切れないものの、内部処理でダブルクオーテーションで囲んでくれれば動くので直してもらえるとありがたいところですね。
諸悪の根源はProgram Filesフォルダェ…

・AndroidでImageViewのImagesを使ったアニメーションが重い!
アニメーションするView10個くらいまでは何事も無く動くのですが、それを超えた途端、一気にパフォーマンスが落ちます。(作りが悪かったらごめんなさい)
iPhoneでは標準のアニメーションでスムーズに動いていました。

色々試したりコードを眺めたりして、画像の切り替えを行う際の読み込みが重いのではと思い、独自にアニメーションさせる機能を作りました。(両対応させたかったのでJSのみの形で)
独自アニメーションの形であれば30体くらい出してアニメーションさせても問題無さそうでした。
アクションやシューティングはキツイものの、RPGくらいならいけそうですね。

・Androidの2DMatrixのアニメーションを行う際、anchorPointは無視される
常に左上を中心として動きやがります…
iPhoneで動かすとanchorPointの値は認識されています(指定しなくてもデフォルトの中心点が真ん中という優しさ)

・Androidのアニメーションでtop,leftとwidth, heightを設定してanchorPointの代用をしようとすると謎の動きをする
Viewの拡大・縮小をViewの真ん中を中心として行いたくて、top,leftとwidth,heightを計算して設定する形で作ってみました。
すると何ということでしょう、top,leftの移動とwidth,heightの拡大・縮小の速度が違うではありませんか。

内部の処理を見ると、top,leftとwidth,heightの値を設定するコードが違ったので、そのせいだと思われます。
iPhoneで動かすとキレイに動きます、不思議!

ダメ元でwidth,heightではなく、right,bottomを指定する形で作ってみました。
今度は、top,leftの値が変化していく>変化完了した直後にright,bottomの値が設定した値に!
指定するなということですね…(正しく動く方法、ほんと教えてください…)

Androidを無視すれば凄くいいアプリが手軽に作れますね。
私は全くObjective-Cを知らないので、TitanimuでiOSアプリを簡単に作れることに感動しています。
Androidの方はJavaで普通に書けるので、Titaniumありえない…Javaで書かせてくれ…というツライ状態です。

Androidの対応が進み、同じコードでiOS, Android両方ほぼ同じ動きをするようになれば、今後の開発はTitanium Mobileを利用することでハッピーになれることでしょう。

そんなことを夢見つつ、Androidで起こる問題の解決法をチマチマと探っていっています。

Leave a Reply