Android-WebViewUtils-工具类
WebViewUtils-工具类是专门处理,Android API 中的WebView使用,公共方法抽取定义;
package common.library.utils; import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.ProgressBar; /**
* @Author Liudeli
* @Describe:WebView操作处理相关工具类
*/
public class WebViewUtils extends WebView{ public WebViewUtils(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
} public WebViewUtils(Context context) {
super(context);
} public WebViewUtils(Context context, AttributeSet attrs) {
super(context, attrs);
} /**
* 初始化webview
* @param url
* @param openWay:true :在webview打开,false在手机默认浏览器打开
*/
public void initWebView(final ProgressBar progressBar,final String url, final boolean openWay){ this.setWebChromeClient(new WebChromeClient() {
@Override
public void onProgressChanged(WebView view, int newProgress) {
if (newProgress == 100) {
progressBar.setVisibility(View.INVISIBLE);
} else {
if (View.INVISIBLE == progressBar.getVisibility()) {
progressBar.setVisibility(View.VISIBLE);
}
progressBar.setProgress(newProgress);
}
super.onProgressChanged(view, newProgress);
} });
this.post(new Runnable() {
@Override
public void run() {
WebViewUtils.this.loadUrl(url);
}
});
this.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url);
return openWay;
}
});
} /**
* 得到html并显示到webView中
* @param url 要打开html的路径
* @param web WebView控件
*/
public static void getHtml( String url , WebView web){
initSetting(web);
web.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);//设置js可以直接打开窗口,如window.open(),默认为false web.getSettings().setSupportZoom(true);// 是否可以缩放,默认true
web.getSettings().setBuiltInZoomControls(true);// 是否显示缩放按钮,默认false
web.getSettings().setUseWideViewPort(true);// 设置此属性,可任意比例缩放。大视图模式
web.getSettings().setLoadWithOverviewMode(true);// 和setUseWideViewPort(true)一起解决网页自适应问题
web.getSettings().setAppCacheEnabled(true);// 是否使用缓存
web.getSettings().setDomStorageEnabled(true);// DOM Storage
// w.getSettings().setUserAgentString("User-Agent:Android");//设置用户代理,一般不用
web.loadUrl(url);
web.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// TODO Auto-generated method stub
//返回值是true的时候控制去WebView打开,为false调用系统浏览器或第三方浏览器
view.loadUrl(url);
return true;
}
});
} /**
* 设置webView初始值信息
* @param web
*/
private static void initSetting(WebView web) {
// TODO Auto-generated method stub
WebSettings settings = web.getSettings();
// 是否允许执行js,默认为false。设置true时,会提醒可能造成XSS漏洞
settings.setJavaScriptEnabled(true);
/*
* LOAD_DEFAULT设置如何缓存 默认使用缓存,当缓存没有,或者缓存过期,才使用网络
* LOAD_CACHE_ELSE_NETWORK 设置默认使用缓存,即使是缓存过期,也使用缓存
* 只有缓存消失,才使用网络
*/
settings.setCacheMode(WebSettings.LOAD_DEFAULT);
//是否展示一个缩放按钮()
settings.setBuiltInZoomControls(true);
} /**
* 设置webView初始值信息并且绑定url等操作
* @param webView
* @param url
*/
public static void initSetting(WebView webView, String url) {
// 登录西安交通发布,查询交通
// webView.loadUrl("https://www.xaglkp.com.cn/BusPage/bus_realtime");
webView.loadUrl(url);
webView.requestFocus();//获取焦点
webView.setHorizontalScrollBarEnabled(false);
webView.setVerticalScrollBarEnabled(false);
webView.setVerticalScrollbarOverlay(true);
//添加客户端支持
webView.setWebViewClient(new WebViewClient(){
//点击不会跳转到浏览器外
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;//super.shouldOverrideUrlLoading(view, url);
}
});
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
//设置可以访问文件
webSettings.setAllowFileAccess(true);
//设置支持缩放
webSettings.setBuiltInZoomControls(true);
webSettings.setUseWideViewPort(true); //设置加载进来的页面自适应手机屏幕(可缩放)
webSettings.setLoadWithOverviewMode(true);
} /**
* 返回Html的上一个页面
* @param webView
*/
public static void backHtml(WebView webView) {
webView.goBack();// 返回前一个页面
}
}
Android-WebViewUtils-工具类的更多相关文章
- 53. Android常用工具类
主要介绍总结的Android开发中常用的工具类,大部分同样适用于Java.目前包括HttpUtils.DownloadManagerPro.ShellUtils.PackageUtils.Prefer ...
- Android 常见工具类封装
1,MD5工具类: public class MD5Util { public final static String MD5(String s) { char hexDigits[] = { '0' ...
- 【转】Android常用工具类
主要介绍总结的Android开发中常用的工具类,大部分同样适用于Java. 目前包括HttpUtils.DownloadManagerPro.ShellUtils.PackageUtils.Prefe ...
- Android基础工具类重构系列一Toast
前言: 一直在考虑写一下Android实际项目中的一些总结,翻看CSDN博客,上一篇已经是一年多曾经. 本系列定位Android基础工具类重构.旨在记录实际项目中经经常使用到的一些工具类,比方Toas ...
- (转载)android 一些工具类汇总
android 一些工具类汇总 作者:曾田生z 字体:[增加 减小] 类型:转载 时间:2016-08-14我要评论 本文给大家汇总介绍了一些常用的Android工具类,非常的简单实用,有需要的小伙伴 ...
- 随笔分类 - Android之工具类
Android之文件搜索工具类 /** * @detail 搜索sdcard文件 * @param 需要进行文件搜索的目录 * @param 过滤搜索文件类型 */ private void sear ...
- Android 系统工具类SystemUtils
包含的功能有: 获取系统中所有APP应用.获取用户安装的APP应用.根据包名和Activity启动类查询应用信息.跳转到WIFI设置.WIFI网络开关.移动网络开关.GPS开关 当前若关则打开 当前若 ...
- Android Sqlite 工具类封装
鉴于经常使用 Sqlite 数据库做数据持久化处理,进行了一点封装,方便使用. 该封装类主要支持一下功能 支持多用户数据储存 支持 Sqlite数据库升级 支持传入 Sql 语句建表 支持 SQLit ...
- Android 常用工具类之SPUtil,可以修改默认sp文件的路径
参考: 1. 利用Java反射机制改变SharedPreferences存储路径 Singleton1900 2. Android快速开发系列 10个常用工具类 Hongyang import ...
- Android常见工具类封装
MD5加密 import android.annotation.SuppressLint; import java.security.MessageDigest; public class MD5 { ...
随机推荐
- JS 相关
计算高度: var a = document.body.clientHeight/2;console.log(a) window.scrollTo(0, document.body.clientHei ...
- samtools软件的使用
1)samtools简介--------------------------------------------------------------------------背景:前面我们讲过sam/b ...
- IDEA 码云 安装
安装方式: 从IDEA插件仓库搜索Gitee下载并安装即可. 登陆并拉取项目代码 1. 启动 idea,选择Check out from Version Control-码云 2. 输入用户名和密码, ...
- python之面向对象之类变量和实例变量
#Auther Bob #--*--conding:utf-8 --*-- #这里的变量全部都是实例变量 class Role(object): def __init__(self,name,role ...
- vmware14中安装centos7并使用docker发布spring-boot项目
1.vmare中centos7安装(同一路由器无线网络下) 1.1选择桥接模式 1.2修改配置文件 vi /etc/sysconfig/network-scripts/ifcfg-ens33(这里不一 ...
- SQL存储过程将符合条件的大量记录批量删除脚本
-- ============================================= -- Author: James Fu -- Create date: 2015/10/27 -- D ...
- DB2频繁出现死锁,常用解决问题的命令
--DB2频繁出现死锁,常用解决问题的命令db2 get snapshot for locks on sampledb2 get db cfg for sampledb2 update db cfg ...
- 实验 Attacks on TCP/IP Protocols
------- 转载请注明出处,博客园-lasgalen-http://www.cnblogs.com/lasgalen/p/4555648.html ------- 1 实验目的 进行这个实验的目的 ...
- windown 安装配置 mvn不是内部或外部命令
path 检查没有任何问题,就直接把maven路径直接放到path前面 如果提示JAVA_HOME not found 之类错误,环境变量中需要设置JAVA_HOME,而且需要在path中添加%JAV ...
- python常用模块及面向对象(一)
目录: 常用模块之time模块 常用模块之random模块 常用模块之os模块 常用模块之sys模块 常用模块之subprocess模块 常用模块之json模块 常用模块之pickle模块 常用模块之 ...