天天看點

Android中Webview使用經驗總結

很早前就喜歡在Android中使用Webview元件結合JS來做應用,總結了一些不錯的小經驗,在這裡持續更新,自己備忘,也希望給其他需要的同學一些參考~

1.添權重限

要用Webview,确認你在**AndroidManifest.xml** 中添加了使用許可 "android.permission.INTERNET" ,否則會出Web page not available錯誤。

1      

2.開啟Javascript支援

如果通路的頁面中有Javascript,或者需要通過js和頁面互動,則webview必須設定支援Javascript,方法如下:

1      

注意:

Using setJavaScriptEnabled can introduce XSS vulnerabilities into you application, review carefully.

可以添加

@SuppressLint("SetJavaScriptEnabled")

3.設定可以自動加載圖檔

1      

4.設定WevView要顯示的網頁

網際網路用:webView.loadUrl("http://www.eoe.cn");

本地檔案用:webView.loadUrl(file:///android_asset/eoe.html);固定格式

本地檔案存放在:assets檔案中

5.處理傳回鍵為傳回上一頁

如果用webview點連結看了很多頁以後,如果不做任何處理,點選系統“Back”鍵,整個浏覽器會調用finish()而結束自身,如果希望浏 覽的網頁回退而不是退出浏覽器,需要在目前Activity中處理并消費掉該Back事件,覆寫Activity類的onKeyDown(int keyCoder,KeyEvent event)方法,代碼如下:

1
2
3
4
5
6
7
8
9      
// To handle the back button key press
public boolean onKeyDown(int keyCode, KeyEvent event) {
    LogUtil.i(this, "keyCode="   keyCode);
    if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {
        mWebView.goBack();
        return true;
    }
    return super.onKeyDown(keyCode, event);
}
      

6.設定android WebView 不顯示滾動條

可以直接在layout中添加 android:scrollbars="none" 來設定不顯示滾動條,如下:

1
2
3
4
5
6      
<WebView
        android:id="@ id/wv"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="@drawable/bg"
        android:scrollbars="none" />
      

7.重寫shouldOverrideUrlLoading時指定url

指定隻有url裡包含eoe.cn的時候才在webview裡打開,否則還是啟動浏覽器打開.

1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12      
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
    LogUtil.i(this, "url="   url);
    if ( url.contains("eoe.cn") == true){
        view.loadUrl(url);
        return true;
    }else{
        Intent in = new Intent (Intent.ACTION_VIEW , Uri.parse(url));
        startActivity(in);
        return true;
    }
}
      

8.android:scrollbarStyle控制滾動條位置

WebView有一個設定滾動條位置的屬性:android:scrollbarStyle 可以是insideOverlay可以是outsideOverlay,兩個的差別是SCROLLBARS_INSIDE_OVERLAY的樣式是滾動條 在整個page裡,類似css中的padding,看代碼下的這個圖吧,很清晰.

1
2      
//mWebView.setScrollBarStyle(View.SCROLLBARS_OUTSIDE_OVERLAY);
mWebView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
      
Android中Webview使用經驗總結

轉載于:https://www.cnblogs.com/lingzhao/p/3463089.html

繼續閱讀