1.什么是WebView?

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

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="@dimen/activity_horizontal_margin"
android:layout_marginRight="@dimen/activity_horizontal_margin"
android:layout_marginTop="@dimen/activity_vertical_margin"
android:layout_marginBottom="@dimen/activity_vertical_margin" > <WebView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/wv1" /> </LinearLayout>

  使用的尺寸资源:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="activity_vertical_margin">10dp</dimen>
<dimen name="activity_horizontal_margin">10dp</dimen>
</resources>

  实例化webview

wv1=(WebView)findViewById(R.id.wv1);
wv1.loadUrl(url);//载入url,(系统自带浏览器,要用webview需要重写方法)

websettings的设置//还可以设置很多东西

WebSettings websettings=wv1.getSettings();//获取配置信息
websettings.setJavaScriptEnabled(true);//设置脚本可以使用
websettings.setCacheMode(websettings.LOAD_CACHE_ELSE_NETWORK);//打开缓存

wv1.setWebViewClient(
new WebViewClient()
{
//需要重写shouldOverrideUrlLoading
public boolean shouldOverrideUrlLoading(WebView view,String url)
{
view.loadUrl(url);
return true; } });

  这样基本完成了,但卡顿现象明显,用户体验感太差,所以我们添加一些方法。

package com.example.webview;

import android.app.Activity;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.view.KeyEvent;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient; public class MainActivity extends Activity { private WebView wv1=null;
String url="http:www.baidu.com";
private ProgressDialog progressDialog=null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
wv1=(WebView)findViewById(R.id.wv1);
wv1.loadUrl(url);//载入url,(系统自带浏览器,要用webview需要重写方法)
WebSettings websettings=wv1.getSettings();//获取配置信息
websettings.setJavaScriptEnabled(true);//设置脚本可以使用
websettings.setCacheMode(websettings.LOAD_CACHE_ELSE_NETWORK);//打开缓存
wv1.setWebViewClient(
new WebViewClient()
{
//需要重写shouldOverrideUrlLoading
public boolean shouldOverrideUrlLoading(WebView view,String url)
{
view.loadUrl(url);
return true; } });
wv1.setWebChromeClient(
new WebChromeClient()
{
public void onProgressChanged(WebView view,int newProgress)//重写的方法来显示Dialog的进度条
{
if (newProgress==100)
{
closeProgressDialog();
}
else
{
showProgressDialog(newProgress);
}
super.onProgressChanged(view, newProgress);
}
public void closeProgressDialog()//关闭progressDialog
{
progressDialog.dismiss();
progressDialog=null;
}
public void showProgressDialog(int newProgress)//显示progressDialog
{
if (progressDialog==null)
{
progressDialog=new ProgressDialog(MainActivity.this); progressDialog.setTitle("页面加载中...请稍后...");//设置标题
progressDialog.setProgressStyle(progressDialog.STYLE_HORIZONTAL);//设置样式
progressDialog.setProgress(newProgress);
progressDialog.show();
}
else
{
progressDialog.setProgress(newProgress);
progressDialog.show();
}
}
}); }
public boolean onKeyDown(int keyCode,KeyEvent event)
{
if (keyCode==event.KEYCODE_BACK)
{
if (wv1.canGoBack())
{
wv1.goBack();
return true;
}
else
{
System.exit(0);
}
}
return super.onKeyDown(keyCode, event);
}
}

  

最新文章

  1. 第一个移动前端开源项目-dailog
  2. jQueryt过滤选择器
  3. R语言—图像初阶
  4. (转载)JAVA敏捷开发环境搭建
  5. Servlet/JSP-03 HttpServlet
  6. C与C++连续赋值的区别
  7. html中offsetTop、clientTop、scrollTop、offsetTop
  8. linux卸载挂载点显示device is busy
  9. WinForm 实现验证码
  10. iOS app应用界面加载卡顿的问题
  11. 业界最有价值的 ASP.NET 博文汇总
  12. 万能脚本助Web执行底层Linux命令
  13. nyoj137 取石子(三) 楼教主男人八题之一
  14. python基础 range()与np.arange()
  15. Java的运算符--与(&amp;)、非(~)、或(|)、异或(^)详解
  16. 【代码审计】XIAOCMS_后台database.php页面存在任意文件删除漏洞
  17. linux 的常用命令---------第六阶段
  18. Android为ViewPager添加切换动画——自己定义ViewPager
  19. triton,docker,mesos
  20. select * 和 select 所有字段写出来 ,速度对比!

热门文章

  1. storm学习好文链接
  2. HDU 3308 LCIS(线段树)
  3. Windows update 失败的解决方案
  4. Java中final的作用
  5. js http 请求 多个相同参数名传值
  6. html5中关于input使用方法的改变
  7. android 编译共享ccache的缓存
  8. Asp.Net Web Api 与 Andriod 接口对接开发
  9. linux 驱动入门3
  10. ionic接入广告
  11. Android 开发笔记___存储方式__共享参数__sharedprefences
  12. 如何减轻ajax定时触发对服务器造成的压力和带宽的压力?ajax-长轮训
  13. MT【313】特征方程逆用
  14. 6. spring启动类配置问题
  15. ajax读取txt文本时乱码的解决方案
  16. topcoder srm 710 div1 -23
  17. python--第四天总结
  18. [转] 机器学习是什么&mdash;&mdash;周志华
  19. FormData 知识点
  20. idea 导入Mapper错误报错设置