Androidアプリ with TitaniumMobileに挑戦中。iPhoneだと動くコードが動かない理不尽さを見ていると、HTMLを書いてIE6で見ると崩れまくっていたあの頃を思い出しますね。
さて、そんなandroidでは、解像度の異なる端末に対応するため、数値はdip指定するのが原則です。
New Defaults for Android Layouts in 1.7 « Appcelerator Developer Center Y.A.M の 雑記帳: Android multi screen 対応
ところが、view.animateとか、scrollView.setContentOffsetのように構造体をとる関数はたいていdp表記に未対応で、pixel単位で指定してあげる必要があります。変換関数が必要!
このあたりのことはこの記事で解説されていて、
TitaniumMobileのハマりポイントとお作法メモ at HouseTect, JavaScriptな情報をあなたに
dpとpixclの変換関数なんかも提案されているのですけど、用途と合わなかったので、俺バージョンを作りました。
元コードとの違いは
- View.widthなどで取得できる ‘100dp’などの記述をそのまま渡せるようにした
- 同様に、view.widthにそのまま渡すことを意識して、dpは’100dp’みたいな文字列で返すようにした
というあたりです。