IT坊主でいこう!

坊主をしながらITのことに詳しくなりたい!
iphoneアプリ、Webアプリ等頑張る!

[Titanium]AndroidとiPhoneのコード読み込みの差異について[Mac]

2012年06月04日 22時11分51秒 | Titanium
前々回の記事で
・コードの読み込みのタイミングが違う?
という疑問が出てきました。

で、そこを調査しようと思ったんだけどどうすればいいのかわからない。
他にそういうのをまとめてる人がいないかなー、って探してもそれらしいのはない。
読み込みのタイミングが違うメソッドとかの話は出てるんだけどなー。

謎は謎のまま一旦終了します、詳しいことを知ってる人募集。
だんだんTitaniumに慣れてきたので
次回からシミュレータを触って気になる、必要になりそうな機能を読んでいきます。

[Titanium]AndroidでTabGroupのタブはどれくらい表示できるのか[Mac]

2012年06月03日 19時20分29秒 | Titanium
前回の記事で書いたTabGroupで5つ以上はまとめられるのはiPhoneのみ?

前回の記事でiPhoneとAndroidの違いを見つけたので
じゃあAndroidはどれくらいタブが表示されるのか、まとめられるとしたら何個でまとめるのかを実際に確認してみる。

タブが35個まで表示させたところでこれ以上は意味ないと思って止めました。


appcelerator - Titanium.UI.TabGroup
調べたらこちらにreoderって書かれてるからこれのことだろう。

記事に書いていることを簡単にまとめると
・AndroidでもiPhoneでもタブの削除はできない
・iPhoneとMobileWebのみタブのプロパティを更新できる
・加えてactiveというプロパティを設定することにより、アクティブの切り替え可
 ただしAndroidでは使えないので、setActiveTab()を使ってください



・AndroidでもiPhoneでもタブの削除はできない
つまりユーザ毎にタブ整理を可能にする、ってことはできないのか。
でも予測変換にremoveTabってあるぞ!
試してみる。


iPhoneできた


立ち上げてからのaddTab()も試したけどできた
画像おかしいのはclickイベントが上手く走らなかったのでfocusイベントで試したから



こちらはAndroid、できない
コンソールに
D/Window ( 613): Unable to release window reference.
D/Window ( 613): unable to close, window is not opened

って出てた。ウィンドウを解放できないからタブを閉じることができないのか
windowをclose
Tabからremove
Tab自体をremove
したけど駄目でした。

ただ

addはあっさりできました。

うーん、もう少し知識があればできそうな気がするんだけどなー。


・加えてactiveというプロパティを設定することにより、アクティブの切り替え可
 ただしAndroidでは使えないので、setActiveTab()を使ってください

さっそく試してみる


iPhoneはactiveプロパティで設定したタブが表示された。


Androidは記事通り機能しないらしく、タブの先頭が表示された。エラーが出る訳ではない

では、activeプロパティとsetActiveTab()を両方使うとどうなるのか。


activeプロパティが優先された。


AndroidはもちろんsetActibeTab()が適応される。

大本が言ってる通り、setActiveTab()使いましょう。


今回のまとめ
・Androidではタブはいくつ出してもiPhoneみたく纏めてくれない
・TabGroupの起動後のTab追加、削除
iPhone:追加、削除ともに可
Android:追加は可、削除は不可?

・ActiveTabについて
iPhone:activeプロパティ使用可、setActiveTab()と使うとプロパティのほうが優先される
Android:activeプロパティ不可、setActiveTab()は使用可


参考元の英語きちんと翻訳できてないのかなー

Kitchen Sink等からTitaniumを学ぶ 共通部分その4[Mac]

2012年06月02日 09時28分12秒 | Titanium
base_ul.jsの続き

見てるとこのような記述が
if (Ti.Platform.name == "iPhone OS") {
win.hideTabBar();

}


hideTabBar()はそのウィンドウのタブを非表示にするメソッドなんだけど
きたけーのアウトプット -Titanium MobileでTab Barを非表示にする際の副作用の解決(Android)
にも書いてある通り、Androidでは上手く機能しないようだ。

試しにやってみる


こちらがiPhone


こちらがAndroid、いうまでもなくエラーが出てしまっている。
そんなメソッドないよ、と。

今回起動して気づいたAndroidとiPhoneで挙動が違う点
・Titanium.UI.WindowのhideTabBar()メソッドの有無
・前回の記事で書いたTabGroupで5つ以上はまとめられるのはiPhoneのみ?
 Androidは6つ目が表示されていた(↑の画像で確認できます)
・コードの読み込みのタイミングが違う?
 Aというタブにalert()を仕込んでいて、
 iPhoneは初期表示タブからAタブに切り替えたときに走った
 Androidは初期表示タブが表示されたときに走った


少しいじっただけで違う点が出てきたんだから
既出の差異なんてめちゃくちゃあるんだろうなー
Titaniumって同じJavascriptで書くんだから両方一気に作れると思ってたのに甘かった
変に手を伸ばしすぎると挙動の確認とかとんでもなくなるんだなー

次回はこの挙げた点の詳しい調査から。

Kitchen Sink等からTitaniumを学ぶ 共通部分その3[Mac]

2012年06月02日 04時28分54秒 | Titanium
共通部分の動きを引き続き調べていきます。

起動、動作等スムーズなiPhoneシミュレータを今後は使います。
早速前回の続きをやろうとしたら、全く動作が違う

Androidだと

こう表示してたのが



こうなった。
TabGroupって複数使うのそもそもおかしかったのかー。
titanium-mobile-doc-ja - UIカタログ - TabGroup

>アプリケーションのルートコンテナとしてはこのTabGroupもしくはWindowを配置する必要があります
って書いてるし1つだけ作るものってことか。
5つよりタブを用意するとMoreタブができるとのことなのでやってみる



タブ一個追加しただけで、勝手にMoreタブ作って遷移もやってくれるのか
便利だなー

app.jsのめぼしいところは以上なので次のbase_ul.jsをみる
ちょくちょくOSによって処理が変わるところに、判定を入れているんだけど

if (Ti.Platform.osname == "iphone")

if (Titanium.Platform.name == 'iPhone OS')
と書き方が違うものを発見したので早速確認
あ、ちなみにMacだと改行は「\n」ではなく「\(バックスラッシュ)n」です。



こうなった。
なんで取れる情報変わるんですか・・・。
調べてもそれらしい解説している記事が見つからない。
TiはTitaniumの略で省略して書ける、って記事もあるし!それならこの挙動の違いはまずいのではないか。

titanium-mobile-doc-ja - APIカタログ(プラットフォーム編) - 環境情報取得

>OS名(iPhoneなら"iPhone", iPadなら"iPad", Androidなら"android")
iPhoneって書いてあるんだけど今出力させたらiphone
になってるのは誤植なのかな、調べて出てくる記事は全部小文字だし。

とりあえずこういうのは気をつけておかないと不具合起こしそう。

--------------------------------------

追記

記事書いておいて今更だけど「osname」と「name」だった・・・。
そりゃ出力変わりますよねー。
ちなみに「osname」で比べたらもちろん同じ「iphone」が出力されました!

Titaniumの開発環境(Mac)

2012年06月01日 03時01分47秒 | Titanium
モニタの故障やらなんやらで時間が空いてしまいましたが。
今回はMacの環境を構築する方法をまとめます。

といってもWindowsと比べて構築の楽なこと×2

簡潔に書いて詰まったところだけ少し説明

1.Titanium Studioのインストール

2.Javaをインストール(Titaniumをインストールするときに入れてないならついでに入れてくれる)

3.「Dashboard」→「Configure」→「iOS」→「Install or Update iOS SDK」をクリック

4.XCodeのインストール

5.Titanium StudioのiOSパス設定
「環境設定」でPreferencesダイアログを表示→「Aptana Studio」→「Titanium」項目
「iOS SDK Home」の「Refresh」をクリック
表示されない場合は、すぐ下に書かれているコマンドをターミナルで実行
「xcode_folder_path」は「More details」を参照のこと

6.Gitのインストール(Kitchen Sinkを入れるために必要)
ターミナルでインストールの確認する前に「source /etc/profile」しておかないとないって言われるよ

7.Kitchen Sinkをダウンロード

8.iPhoneシミュレータで起動する


以上です。
Mac+iPhoneシミュレータの組み合わせのTitanium楽だなー。
詰まるところないし、アプリの起動数秒とか早すぎだー。
Windows?






2、3分くらい待って起動しないときありますが?


---------------------------------------------------------------------------

追記

Androidシミュレータでも動作確認しました。
以前の日記でGoogle APIsがインストールされない云々書きましたが
Macだと一覧にちゃんと表示されました

ただ、Androidのシミュレータはアプリ立ち上がるの遅いなー
何で時間食ってるのかなー、見てると起動が遅いみたいなんだけど

Windowsが悪いんやない!Androidの開発環境が悪いんや!