浅试 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 ...
随机推荐
- Eclipse rap 富客户端开发总结(14) :rap 图片、数据缓存处理
一.概述 在进行了 rap 的基本学习之后,您对 rap 的理解是否进入了更高的一个层次呢,个人觉得,对学习 rap 的人来说,进行 rap 的学习是一个探索的过程,在编程中不断的对其进行理解和分析, ...
- NativeScript官方书籍:NativeScript-用你现有技术构建移动应用程序
大家好,我用nativescript做企业级移动应用开发一年多了.从最初只能看nativescript英文文档,到现在看到官方发布正式的书籍,感觉nativescript变得越来越好. 当然,在这个过 ...
- python之并发编程之多进程
一.共享数据 进程间通信应该尽量避免使用本节所讲的共享数据方式 from multiprocessing import Manager,Process,Lock def work(dic,mutex) ...
- Java学习笔记三---unable to launch
环境配置好后,在eclipse下编写HelloWorld程序: ①创建新工程 ②创建.java文件,命名为HelloWorld ③在源文件中添加main方法,代码如下: public void mai ...
- 作为一个新人,怎样学习嵌入式Linux
作为一个新人,怎样学习嵌入式Linux?被问过太多次,特写这篇文章来回答一下. 在学习嵌入式Linux之前,肯定要有C语言基础.汇编基础有没有无所谓(就那么几条汇编指令,用到了一看就会). C语言要学 ...
- BZOJ1207_打鼹鼠_KEY
[HNOI2004]打鼹鼠 Time Limit: 10 Sec Memory Limit: 162 MB Description 鼹鼠是一种很喜欢挖洞的动物,但每过一定的时间,它还是喜欢把头探出到地 ...
- 3.bootstrap-组件
1.图标 <button type="button" class="btn btn-default"> <span class="g ...
- 强大的桌面用 PDF 重排工具:K2pdfopt 简明教程
用 Kindle 阅读 PDF 一直以来都遭到小伙伴们的无限吐槽,在那 Kindle 还能越狱的时代,我们有 Koreader 之类优秀的 Kindle 第三方插件实现 PDF 文档的实时重排,但是随 ...
- Hive基础(2)---(启动HiveServer2)Hive严格模式
启动方式 1, hive 命令行模式,直接输入/hive/bin/hive的执行程序,或者输入 hive –service cli 用于linux平台命令行查询,查询语句基本跟mysql查询语句类似 ...
- spring web.xml配置
<!--推荐使用此种方式--> <listener> <listener-class> org.springframework.web.context.Conte ...