android webview自適應螢幕大小
阿新 • • 發佈:2019-01-29
前幾天修改C1眼鏡管家V2.0版本的時候,測試出NBD註冊網頁在手機上顯示的時候出現不適應螢幕的情況。
參考網上帖子後,自己寫了一個小的demo試驗了一下,結果問題解決了,在這裡記錄一筆。
demo的佈局檔案 activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width ="match_parent"
android:layout_height="match_parent">
<WebView
android:id="@+id/webView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</RelativeLayout>
在AndroidManifest.xml裡新增網路訪問許可權
<uses-permission android:name="android.permission.INTERNET" />
demo 的MainActivity.java
package cn.ceyes.demowebview;
import android.app.Activity;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.util.Log;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class MainActivity extends Activity {
private WebView webView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
}
private void init() {
webView = (WebView) findViewById(R.id.webView);
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
webSettings.setUseWideViewPort(true);//設定webview推薦使用的視窗
webSettings.setLoadWithOverviewMode(true);//設定webview載入的頁面的模式
webSettings.setDisplayZoomControls(false);//隱藏webview縮放按鈕
webSettings.setJavaScriptEnabled(true); // 設定支援javascript指令碼
webSettings.setAllowFileAccess(true); // 允許訪問檔案
webSettings.setBuiltInZoomControls(true); // 設定顯示縮放按鈕
webSettings.setSupportZoom(true); // 支援縮放
//主要用於平板,針對特定螢幕程式碼調整解析度
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int mDensity = metrics.densityDpi;
if (mDensity == 240) {
webSettings.setDefaultZoom(WebSettings.ZoomDensity.FAR);
} else if (mDensity == 160) {
webSettings.setDefaultZoom(WebSettings.ZoomDensity.MEDIUM);
} else if (mDensity == 120) {
webSettings.setDefaultZoom(WebSettings.ZoomDensity.CLOSE);
} else if (mDensity == DisplayMetrics.DENSITY_XHIGH) {
webSettings.setDefaultZoom(WebSettings.ZoomDensity.FAR);
} else if (mDensity == DisplayMetrics.DENSITY_TV) {
webSettings.setDefaultZoom(WebSettings.ZoomDensity.FAR);
} else {
webSettings.setDefaultZoom(WebSettings.ZoomDensity.MEDIUM);
}
/**
* 用WebView顯示圖片,可使用這個引數 設定網頁佈局型別:
* 1、LayoutAlgorithm.NARROW_COLUMNS :適應內容大小
* 2、LayoutAlgorithm.SINGLE_COLUMN:適應螢幕,內容將自動縮放
*/
webSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS);
//WebView載入web資源
webView.loadUrl("http://www.newbd.com/user/register/glassRegister");
//覆蓋WebView預設使用第三方或系統預設瀏覽器開啟網頁的行為,使網頁用WebView開啟
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
//返回值是true的時候控制去WebView開啟,為false呼叫系統瀏覽器或第三方瀏覽器
view.loadUrl(url);
return true;
}
});
}
}
目前設定的選項是不可縮放的,自適應螢幕大小的方法。