整体架构:

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小游戏的更多相关文章

  1. 移动web、webApp、混合APP、原生APP、androd H5混合开发 当无网络下,android怎么加载H5界面

    PhoneGap是一个采用HTML,CSS和JavaScript的技术,创建移动跨平台移动应用程序的快速开发平台.它使开发者能够在网页中调用IOS,Android,Palm,Symbian,WP7,W ...

  2. Android:webView加载h5网页视频,播放不了,以及横屏全屏的问题和实现自定义加载进度条的效果

    1.webView加载h5网页视频,播放不了,android3.0之后要在menifest添加硬件加速的属性 android:hardwareAccelerated="true". ...

  3. Android使用WebView加载H5页面播放视频音频,退出后还在播放问题解决

    Android中经常会使用到WebView来加载H5的页面,如果H5页面中有音频或者视频的播放时,还没播放完就退出界面,这个时候会发现音频或者视频还在后台播放,这就有点一脸懵逼了,下面是解决方案: 方 ...

  4. iOS “请在微信客户端打开链接” UIWebview加载H5页面携带session、cookie、User-Agent信息 设置cookie、清除cookie、设置User-Agent

    公司新开的一个项目..内容基本上是加载H5页面显示..当时觉得挺简单的..后来发现自己掉坑里了..一些心理历程就不说了..说这个项目主要用到的知识点吧..也是自己踩得坑. 首先说说..这个项目上的内容 ...

  5. 控件WebView网页的加载

    Android:控件WebView网页的加载 WebView可以使得网页轻松的内嵌到app里,还可以直接跟js相互调用. webview有两个方法:setWebChromeClient 和 setWe ...

  6. 【Android开发那点破事】打开APP加载页面实现

    今天的破事呢就说说APP加载页面的实现.一般情况下,当APP打开的时候,我们需要做很多事情,比如检查网络连接啊,初始化一些配置啊等等.我们可以让这些事情在APP完全打开之前做完,然后呢在打开的过程中显 ...

  7. UIWebview加载H5界面侧滑返回上一级

    一.UIWebview的发现 问题发现:当UIWebview王深层次点击的时候,返回时需要webView执行goBack方法一级一级返回,这样看到的webView只是在该界面执行刷新,并看不到类似iO ...

  8. Egret白鹭H5小游戏开发入门(一)

    前言: 好久没更新博客了,以前很多都不会,所以常常写博客总结,倒是现在有点点经验了就懒了.在过去的几个月里,在canvas游戏框架方面,撸过了CreateJS,玩得了Egret,又学过PIXI.js. ...

  9. 开发H5小游戏

    Egret白鹭H5小游戏开发入门(一)   前言: 好久没更新博客了,以前很多都不会,所以常常写博客总结,倒是现在有点点经验了就懒了.在过去的几个月里,在canvas游戏框架方面,撸过了CreateJ ...

随机推荐

  1. Java Build Path(Java 构建路径)

    Java构建路径用于在编译Java项目时找到依赖的类,包括以下几项: 源码包 项目相关的 jar 包及类文件 项目引用的的类库 我们可以通过使用 Java 项目属性对话框中的 Java Build P ...

  2. Maven第三篇【Maven术语、pom.xml介绍】

    maven术语 在我们上一篇中已经知道了在Intellij idea下是如何使用Maven的了,创建出来的目录结构是这样子的: 上面的目录结构就是Maven所谓的"约定",我们使用 ...

  3. javaScript【创建对象、创建类、成员变量、方法、公有和私有、静态】

    创建对象 方式① 直接使用new Object() var obj = new Object(); 方式② 使用空的{}大括号 var obj2 = {}; 测试 增加属性,访问属性 我们要为创建的对 ...

  4. Mysql修改id自增值

    如果曾经的数据都不需要的话,可以直接清空所有数据,并将自增字段恢复从1开始计数 truncate table 表名 如果想保留之前的记录,从某一id(3356)重新开始 alter table 表名  ...

  5. PHP手动注入实验

    课程编写 类别 内容 实验课题名称 PHP手动注入实验 实验目的与要求 1.通过手动注入PHP页面,获取password字段名. 2.了解PHP手动注入的基本原理. 3.了解PHP手动注入的过程和基本 ...

  6. Configuration Extensions - 简化配置,让你配置支持变量

    在开发"RabbitCloud"项目时,使用配置文件发现会有很多重复值,所以我基于"Microsoft.Extensions.Configuration"写了一 ...

  7. python新增nonlocal关键字

    def fa(a): b = 2 def fb(): nonlocal b print(b) return fbc = 2fa(22)()# python作用域:LEGB

  8. CSS 基本样式

    1.CSS 背景: css 允许应用纯色作为背景,也允许使用背景图像创建相当复杂的效果 属性 描述 background-attachment 背景图像是否固定或者随着页面的其余部分滚动 backgr ...

  9. [UIKit学习]00.关于前置知识(storyboard,UIViewController,类扩展,项目属性)

    storyboard文件的认识 用来描述软件界面 默认情况下,程序一启动就会加载Main.storyboard 加载storyboard时,会首先创建和显示箭头所指的控制器界面 IBAction和IB ...

  10. 80端口被system 占用

    1 运行'netstat -ano'发现80端口被pid=4的进程占用 2 打开任务管理器,发现pid=4的进程,其实是system进程,其对应的进程描述是NT kernel & system ...