欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android中的WebView詳細(xì)介紹

 更新時(shí)間:2015年06月05日 11:23:01   投稿:junjie  
這篇文章主要介紹了Android中的WebView詳細(xì)介紹,本文講解了WebView的概念、使用方法、各種使用實(shí)例等,需要的朋友可以參考下

Android中WebView的詳細(xì)解釋?zhuān)?/p>

1. 概念:

WebView(網(wǎng)絡(luò)視圖)能加載顯示網(wǎng)頁(yè),可以將其視為一個(gè)瀏覽器。它使用了WebKit渲染引擎加載顯示網(wǎng)頁(yè)。

2. 使用方法:

(1).實(shí)例化WebView組件:
A.在Activity中實(shí)例化WebView組件。eg:

復(fù)制代碼 代碼如下:

   WebView webView = new WebView(this);

B.調(diào)用WebView的loadUrl()方法,設(shè)置WevView要顯示的網(wǎng)頁(yè).eg:
復(fù)制代碼 代碼如下:

互聯(lián)網(wǎng)用:webView.loadUrl("http://www.google.com");
本地文件用:webView.loadUrl("file:///android_asset/XX.html");
本地文件存放在:assets 文件中

C.調(diào)用Activity的setContentView( )方法來(lái)顯示網(wǎng)頁(yè)視圖。
D.需要在AndroidManifest.xml文件中添加權(quán)限,否則會(huì)出現(xiàn)Web page not available錯(cuò)誤。

復(fù)制代碼 代碼如下:

 <uses-permission android:name="android.permission.INTERNET" />
 

 (2).自定義WebView組件繼承WebViewClient:
A.在布局文件中聲明WebView。eg:

復(fù)制代碼 代碼如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >

        <WebView
            android:id="@+id/webView1"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />

    </LinearLayout>


B.在Activity中實(shí)例化WebView。
C.調(diào)用WebView的loadUrl()方法,設(shè)置WebView要顯示的網(wǎng)頁(yè).
D.調(diào)用setWebViewClient()方法設(shè)置WebView視圖。響應(yīng)鏈接功能。
E.需要在AndroidManifest.xml文件中添加權(quán)限,否則出現(xiàn)Web page not available錯(cuò)誤。
復(fù)制代碼 代碼如下:

  <uses-permission android:name="android.permission.INTERNET"/>
 

 3. 兩種方法的區(qū)別:
(1).第一種方法:點(diǎn)擊鏈接是新開(kāi)Android的系統(tǒng)browser中響應(yīng)該鏈接。
(2).第二種方法:點(diǎn)擊鏈接由自己處理,而不是新開(kāi)Android的系統(tǒng)browser中響應(yīng)該鏈接。給WebView添加一個(gè)事件監(jiān)聽(tīng)對(duì)象(WebViewClient)并重寫(xiě)其中的shouldOverrideUrlLoading方法:對(duì)網(wǎng)頁(yè)中超鏈接按鈕的響應(yīng)。當(dāng)按下某個(gè)連接時(shí)WebViewClient會(huì)調(diào)用這個(gè)方法,并傳遞參數(shù):按下的url。

4. 總結(jié):
(1). 用WebView點(diǎn)鏈接看了很多頁(yè)以后為了讓W(xué)ebView支持回退功能,需要覆蓋覆蓋Activity類(lèi)的onKeyDown()方法,如果不做任何處理,點(diǎn)擊系統(tǒng)回退剪鍵,整個(gè)瀏覽器會(huì)調(diào)用finish()而結(jié)束自身,而不是回退到上一頁(yè)面。

復(fù)制代碼 代碼如下:

@Override
   public boolean onKeyDown(int keyCode, KeyEvent event) {
       if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {
       // goBack()表示返回WebView的上一頁(yè)面
           mWebView.goBack();
           return true;
       }
       return super.onKeyDown(keyCode, event);
   }

(2). 設(shè)置WebView基本信息:

A.如果訪(fǎng)問(wèn)的頁(yè)面中有Javascript,則webview必須設(shè)置支持Javascript。

復(fù)制代碼 代碼如下:

webview.getSettings().setJavaScriptEnabled(true); 

B.觸摸焦點(diǎn)起作用:
復(fù)制代碼 代碼如下:

 requestFocus();

C.取消滾動(dòng)條:
復(fù)制代碼 代碼如下:

this.setScrollBarStyle(SCROLLBARS_OUTSIDE_OVERLAY);

5. 整體代碼如下:
(1).MainActivity.java

package com.pansoft.webviewdemo;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.Window;
import android.webkit.WebSettings;
import android.webkit.WebView;

import com.pansoft.webviewdemo.webView.MyWebView;

public class MainActivity extends Activity {
    private WebView mWebView = null;
    private WebSettings mSettings = null;
    /** TAG */
    private String TAG = getClass().getSimpleName();
    /** URL */
    private String FLG_URL = "http://www.baidu.com/";
    private MyWebView myWebView;

    @SuppressLint("SetJavaScriptEnabled")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);

        // 第二種方法
        init01();
        // 第一種方法
        // init02();

    }

    /**
     * 加載的是webView本身的
     */
    private void init01() {
        setContentView(R.layout.activity_main);
        mWebView =(WebView)findViewById(R.id.webView1);
        mSettings = mWebView.getSettings();
        // WebView設(shè)置支持JavaScript
        mSettings.setJavaScriptEnabled(true);
        // 加載URL
        mWebView.loadUrl(FLG_URL);
        myWebView = new MyWebView(this, mWebView);
        mWebView.setWebViewClient(myWebView);

    }

    /**
     * 加載的是系統(tǒng)自帶的瀏覽器
     */
    private void init02() {
        mWebView = new WebView(this);
        mSettings = mWebView.getSettings();
        mSettings.setJavaScriptEnabled(true);
        mWebView.loadUrl(FLG_URL);
        setContentView(mWebView);

    }

    @Override
    public void onBackPressed() {
        super.onBackPressed();
    }

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {
        // goBack()表示返回WebView的上一頁(yè)面
            mWebView.goBack();
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }

}

(2).MyWebView.java

package com.pansoft.webviewdemo.webView;

import android.content.Context;
import android.graphics.Bitmap;
import android.util.Log;
import android.webkit.HttpAuthHandler;
import android.webkit.WebView;
import android.webkit.WebViewClient;

/**
 * MyWebView
 *
 * @author Administrator
 *
 */
public class MyWebView extends WebViewClient {
    private Context mContext;
    private WebView mWebView;
    private String TAG = getClass().getSimpleName();

    /**
     * 構(gòu)造方法
     *
     * @param mContext
     * @param mWebView
     */
    public MyWebView(Context mContext, WebView mWebView) {
        super();
        this.mContext = mContext;
        this.mWebView = mWebView;
    }

    /**
     * 打開(kāi)鏈接前的事件,為了避免再次按的時(shí)候加載的是系統(tǒng)自帶的瀏覽器,點(diǎn)擊鏈接由自己處理
     */
    // 這個(gè)函數(shù)我們可以做很多操作,比如我們讀取到某些特殊的URL,于是就可以不打開(kāi)地址,取消這個(gè)操作,進(jìn)行預(yù)先定義的其他操作,這對(duì)一個(gè)程序是非常必要的。
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        if (url != null) {
            mWebView.loadUrl(url);
            Log.d(TAG, "--->shouldOverrideUrlLoading--->");

        }

        return true;
    }

    /**
     * 接收到Http請(qǐng)求的事件
     */
    @Override
    public void onReceivedHttpAuthRequest(WebView view,

    HttpAuthHandler handler, String host, String realm) {
        super.onReceivedHttpAuthRequest(view, handler, host, realm);
    }

    /**
     * 載入頁(yè)面開(kāi)始的事件
     */
    // 這個(gè)事件就是開(kāi)始載入頁(yè)面調(diào)用的,通常我們可以在這設(shè)定一個(gè)loading的頁(yè)面,告訴用戶(hù)程序在等待網(wǎng)絡(luò)響應(yīng)。
    @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
        super.onPageStarted(view, url, favicon);
        Log.d(TAG, "--->onPageStarted--->");
    }

    /**
     * 載入頁(yè)面完成的事件
     */
    // 同樣道理,我們知道一個(gè)頁(yè)面載入完成,于是我們可以關(guān)閉loading條,切換程序動(dòng)作。
    @Override
    public void onPageFinished(WebView view, String url) {
        super.onPageFinished(view, url);
        Log.d(TAG, "--->onPageFinished--->");
    }

    /**
     * 當(dāng)瀏覽器訪(fǎng)問(wèn)制定的網(wǎng)址發(fā)生錯(cuò)誤時(shí)會(huì)通知我們應(yīng)用程序,比如網(wǎng)絡(luò)錯(cuò)誤。
     */
    @Override
    public void onReceivedError(WebView view, int errorCode,
            String description, String failingUrl) {
        super.onReceivedError(view, errorCode, description, failingUrl);
    }

}

(3).activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <WebView
        android:id="@+id/webView1"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</LinearLayout>

(4).權(quán)限:

 <uses-permission android:name="android.permission.INTERNET" />

相關(guān)文章

  • RecyclerView+CardView實(shí)現(xiàn)橫向卡片式滑動(dòng)效果

    RecyclerView+CardView實(shí)現(xiàn)橫向卡片式滑動(dòng)效果

    這篇文章主要為大家詳細(xì)介紹了RecyclerView+CardView實(shí)現(xiàn)橫向卡片式滑動(dòng)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • Android輔助權(quán)限的介紹和配置完整記錄

    Android輔助權(quán)限的介紹和配置完整記錄

    這篇文章主要給大家介紹了關(guān)于Android輔助權(quán)限的介紹和配置的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-01-01
  • Android仿泡泡窗實(shí)現(xiàn)下拉菜單條實(shí)例代碼

    Android仿泡泡窗實(shí)現(xiàn)下拉菜單條實(shí)例代碼

    最近參與android的項(xiàng)目開(kāi)發(fā),其中遇到這樣的需求:點(diǎn)擊下拉按鈕,顯示出所有的條目,有刪除和點(diǎn)擊功能,點(diǎn)擊后將條目顯示。下面通過(guò)實(shí)例代碼給大家介紹下Android仿泡泡窗實(shí)現(xiàn)下拉菜單條效果,需要的朋友參考下吧
    2017-05-05
  • 分析Android常見(jiàn)的內(nèi)存泄露和解決方案

    分析Android常見(jiàn)的內(nèi)存泄露和解決方案

    內(nèi)存泄漏(Memory Leak)是指程序中己動(dòng)態(tài)分配的堆內(nèi)存由于某種原因程序未釋放或無(wú)法釋放,造成系統(tǒng)內(nèi)存的浪費(fèi),導(dǎo)致程序運(yùn)行速度減慢甚至系統(tǒng)崩潰 (OOM) 等嚴(yán)重后果
    2021-06-06
  • Android 異步加載圖片的實(shí)例代碼

    Android 異步加載圖片的實(shí)例代碼

    異步加載圖片主要是利用多線(xiàn)程進(jìn)行下載、圖片弱引用緩存和Handler操作UI進(jìn)行實(shí)現(xiàn)的。
    2013-05-05
  • 實(shí)現(xiàn)Android 獲取cache緩存的目錄路徑的方法

    實(shí)現(xiàn)Android 獲取cache緩存的目錄路徑的方法

    這篇文章主要介紹了實(shí)現(xiàn)Android 獲取cache緩存的目錄路徑的方法的相關(guān)資料,這里實(shí)現(xiàn)一個(gè)靜態(tài)類(lèi)來(lái)實(shí)現(xiàn)該功能,希望能幫助到大家,需要的朋友可以參考下
    2017-08-08
  • Android實(shí)現(xiàn)為圖片添加水印

    Android實(shí)現(xiàn)為圖片添加水印

    這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)為圖片添加水印的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-02-02
  • Android ScrollView嵌套橫向滑動(dòng)控件時(shí)沖突問(wèn)題

    Android ScrollView嵌套橫向滑動(dòng)控件時(shí)沖突問(wèn)題

    本篇文章主要介紹了Android ScrollView嵌套橫向滑動(dòng)控件時(shí)沖突問(wèn)題,具有一定的參考價(jià)值,有興趣的可以了解一下
    2017-08-08
  • Android中Market的Loading效果實(shí)現(xiàn)方法

    Android中Market的Loading效果實(shí)現(xiàn)方法

    這篇文章主要介紹了Android中Market的Loading效果實(shí)現(xiàn)方法,較為詳細(xì)的分析了Android中l(wèi)oading效果的相關(guān)布局及功能實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-10-10
  • Android實(shí)現(xiàn)的仿淘寶購(gòu)物車(chē)demo示例

    Android實(shí)現(xiàn)的仿淘寶購(gòu)物車(chē)demo示例

    這篇文章主要介紹了Android實(shí)現(xiàn)的仿淘寶購(gòu)物車(chē)demo示例,結(jié)合實(shí)例形式分析了Android購(gòu)物車(chē)的功能、布局及邏輯實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2016-07-07

最新評(píng)論