1. 程式人生 > >android webview自適應螢幕大小

android webview自適應螢幕大小

前幾天修改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; } }); } }

目前設定的選項是不可縮放的,自適應螢幕大小的方法。