WebView でページ全体を表示する その2

前回は、WebSettings でWebView のページ全体を表示したが、ズーム機能を無効にできなかったので、別の方法でチャレンジした。

やり方は単純で、初期スケールを View に与えるだけだ。前回同様に、WebView を継承したクラスのコンストラクタで、初期スケールを与えた。LOGO_WIDTH と LOGO_MARGIN_WIDTH は、それぞれページの幅と左右に与えたいマージンを定義している。

    public HogeWebView(Context context) {
        super(context);

        DisplayMetrics metrics = getDisplayMetrics(context);
        float scale = 100 - (metrics.xdpi / (LOGO_WIDTH + LOGO_MARGIN_WIDTH)) * 100;
        setInitialScale((int) scale);
...
    }

setInitialScale()は WebView に用意されたメソッドで、引数はパーセント指定になる。指定しない場合、ワイドビューポートが有効になっていればズームアウトした状態で、指定していなければ100%を指定した場合と同じになる。

getDisplayMetrics は、WindowManager からディスプレイの情報を取得して戻しているだけだ。getDisplayMetrics は、static なメソッドにできるので、実際には自分で作成したユーティリティの中に入れて、static なメソッドで定義している。

    private DisplayMetrics getDisplayMetrics(Context context) {
        DisplayMetrics metrics = new DisplayMetrics();
        WindowManager windowManager = (WindowManager) context
                .getSystemService(Activity.WINDOW_SERVICE);
        Display display = windowManager.getDefaultDisplay();
        display.getMetrics(metrics);

        return metrics;
    }

これで、WebView でズームを禁止した状態で、ページ全体を表示することができた。


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Time limit is exhausted. Please reload CAPTCHA.