Android程式設計實現WebView自適應全屏方法小結
阿新 • • 發佈:2019-01-02
本文例項講述了Android程式設計實現WebView自適應全屏的方法。分享給大家供大家參考,具體如下:
第一種:
settings.setUseWideViewPort(true);
settings.setLoadWithOverviewMode(true);
第二種:
WebSetting settings = webView.getSettings();
settings.setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN);
把所有內容放在webview等寬的一列中。(可能會出現頁面中連結失效)
第三種:
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int mDensity = metrics.densityDpi;
if (mDensity == 120) {
settings.setDefaultZoom(ZoomDensity.CLOSE);
}else if (mDensity == 160) {
settings.setDefaultZoom(ZoomDensity.MEDIUM);
}else if (mDensity == 240) {
settings.setDefaultZoom(ZoomDensity.FAR );
}
在我的專案中沒辦法適用 不過還是找到了方法
程式碼如下:
webView.setInitialScale(960*100 / MainActivity.screenHeight);
我的網頁高度為960 按這個比例拉昇 配合
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int mDensity = metrics.densityDpi;
if (mDensity == 120) {
settings.setDefaultZoom (ZoomDensity.CLOSE);
}else if (mDensity == 160) {
settings.setDefaultZoom(ZoomDensity.MEDIUM);
}else if (mDensity == 240) {
settings.setDefaultZoom(ZoomDensity.FAR);
}
顯示的效果可以接受,一般這樣的方式可以解決大多數高度寬度固定的網頁顯示的問題
在我的專案中,有個公告模組,介面比較小,所以適配是這樣做的:
1.文字適配: 注:mContent是webview
mContent.setEnabled(true);
mContent.getSettings().setDefaultTextEncodingName("UTF-8");
mContent.getSettings().setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN);
mContent.getSettings().setJavaScriptEnabled(true);
mContent.getSettings().setSupportZoom(true);
2.圖片適配:
mContent.setWebViewClient(new MyWebViewClient());
//設定webview代理載入圖片
private class MyWebViewClient extends WebViewClient {
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
imgReset();
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}
//此方法獲取裡面的img,設定img的高度100%,固定圖片不能左右滑動
private void imgReset() {
if(mContent!=null){
mContent.loadUrl("javascript:(function(){" +
"var objs = document.getElementsByTagName('img'); " +
"for(var i=0;i<objs.length;i++) " +
"{"
+ "var img = objs[i]; " +
" img.style.maxWidth = '100%';img.style.height='auto';" +
"}" +
"})()");
}}
3.內容載入:
mContent.loadDataWithBaseURL(null, content + "", "text/html", "UTF-8", null);