浅试 Webview 一app 加载 H5小游戏
整体架构:
InventionActivity:实现UI的实例化,基本的按钮Activity之间跳转
GameActivity:实现UI的实例化,Webview的基本使用
MyProgressDialog:UI进度对话框属性类
依赖库类:
SystemBarTintManager + Config = 实现兼容版本沉浸状态栏
----------------------我是天天酷涛---------------------------
Webview 运行加载 H5小游戏
Webview基本属性
WebSettings :
WebSettings setting = webView.getSettings();
setting.setUseWideViewPort(true); //将图片调整至适合Webview大小
settings.setSupportZoom(true);//支持缩放
settings.setLoadWithOverviewMode(true);//缩放至屏幕大小
settings.setLoadsImagesAutomatically(true);//支持自动加载图片
settings.setDomStorageEnabled(true); //开启dom storage AOI功能
//进行缓存
settings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);//设置缓存模式
settings.setAppCacheEnabled(true);//加载缓存
String path = Environment.getExternalStorageDirectory().getAbsolutePath()+"/gamecache";
Log.d("GameActivity", path);
settings.setAppCachePath(path); //设计缓存路径
//加载JS
settings.setJavaScriptEnabled(true);//支持js
webView.loadUrl(msString);//加载网页
//禁止第三方浏览器打开
//覆盖浏览器
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
webView.loadUrl(msString);
//返回值是true的时候控制去WebView打开,为false调用系统浏览器或第三方浏览器
view.setWebChromeClient(new WebChromeClientProgress());
return true;
} @Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
myProgressDialog.show();
webView.setVisibility(View.GONE);
super.onPageStarted(view, url, favicon);
} @Override
public void onPageFinished(WebView view, String url) {
if (myProgressDialog.isShowing()){
myProgressDialog.dismiss();
webView.setVisibility(View.VISIBLE);
}
} @Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
super.onReceivedError(view, errorCode, description, failingUrl);
view.stopLoading();
view.clearView();
String data="游戏暂时出错了,正在修复哟。";
view.loadUrl("javascript:document.body.innerHTML=\"" + data + "\"");
}
});
} private class WebChromeClientProgress extends WebChromeClient{
@Override
public void onProgressChanged(WebView view, int newProgress) {
myProgressDialog.setProgress(newProgress); if(myProgressDialog !=null){ if(newProgress >= 100){
myProgressDialog.dismiss();
Log.d("GameActivity","100");
} }
super.onProgressChanged(view, newProgress);
}
} //返回上一个加载的网页
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && webView.canGoBack()){
//返回键退回
webView.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}
//借用了网上h5小游戏的资源

附上源码地址:https://github.com/TIANTIANKUTAO/Invention_SimpleHeart
浅试 Webview 一app 加载 H5小游戏的更多相关文章
- 移动web、webApp、混合APP、原生APP、androd H5混合开发 当无网络下,android怎么加载H5界面
PhoneGap是一个采用HTML,CSS和JavaScript的技术,创建移动跨平台移动应用程序的快速开发平台.它使开发者能够在网页中调用IOS,Android,Palm,Symbian,WP7,W ...
- Android:webView加载h5网页视频,播放不了,以及横屏全屏的问题和实现自定义加载进度条的效果
1.webView加载h5网页视频,播放不了,android3.0之后要在menifest添加硬件加速的属性 android:hardwareAccelerated="true". ...
- Android使用WebView加载H5页面播放视频音频,退出后还在播放问题解决
Android中经常会使用到WebView来加载H5的页面,如果H5页面中有音频或者视频的播放时,还没播放完就退出界面,这个时候会发现音频或者视频还在后台播放,这就有点一脸懵逼了,下面是解决方案: 方 ...
- iOS “请在微信客户端打开链接” UIWebview加载H5页面携带session、cookie、User-Agent信息 设置cookie、清除cookie、设置User-Agent
公司新开的一个项目..内容基本上是加载H5页面显示..当时觉得挺简单的..后来发现自己掉坑里了..一些心理历程就不说了..说这个项目主要用到的知识点吧..也是自己踩得坑. 首先说说..这个项目上的内容 ...
- 控件WebView网页的加载
Android:控件WebView网页的加载 WebView可以使得网页轻松的内嵌到app里,还可以直接跟js相互调用. webview有两个方法:setWebChromeClient 和 setWe ...
- 【Android开发那点破事】打开APP加载页面实现
今天的破事呢就说说APP加载页面的实现.一般情况下,当APP打开的时候,我们需要做很多事情,比如检查网络连接啊,初始化一些配置啊等等.我们可以让这些事情在APP完全打开之前做完,然后呢在打开的过程中显 ...
- UIWebview加载H5界面侧滑返回上一级
一.UIWebview的发现 问题发现:当UIWebview王深层次点击的时候,返回时需要webView执行goBack方法一级一级返回,这样看到的webView只是在该界面执行刷新,并看不到类似iO ...
- Egret白鹭H5小游戏开发入门(一)
前言: 好久没更新博客了,以前很多都不会,所以常常写博客总结,倒是现在有点点经验了就懒了.在过去的几个月里,在canvas游戏框架方面,撸过了CreateJS,玩得了Egret,又学过PIXI.js. ...
- 开发H5小游戏
Egret白鹭H5小游戏开发入门(一) 前言: 好久没更新博客了,以前很多都不会,所以常常写博客总结,倒是现在有点点经验了就懒了.在过去的几个月里,在canvas游戏框架方面,撸过了CreateJ ...
随机推荐
- while循环_do_while循环_switch
swith语法: switch(值) { case 值1: 语句 break; case 值2: 语句 break; case 值3: 语句 break; default: break; } 1.值与 ...
- Eclipse rap 富客户端开发总结(3):rcp/rap目前界面上的一些差异
1. Label和Button按钮的显示的差异 当Label 和 Button显示的文字过长显示不开的时候,rcp.rap的处理方式就不一样了,rap显示不开会自己截取掉后面的文字,rcp会在文字的中 ...
- 02函数-04-箭头函数(ES6)
ES6新增的函数:Arrow Function,定义方式就是一个箭头 箭头函数相当于匿名函数,并且简化了函数定义,和匿名函数最大的区别在于其内部的this不再"乱跑",而是由上下文 ...
- ops-web运维平台-create.jsp-mootools下拉框-复选框
create.jsp页面的,body部分 <body onload="Page.init('${pageError}','${pageMessage}',${isSubmit},tru ...
- 如何在mybatis 中使用In操作
如何在mybatis 中使用In操作 假如我们想使用这样一个sql 语句,但是这样的sql语句有IN这样的操作.在我们的mybatis中有相对应的操作 SELECT * FROM product_db ...
- JQuery中关于浏览器兼容性的问题
前 言 LIUWE JQuery是一个特别强大的javascript代码库,,它的操作DOM的能力是相当强大的,JQuery可以说是支持各大主流浏览器,但是随着时代的不断发展,浏览器是在不断的更 ...
- 第一个ExtJS练习(添加用户面板)
1.[准备] 我是在visual studio里面建立了一个asp.net MVC项目,然后导入ExtJS必要的包,然后写的. ExtJS5.1版本下载:https://pan.baidu.com/s ...
- 第5章 不要让线程成为脱缰的野马(Keeping your Threads on Leash) ---简介
这一章描述如何初始化一个新线程,如何停止一个执行中的线程,以及如何了解并调整线程优先权. 读过这一章之后,你将有能力回答一个 Win32 多线程程序设计的最基本问题.你一定曾经在 Usenet ...
- 实例讲解webpack的基本使用第二篇
这一篇来讲解一下如何设置webpack的配置文件webpack.config.js 我们新建一个webpack-demo的项目文件夹,然后安装webpack 执行如下命令 在项目文件夹下,建一个dis ...
- JAVA 反射(1)
getDeclaredField是可以获取一个类的所有字段. getField只能获取类的public 字段.