android-webView的简单实用介绍

版权所有,禁止匿名转载;禁止商业使用。

WebView(网络视图)能加载显示网页,可以将其视为一个浏览器。它使用了WebKit渲染引擎加载显示网页。

它的实现方式有如下两种:


1.第一种实现步骤


1、在布局文件中声明WebView(activity_main.xml)


<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  tools:context="${relativePackage}.${activityClass}" >
  <WebView
    android:id="@+id/webView1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true" />
</RelativeLayout>

2、在Activity中实例化WebView(MainActivity)


private WebView webView;
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    // 获取控件对象
    webView = (WebView) findViewById(R.id.webView1);

            }

3、调用WebView的loadUrl( )方法,设置WebView要显示的网页


// 设置显示的网页
    webView.loadUrl("http://www.baidu.com");
备注1:
如果访问的页面中有Javascript,则webview必须设置支持Javascript,否则页面也是空白
// 获取WebView属性
    WebSettings websettings = webView.getSettings();
    // 设置支持javascript代码
    websettings.setJavaScriptEnabled(true);

备注2: 如果需要访问网络需要添加网络访问的权限,否则会出现Web page not available错误


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

4、为了让WebView能够在当前组件中响应超链接功能,而非新打开android系统中的浏览器响应该链接,必须调用setWebViewClient( )方法,设置  WebView视图


// 设置视图
    webView.setWebViewClient(new WebViewClient() {
      @Override
      public boolean shouldOverrideUrlLoading(WebView view, String url) {
        // 打开地址
        view.loadUrl(url);
        // 返回的是true,代表在webView控件中打开,否则在系统的浏览器中打开
        return true;
      }
    });

5、用WebView点链接看了很多页以后为了让WebView支持回退功能,需要覆盖覆盖Activity类的onKeyDown()方法,如果不做任何处理,点击系统回退键,会调用finish()而结束自身,而不是回退到上一页面


// 后退的操作实现
  @Override
  public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK && webView.canGoBack()) {
      Toast.makeText(this, "hohouhouhou", 1).show();
      webView.goBack();
      return true;
    } else {
      return super.onKeyDown(keyCode, event);
    }
  }

如果版本大于2.0也可以直接使用


// 后退操作  android2.0
  @Override
  public void onBackPressed() {
    Toast.makeText(this, "后退键", 1).show();
    // 判断是否能够回退
    if (webView.canGoBack()) {
      webView.goBack();// 返回
    } else {
      super.onBackPressed();
    }
  }

把第一种实现步骤的1,2两个步骤改成:如下操作


public class MainActivity extends Activity {
  private WebView webView;
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // 创建控件对象
    webView = new WebView(this);
        // 设置显示的视图为创建的控件即可
       setContentView(webView);
}

实现效果如下:

URR3Az.png

0 0