IT坊主でいこう!

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

Kitchen Sink等からTitaniumを学ぶ BaseUI Window その1[Mac]

2012年06月05日 20時35分15秒 | Titanium
window_standalone.js

を読んでいきます。

ここで気づいたのは
a.height = Titanium.Platform.displayCaps.platformHeight;
a.width = Titanium.Platform.displayCaps.platformWidth;

という書き方

これで、今使ってるスマホの幅等が取得できるとのこと。これは使うことになりそうでしょう!
ちなみに
TitaniumMobile勉強中 -spiffieldLabs
Titanium on Androidでwindowのサイズを知る(知りたい)-ヒマは見つけるモノじゃない、作るモノだ
ここで書かれているんだけど

>iPhoneではcurrentWindow.width/heightで画面サイズが取得できるんですが、Androidだと0になります。

こういうやりかたでも取得できるそうな、こちらは画面というよりウィンドウの幅等。
ただAndroidでは取得できないというので確認。



まずiPhone。
指定しなかった場合はUndefined、'auto'の場合はautoが取得されるので注意しないといけないっぽい。



こちらがAndroid、取得できちゃった

さっきの記事は二つとも1年前のものなので、Androidのバージョンがあがったので出来るようになったのかと思い
バージョンを2.1まで戻したんだけどきちんと取得できてる。
実機だと駄目なのだろうか、とりあえず自分の環境でのシミュレータでは同じ動きをしました!

Kitchen Sink等からTitaniumを学ぶ BaseUI TabGroup[Mac]

2012年06月05日 00時49分34秒 | Titanium
TabGroupという名前でもしやと思い早速見てみると
なんと今まで自力で調べたことを微妙に使ってる!

微妙に知らなかったことがあったので補足

tabGroup.setActiveTab(tabGroup.tabs[1]);
こういう風にインデックスじゃなくてオブジェクトでの使用もできる


tabGroup.allowUserCustomization = false;
Booleanで「More」タブの「Edit」ボタンの表示を切り替えるみたい
ただ、Kitchen Sinkが
Customize on って書いてあるのに「Edit」ボタンが非表示
Customize off って書いてあるのに「Edit」ボタンが表示、かつ特に何もすることができない
と動作が不明瞭で現状よくわからない。

前回までの記事の話になるけど
コードを見ると、タブの追加と削除はiPhoneにしか実装していないみたいなので
やはり現状Androidでは実装は厳しいのかなー、と改めて思いました。

TabGroupでは大きな収穫ありませんでした、まる

[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で書くんだから両方一気に作れると思ってたのに甘かった
変に手を伸ばしすぎると挙動の確認とかとんでもなくなるんだなー

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