画面遷移してみるHelloWorldができたので次は画面遷移をしたいですね。それで適当にググりながら下記の様なコードを書いてみたのですが上手く動きません。アニメーションされずにパッと画面が切り替わってしまいます。true});});win.add(btn);win.open();そこでwin2.openを呼び出す際のプロパティを下記のように変更すると、iPhoneの時のみアニメーションするようになりましたが、それでは駄目です。何の為にTitanium使うと思ってるんですか。Androidでも普通のアニメーションしながら画面遷移くらいしてくれと思いますよね。Titanium.UI.iPhone.AnimationStyle.CURL_DOWN});});win.add(btn);win.open();その後、色々試行錯誤して結局以下のように書き換えて上手くいきました。シングルウィンドウのアプリでもTabGroupを使えば良いようです。その代わりにtabBarHiddenを指定します。これでiPhoneの場合はUINavigationControllerにpushした時の挙動を示します。Androidでもデフォルトのアニメーションが動きますし、遷移先からバックボタンで元の画面に戻れます。{animated:true});});win.add(btn);tabGroup.addTab(tab);tabGroup.open();ただ問題は残っていて、Androidの方でtabBarHiddenが動作せず、タブが1つ表示されてしまって微妙です。なんとかならないのと調べてみると、公式フォーラムに解答がありました。(app-project-dir)/platform/android/res/layout/というディレクトリを作成して、その中にtitanium_tabgroup.xmlというファイル名で下記を追加すればタブバーを消す事ができます。</LinearLayout></TabHost>以上で、最初にやりたいなと思っていた挙動は実現できたのですが、まだ釈然としない事がありました。それはopenを呼ぶ際に指定できるオプションがドキュメントを見ても良く解らなかった事です。最初のコードではanimatedが動作しませんが、最後のコードではanimatedが動作します。理由が分からないのです。BBSで質問してみたところ、そういうものだという事なので、やはりある程度ソースコードを確認する必要があるようです。プロジェクトルート直下のbuildディレクトリにiPhoneの場合はxcodeprojが生成されています。デバッグ実行も可能なので適当にソースコードを追ってみたところ、TiWindowProxy.mのopenが下記のようになっていて、openに渡したargsをそのままTiAnimation::animationFromArgの呼び出しに使っています。YES);}そしてTiAnimation::animationFromArgの内容が以下です。animatedが指定されている場合は、同時にanimationStyleが指定されない限りアニメーションが行われないようになっています。最初のコードでアニメーションが動かない理由が分かりましたね。nil;}animatedが指定されない場合は、更にargをTiAnimation::initWithDictionaryに引き渡しています。TiAnimationはtransitionプロパティを持っていて、このイニシャライザで渡ってきたプロパティをセットしています。これで2つ目のtransitionが動いた理由も分かりました。同様にTiUITabProxy.mのopenOnUIThreadを確認すると、animatedをUINavigationController::pushViewControllerに渡している事が分かります。いうわけで同じopenというメソッドでもクラスによって指定できるオプションは違うし、同じ名前のオプションを指定したとしても内部での使われ方が違います。完全にTitaniumをブラックボックスと捉えると、想定される挙動が得られない事があると言う事です。SDKの知識はいらないよ、TitaniumのAPI覚えるだけで良いよ、と言った記述を見たのですが、それは正しいとは言えない気がします。Objective-CやJavaのコードと行ったり来たりする事になりそうで、思ったよりは大変そうですね。それでもObjective-CやJava単体でコード書くのに比べると格段に楽だとは思いますけども。そんなわけでアプリ書き始めようと思います。