Work Records

日々の作業記録です。ソフトウェアエンジニアリング全般から、趣味の話まで。

Titanium mobile 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は期待通りの大きさに修正されました。
めでたし。