[Titanium] dpとpixelの変換

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’みたいな文字列で返すようにした

    というあたりです。