Android WebView用来加载网页,显示网页内容。
1.在布局文件中添加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:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.webviewdemo.MainActivity" >
<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.在AndroidManifest.xml文件中添加访问互联网的权限
<uses-permission android:name="android.permission.INTERNET"/>
3.使用WebView
public class MainActivity extends Activity {
private String uri = "http://www.baidu.com";
private WebView webView;
private ProgressDialog progressDialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/* //通过intent跳转
Uri mUri = Uri.parse(uri);
Intent intent = new Intent(Intent.ACTION_VIEW,mUri);
startActivity(intent);*/
init();
}
private void init(){
webView = (WebView)findViewById(R.id.webView1);
/*//webView加载本地资源
webView.loadUrl("file:///android_asset/t.html");*/
//webView加载外部资源
webView.loadUrl(uri);
//覆盖WebView默认通过第三方或者是浏览器打开网页的行为,使得网页可以在WebView中打开,需要internet权限
webView.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
//返回值是true的时候控制网页在WebView中去打开,false则是在第三方打开
view.loadUrl(url);
return true;
// return super.shouldOverrideUrlLoading(view, url);
}
});
//启用支持JavaScript
WebSettings settings = webView.getSettings();
settings.setJavaScriptEnabled(true);
//WebView 加载页面优先使用缓存加载
settings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
//判断页面的加载过程,进度
webView.setWebChromeClient(new WebChromeClient(){
@Override
public void onProgressChanged(WebView view, int newProgress) {
//newProgress 1-100之间的整数
if(newProgress == 100){
//网页加载完毕
closeDialog();
}else{
//网页正在加载,打开ProgressDialog
openDialog(newProgress);
}
}
private void closeDialog(){
if(progressDialog != null && progressDialog.isShowing()){
progressDialog.dismiss();
progressDialog = null;
}
}
private void openDialog(int progress){
if(progressDialog == null){
progressDialog = new ProgressDialog(MainActivity.this);
progressDialog.setTitle("正在加载");
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
progressDialog.setProgress(progress);
progressDialog.show();
}else{
progressDialog.setProgress(progress);
progressDialog.show();
}
}
});
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_BACK){
Toast.makeText(this, "back", Toast.LENGTH_SHORT).show();
if(webView.canGoBack()){
webView.goBack();
return true;
}else{
System.exit(0);
}
}
return super.onKeyDown(keyCode, event);
}
}