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-工具类的更多相关文章

  1. 53. Android常用工具类

    主要介绍总结的Android开发中常用的工具类,大部分同样适用于Java.目前包括HttpUtils.DownloadManagerPro.ShellUtils.PackageUtils.Prefer ...

  2. Android 常见工具类封装

    1,MD5工具类: public class MD5Util { public final static String MD5(String s) { char hexDigits[] = { '0' ...

  3. 【转】Android常用工具类

    主要介绍总结的Android开发中常用的工具类,大部分同样适用于Java. 目前包括HttpUtils.DownloadManagerPro.ShellUtils.PackageUtils.Prefe ...

  4. Android基础工具类重构系列一Toast

    前言: 一直在考虑写一下Android实际项目中的一些总结,翻看CSDN博客,上一篇已经是一年多曾经. 本系列定位Android基础工具类重构.旨在记录实际项目中经经常使用到的一些工具类,比方Toas ...

  5. (转载)android 一些工具类汇总

    android 一些工具类汇总 作者:曾田生z 字体:[增加 减小] 类型:转载 时间:2016-08-14我要评论 本文给大家汇总介绍了一些常用的Android工具类,非常的简单实用,有需要的小伙伴 ...

  6. 随笔分类 - Android之工具类

    Android之文件搜索工具类 /** * @detail 搜索sdcard文件 * @param 需要进行文件搜索的目录 * @param 过滤搜索文件类型 */ private void sear ...

  7. Android 系统工具类SystemUtils

    包含的功能有: 获取系统中所有APP应用.获取用户安装的APP应用.根据包名和Activity启动类查询应用信息.跳转到WIFI设置.WIFI网络开关.移动网络开关.GPS开关 当前若关则打开 当前若 ...

  8. Android Sqlite 工具类封装

    鉴于经常使用 Sqlite 数据库做数据持久化处理,进行了一点封装,方便使用. 该封装类主要支持一下功能 支持多用户数据储存 支持 Sqlite数据库升级 支持传入 Sql 语句建表 支持 SQLit ...

  9. Android 常用工具类之SPUtil,可以修改默认sp文件的路径

    参考: 1. 利用Java反射机制改变SharedPreferences存储路径    Singleton1900 2. Android快速开发系列 10个常用工具类 Hongyang import ...

  10. Android常见工具类封装

    MD5加密 import android.annotation.SuppressLint; import java.security.MessageDigest; public class MD5 { ...

随机推荐

  1. Spring Boot 连接池

    配置方法 基于当前的1.5.2.RELEASE的Spring Boot. 依照官方文档,如果增加了如下依赖的配置,或者类路径中存在spring-boot-starter-jdbc的jar,那么已默认启 ...

  2. 如何用INNO安装添加快捷启动方式到Win7的快速启动栏(超级任务栏)

    问题:如何用INNO安装添加快捷启动方式到Win7的快速启动栏(超级任务栏) 在XP下,添加方式是直接把快捷方式复制到%appdata%\Microsoft\Internet Explorer\Qui ...

  3. DP解LCS问题模板及其优化

    LCS--Longest Common Subsequence,即最长公共子序列,一般使用DP来解. 常规方法: dp[i][j]表示字符串s1前i个字符组成的字符串与s2前j个字符组成的字符串的LC ...

  4. nyoj743-复杂度 【排列组合】

    http://acm.nyist.net/JudgeOnline/problem.php?pid=743 复杂度 时间限制:1000 ms  |  内存限制:65535 KB 难度:3   描述 fo ...

  5. 理解数据结构Priority Queue

    我们知道Queue是遵循先进先出(First-In-First-Out)模式的,但有些时候需要在Queue中基于优先级处理对象.举个例子,比方说我们有一个每日交易时段生成股票报告的应用程序,需要处理大 ...

  6. 在ecplise中创建一个maven工程

    1.我们首先需要在Ecplise中配置maven环境,详情见我的博客:https://www.cnblogs.com/wyhluckdog/p/10277278.html 2.maven projec ...

  7. 原生JS获取地址了参数

    方法一:采用正则表达式获取地址栏参数:( 强烈推荐,既实用又方便!) function GetQueryString(name) {      var reg = new RegExp("( ...

  8. mysql的头文件

    yum install mysql /usr/include/mysql yum install mysql-devel

  9. vc到vs2015消息函数

    afx_msg LRESULT OnMyIconNotify(WPARAM wParam,LPARAM lParam); vc6 可以是void  vs2015不可以 ON_MESSAGE(MYWM_ ...

  10. Executor(二)ThreadPoolExecutor、ScheduledThreadPoolExecutor 及 Executors 工厂类

    Executor(二)ThreadPoolExecutor.ScheduledThreadPoolExecutor 及 Executors 工厂类 Java 中的线程池类有两个,分别是:ThreadP ...