你的位置:首页 > 操作系统

[操作系统][android] WebView自定义浏览器


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

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

 

在Activity中获取WebView对象

调用WebView对象的loadUrl()方法,参数:String路径

添加访问网络的权限android.permission.INTERNET

调用WebView对象的getSettings()方法,获取到WebSettings设置对象

调用WebSettings对象的setSupportZoom()方法,设置支持缩放,参数:布尔值

调用WebSettings对象的setBuiltInZoomControls(),设置缩放控件,参数:布尔值、

调用WebView对象的setWebViewClient()方法,设置客户端防止链接打开系统浏览器,参数:WebViewClient对象

 

监听后退键,返回上一界面

重写Activity的onKeyDown()方法,参数传递进来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);  }}