Android-webview. setInitialScale 的完美適配

setInitialScale – Android
Android手機再套用WebView時會因為手機解析度大小的關係
導致WebView裡的圖片不是太大,就是太小
這時候就要利用WebView裡面的 setInitialScale 的功能
他可以適當的放大,縮小網頁的呈現大小
一般Default值是setInitialScale(100)
setInitialScale(200) ,代表放大一倍,
setInitialScale(50) ,代表縮小一倍,
為了要適配不同尺寸的Android手機,建議大家可以參考一下我下面的程式碼:

/**
* 這裡需要根據不同的分辨率設置不同的比例,比如
* 5寸手機設置190 屏幕寬度 > 650 180
* 4.5寸手機設置170 屏幕寬度> 500 小於 650 160
* 4寸手機設置150 屏幕寬度> 450 小於 550 150
* 3 屏幕寬度> 300 小於 450 120
* 小於 300 100
* 320×480 480×800 540×960 720×1280
*/
public void FittWebView(){
WindowManager wm = (WindowManager) AbstractDetailActivity.this
                            .getSystemService(Context.WINDOW_SERVICE);
int width = wm.getDefaultDisplay().getWidth();
if(width > 650){
      this.webView.setInitialScale(190);
  }else if(width > 520){
      this.webView.setInitialScale(160);
  }else if(width > 450){
      this.webView.setInitialScale(140);
  }else if(width > 300){
      this.webView.setInitialScale(120);
  }else{
      this.webView.setInitialScale(100);
   }
}

如果有針對性的,想適配網頁上的某一張圖,你可以先換算圖片與手機的寬度比
再帶入即可,如我有一張寬度 300dp的圖片,但我在手機上會呈現這樣:
setInitialScale
我已經知道我圖片的寬度是300dp了,所以先帶入下面的函式:
//取得手機解析度
private int getScale(){
    Display display = ((WindowManager) LoginAct.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
    int width = display.getWidth();
    Double val = new Double(width)/new Double(300d); //
    val = val * 100d;
    return val.intValue();
}
再來就是設定我的WebView摟

WebView_1 = (WebView) layoutDemo.findViewById(R.id.open_webview);
WebView_1.setPadding(0, 0, 0, 0);
WebView_1.setInitialScale(getScale());

結果如下:
 
setInitialScale
有沒有很方便啊  哈哈

參考來源

Facebook Comments

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *