2010年09月24日

[Android] WebViewを高解像度で表示する

最近まで(今も?)よくわかっていなかったのですが、Androidアプリってどんな解像度の端末でもHVGA(320*480)の画面を想定して作れば良いのですね。
どうも端末側で自動的に拡大縮小して会わせてくれているようです。
ただ、このとき困るのがせっかくの高解像度なディスプレイを持った端末でも、HVGAの解像度でしか表示できなくなってしまうこと。
今回、高解像度で表示したいと考えていたのは、WebViewに表示する中身です。

WebViewのメソッドに何かないか、WebViewClientやWebChromeClient、WebSettingsに何か解像度に関するメソッドがあるんじゃないかと探しました。
あるんじゃないかとは思うのですが、それらしいものが見つかりません。
WebSettingsの中にsetDefaultZoom()というメソッドがあったのですが、これはAPI Level 7から…。
できれば、Android 1.6(API Level 4)から使えて欲しいのです。

そんな中、見つけたのがWebViewのリファレンスに書かれていた「Building web pages to support different screen densities」という部分の記述。
英語はほとんど読めないのですが、「density」とか「hdpi」とかあやしい単語が盛りだくさんです。
ざっくりと雰囲気を読んでみると、どうやらWebViewに設定するのではなく、HTMLやJavaScriptで解像度を変える方法が書かれているっぽいです。
いろいろ試してみたら、どうやらmetaタグを書くだけで解像度が変わるっぽいです。

◆タグを書かなかったときの表示
default_d.png

◆metaタグを書いたときの表示
<meta name="viewport" content="target-densitydpi=high-dpi" />
high_d.png

Android端末向けのWebページに使えそうですね。
ただ、ここまで調べて気づいたのですが、これも必要なAPI Levelが5から(Android 2.0以上)っぽいです…。
Android 1.6でWebViewの解像度を上げるにはどうしたら良いんでしょうね??

とりあえず、今回も確認に使ったサンプルを置いておきます。
HighDWebView.zip
posted by t2low at 01:07| Android