现在几乎所有的app都不是单机了,联网的需求是必须,有时候我们会碰到打开一个网页的需求,如果我们这时候还需要用第三方浏览器去打开网页,这样的用户体验想必很差,这时候我们该如何解决呢?不用担心,java 为我们提供了WebView这个控件
以下是关于WebView的使用,代码写的很详细,这里就不赘述了。
package com.example.webviewdemo;
import android.os.Bundle;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;
import android.annotation.SuppressLint;
import android.app.Activity;
public class MainActivity extends Activity {
WebView webView;
@SuppressLint("SetJavaScriptEnabled")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
webView = (WebView) findViewById(R.id.webview);
/**
* 基础设置
*/
//获取WebSettings对象用来设置属性
WebSettings settings = webView.getSettings();
//设置可以缩放
settings.setSupportZoom(true);
//显示缩放工具
settings.setBuiltInZoomControls(true);
//可以使用sp语言
settings.setJavaScriptEnabled(true);
//优先使用缓存
settings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
/**
* 联网设置
* 需要添加权限
*/
webView.loadUrl("http://tech.sina.com.cn/it/2016-08-26/doc-ifxvixer7292480.shtml");
//防止使用第三方或系统默认浏览器开启网页
webView.setWebViewClient(new WebViewClient(){// WebViewClient的匿名内部类
/**
* @parm view-->正在监听的WebView
* @parm url-->正在监听的url
*/
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
//两个参数的第二个参数用于传递数据
view.loadUrl(url);
return true;
}
});
//判断网页加载进程
webView.setWebChromeClient(new WebChromeClient(){
@Override
public void onProgressChanged(WebView view, int newProgress) {
super.onProgressChanged(view, newProgress);
if (newProgress==100) {
Toast.makeText(MainActivity.this, "加载成功", Toast.LENGTH_SHORT).show();
}else {
Toast.makeText(MainActivity.this, "加载中。。。", Toast.LENGTH_SHORT).show();
}
}
});
}
/**
* 重写返回键
*/
@Override
public void onBackPressed() {
if (webView.canGoBack()) {//可以返回上一个网页
webView.goBack();//返回上一个网页
}else {
super.onBackPressed();
}
}
}
layout中xml文件也只需要将WebView放入即可,如下:
<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">
<!--android:scrollbarStyle="outsideOverlay":滚动条的风格 -->
<WebView
android:id="@+id/webview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbarStyle="outsideOverlay"/>
</RelativeLayout>