嘘のdensityを設定して画面を拡大したり縮小したりする

某所にヘルプで行ったときに発見した大画面への(適当な)対応方法。


たとえばピンポイント天気。XOOMで利用すると画面がスカスカで残念な表示になる。

そこで、実行時にdensity を書き換えてみる。
渡した Resources の DisplayMetrics を書き換えるメソッドを作って...

public static void overwriteDensity(Resources res) {
	DisplayMetrics dm = res.getDisplayMetrics();
	float zoom = 2.25f;
	dm.densityDpi = (int) (160 * zoom);
	dm.density = zoom;
	dm.xdpi = 160 * zoom;
	dm.ydpi = 160 * zoom;
	dm.scaledDensity = zoom;
}

ActivityやApplicationのgetResources()が呼ばれたときに呼び出す。

@Override
public Resources getResources() {
	Resources res = super.getResources();
	TenkiApp.overwriteDensity(res);
	return res;
}

するとこんな感じに。

実用性はどうかわからないけど、隠し設定とかで提供するぶんにはいいかも。