Android webview任意のサイズに適応したpcページを設定
2586 ワード
WebSettings webSettings = view.getSettings();
webSettings.setJavaScriptEnabled(true);
// User settings
webSettings.setJavaScriptEnabled(true);
webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
webSettings.setUseWideViewPort(true);//
webSettings.setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN);
webSettings.setDisplayZoomControls(false);
webSettings.setJavaScriptEnabled(true); // javascript
webSettings.setAllowFileAccess(true); //
webSettings.setBuiltInZoomControls(true); //
webSettings.setSupportZoom(true); //
webSettings.setLoadWithOverviewMode(true);
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int mDensity = metrics.densityDpi;
Log.d("maomao", "densityDpi = " + mDensity);
if (mDensity == 240) {
webSettings.setDefaultZoom(ZoomDensity.FAR);
} else if (mDensity == 160) {
webSettings.setDefaultZoom(ZoomDensity.MEDIUM);
} else if(mDensity == 120) {
webSettings.setDefaultZoom(ZoomDensity.CLOSE);
}else if(mDensity == DisplayMetrics.DENSITY_XHIGH){
webSettings.setDefaultZoom(ZoomDensity.FAR);
}else if (mDensity == DisplayMetrics.DENSITY_TV){
webSettings.setDefaultZoom(ZoomDensity.FAR);
}else{
webSettings.setDefaultZoom(ZoomDensity.MEDIUM);
}
/**
* WebView , : 1、LayoutAlgorithm.NARROW_COLUMNS :
* 2、LayoutAlgorithm.SINGLE_COLUMN: ,
*/
webSettings.setLayoutAlgorithm(LayoutAlgorithm.NARROW_COLUMNS);
ここで重要なのは、次のプロパティの設定です.
webSettings.setLayoutAlgorithm(LayoutAlgorithm.NARROW_COLUMNS);webSettings.setUseWideViewPort(true);
これでPCページにmetaタグviewportのズーム設定が設定されていなければ関係ありません.
よく使われるviewport metaは以下の通りです.
1
<
meta
name
=
"viewport"
content
=
"width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no"
/>
1、width:viewportのサイズを制御し、600などの値を指定したり、device-widthがデバイスの幅(単位が100%にスケールされたCSSの画素)などの特殊な値を指定したりすることができます.
2、height:widthに対応して、高さを指定する
3、initial-scale:初期スケール、ページの最初のロード時のスケール
4、maximum-scale:0から10.0までの最大スケールでユーザーを縮小できる
5、minimum-scale:0から10.0までの範囲で、ユーザーが縮小できる最小割合
6、user-scalable:ユーザーが手動でスケールできるかどうか、値は:1 yes、trueでユーザーがスケールできる;②no、falseはユーザーの拡大・縮小を許さない