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);
}
}

  

WebView组件的应用的更多相关文章

  1. Webview组件和HTML的介绍

    Deviceone平台并不是基于html5的跨平台开发工具.我们开发一个app都是使用原生的组件,但是在某些场景下html5也是非常好的选择,比如复杂的图文混排(类似新闻),比如报表chart之类用h ...

  2. Android 4.2版本以下使用WebView组件addJavascriptInterface方法存在JS漏洞

    JS注入漏洞存在的Android版本:Android < 4.2 综述:Android的SDK中提供了一个WebView组件,用于在应用中嵌入一个浏览器来进行网页浏览.WebView组件中的ad ...

  3. 小程序web-view组件

    不久前微信小程序发布了web-view组件,这个消息在各个圈里引起不小的涟漪.近期正好在做小程序的项目,便研究了一下这个让大家充满期待的组件.   1,web-view这个组件是什么鬼? 官网的介绍: ...

  4. [转]小程序web-view组件

    本文转自:https://www.cnblogs.com/-nothing-/p/7910355.html 1,web-view这个组件是什么鬼? 官网的介绍:web-view 组件是一个可以用来承载 ...

  5. ReactNative WebView组件详解

    在开发Android的时候,一般我们会有一些加载网页的需求,或者执行一些JavaScript,我们都知道在Android中实现这个功能的控件是WebView,在ReactNative中也有实现此类需求 ...

  6. 安卓开发笔记——WebView组件

    我们专业方向本是JAVA Web,这学期突然来了个手机App开发的课设,对于安卓这块,之前自学过一段时间,有些东西太久没用已经淡忘了 准备随笔记录些复习笔记,也当做温故知新吧~ 1.什么是WebVie ...

  7. 微信小程序中的 web-view 组件

    web-view 是一个可以承载 web 网页的容器,当 WXML 文件中存在 web-view 组件时,其他组件会自动全部失效,而且 web-view 承载的组件会自动铺满小程序的整个页面.其他组件 ...

  8. ReactNative: 使用网页组件WebView组件

    一.简介 在移动端开发中,很多时候需要嵌入一个网页来帮助实现某一个活动,这方式大大提高了活动快速迭代的灵活性,在RN中,同样也这么处理这种情况的.其实,这种混合式开发称为Hybird APP,它们就是 ...

  9. 【Flutter学习】基本组件之Webview组件

    1.添加依赖 dependencies: flutter_webview_plugin: ^+ 2.导入库 import 'import 'package:flutter_webview_plugin ...

  10. Android WebView组件 访问部分网页崩溃问题【已解决】

    最近刚接触Android,在测试WebView组件时发现总是出现崩溃现像: 提示:ERR_CLEARTEXT_NOT_PERMITTED 当时以为是权限问题,查找自己的AndroidManifest文 ...

随机推荐

  1. spring--AOP1--6

    AOP 之 6.1 AOP基础 6.1.1  AOP是什么 考虑这样一个问题:需要对系统中的某些业务做日志记录,比如支付系统中的支付业务需要记录支付相关日志,对于支付系统可能相当复杂,比如可能有自己的 ...

  2. [转]ASP.NET MVC 入门1、简介

    什么是MVC模式 MVC(Model-View-Controller,模型—视图—控制器模式)用于表示一种软件架构模式.它把软件系统分为三个基本部分:模型(Model),视图(View)和控制器(Co ...

  3. 【原】模式之-适配器Adapter模式

    适配器Adapter模式 适配器模式(Adapter Pattern)把一个类的接口变换成客户端所期待的的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作. 模式所涉及的角色有 ...

  4. AIX 添加开机启动项

    在学习本主题之前,还是先学习一些AIX关于启动的基础知识,如果你只关心如何开机自动重启程序,请跳过第一章.第二章. ----------------------------第一章 AIX开机启动过程介 ...

  5. HW2.3

    import java.util.Scanner; public class Solution { public static void main(String[] args) { final dou ...

  6. Sitemap Editors for Dynamics CRM 2013

    I’ve started using a couple of different sitemap editors in my projects for CRM 2013. These tools he ...

  7. 教程-Delphi多线程数据库查询(ADO)

    ADO多线程数据库查询通常会出现3个问题: 1.CoInitialize 没有调用(CoInitialize was not called):所以,在使用任何dbGo对象前,必须手 调用CoIniti ...

  8. smarty对网页性能的影响--开启opcache

    在上一篇<smarty对网页性能的影响>中,默认没有开启opcache,于是我安装了一下zend opcache扩展,重新实验了一下,结果如下: 有smarty 用apache的ab命令进 ...

  9. 你真的知道C#的TryParse吗?

    博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:你真的知道C#的TryParse吗?.

  10. JavaWeb文件的上传与下载(1)

    经常用到的上传: 头像上传,资料分享等 文件上传的步骤 1.指定表单类型为文件上传表单 enctype="multipart/form-data" 2.表单提交方式必须为:post ...