読者です 読者をやめる 読者になる 読者になる

Work Records

日々の作業記録です。iPhone・androidアプリなど作っています。http://waremon.parseapp.com/

Titanium mobile Androidの画面サイズの縦・横サイズを取得する時は解像度に注意

Titanium android

[Android] 普通に画面サイズを取得すると解像度の問題でちょっとおかしくなる

縦・横の取得方法はこのように。

var width = Titanium.Platform.displayCaps.platformWidth;
var height = Titanium.Platform.displayCaps.platformHeight;

解像度がデバイスによって異なるので、画像サイズなどを上で取得した値を元にして作るとおかしな事に

画面サイズの1/4くらいの大きさのボタンを左上に設置したい時にこんな感じで書くと、

var button = Titanium.UI.createButton({
	backgroundImage: "/xxx.png",
	left: 0,
	top: 0,
	width: width/4,
	height: height/4,
});

高解像度のデバイスの場合、デカいボタンが設置されて、あれ?ってなる。

解像度の種類

ldpi mdpi hdpi xhdpi xxhdpi xxxhdpi

6種類あるらしい。それぞれのピクセルの密度(dpi)は

ldpi : 120dpi (まあもう使われてない)
mdpi : 160dpi (これが基準、1とする)
hdpi : 240dpi (1.5倍)
xhdpi :320dpi (2.0倍)
xxhdpi : 480dpi (3.0倍)
xxxhdpi : 640dpi (4.0倍)

縦・横サイズの矯正

デバイス依存の差異を修正する

こんな感じで修正する事にした

var dpi = Titanium.Platform.displayCaps.dpi;
var reso_ratio = dpi/160;
var width = Titanium.Platform.displayCaps.platformWidth/reso_ratio;
var height = Titanium.Platform.displayCaps.platformHeight/reso_ratio;

これで、上に書いたbuttonは期待通りの大きさに修正されました。
めでたし。

iPhoneでは?

iPhoneではこの問題が発生しなかった、というかandroid版を作ろうとして初めて気づいたので、android特有で必要な処理なのかも知れません。



JavaScriptとTitaniumではじめる iPhone/Androidアプリプログラミング 【Titanium Mobile SDK 2.1 & Titanium Studio 2.1 対応】

JavaScriptとTitaniumではじめる iPhone/Androidアプリプログラミング 【Titanium Mobile SDK 2.1 & Titanium Studio 2.1 対応】