嘘の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; }