[android] WebView自定義瀏覽器


在布局文件中添加<EditText/><Button/>控件,

在布局文件中添加<WebView/>控件

 

Activity中獲取WebView對象

調用WebView對象的loadUrl()方法,參數:String路徑

添加訪問網絡的權限android.permission.INTERNET

調用WebView對象的getSettings()方法,獲取到WebSettings設置對象

調用WebSettings對象的setSupportZoom()方法,設置支持縮放,參數:布爾值

調用WebSettings對象的setBuiltInZoomControls(),設置縮放控件,參數:布爾值、

調用WebView對象的setWebViewClient()方法,設置客戶端防止鏈接打開系統瀏覽器,參數:WebViewClient對象

 

監聽后退鍵,返回上一界面

重寫ActivityonKeyDown()方法,參數傳遞進來int鍵盤碼,KeyEvent對象

如果鍵盤碼等於KeyEvent.KEYCODE_BACK並且當前WebView對象有很多頁能后退,調用WebView對象的canGoBack()方法

調用WebView對象的goBack()方法,頁面后退

 

設置菜單鍵,重寫onCreateOptionsMenu()方法,傳遞進來Menu對象

調用Menu對象的addSubMenu()方法,添加菜單,參數:組id,條目id,排序,標題

添加刷新,后退,前進

 

監聽小菜單點擊事件

重寫onOptionsItemSelected()方法,傳遞進來MenuItem對象

switch判斷一下MenuItem對象的getOrder(),對應上面的排序

頁面刷新,調用WebView對象的reload()方法

頁面后退,先調用WebView對象的canGoBack()方法,判斷是否能后退,調用goBack()方法后退

頁面前進,調用WebView對象的canGoForward()方法,判斷是否能前進,調用goForward()方法前進

 

頁面loading

獲取ProgressDialog對象,new出來,參數:上下文

調用ProgressDialog對象的setMessage()方法,參數:文本

調用WebView對象的setWebChromeClient()方法,參數:WebViewClient對象,

匿名內部類繼承WebViewClient類,重寫onPageStarted()方法和onPageFinshed()方法

onPageStarted()方法內

調用ProgressDialog對象的show()方法

onPageFinshed()方法內

調用ProgressDialog對象的dismiss()方法

 

package com.tsh.mywebview;

import android.app.Activity;
import android.app.ProgressDialog;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.Window;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class MainActivity extends Activity {
    private WebView webview;
    private ProgressDialog pd;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_main);
        
        pd=new ProgressDialog(this);
        pd.setMessage("正在加載...");
        
        
        //webview的簡單設置
        webview=(WebView) findViewById(R.id.wv_internet);
        webview.loadUrl("https://www.baidu.com");
        WebSettings websettings=webview.getSettings();
        websettings.setSupportZoom(true);
        websettings.setBuiltInZoomControls(true);
        webview.setWebViewClient(new WebViewClient(){
            @Override
            public void onPageStarted(WebView view, String url, Bitmap favicon) {
                pd.show();
            }
            @Override
            public void onPageFinished(WebView view, String url) {
                pd.dismiss();
            }
        });
        
    }
    //后退鍵
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if(keyCode==KeyEvent.KEYCODE_BACK&&webview.canGoBack()){
            webview.goBack();
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }
    //菜單鍵
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        menu.add(0, 0, 0, "刷新");
        menu.add(0, 0, 1, "后退");
        menu.add(0, 0, 2, "前進");
        return super.onCreateOptionsMenu(menu);
    }
    //菜單點擊事件
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getOrder()) {
        case 0:
            webview.reload();
            break;
        case 1:
            if(webview.canGoBack()){
                webview.goBack();
            }
            break;
        case 2:
            if(webview.canGoForward()){
                webview.goForward();
            }
            break;
        }
        return super.onOptionsItemSelected(item);
    }

}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM