cocos2d android ios,cocos2d-x在iOS/Android双平台上嵌入WebView

@H_502_0@注:文章首次发布于个人博客,现将技术文章转移至此。http://blog.go3k.org/cocos2dx-add-webview/

游戏中的帮助和游戏公告,可以通过嵌入显示WebView的方案来实现,通过编辑HTML来修改、更新公告的样式和内容都很方便。

iOS平台嵌入

iOS平台上的嵌入很顺利,网上有现成的教程加代码,关键是做好OC与C++代码混编的封装。

参考如下链接中的实现方式:cocos2d-x 使用UIWebView加载网页

Android平台嵌入

1. 通过JNI从cocos2d-x的C++代码调用java代码。

这是Android实现WebView嵌入的前提条件,务必仔细的学习一遍,否则无法向下继续。 详情参见:JNI使用教程

这是我总结的一篇JNI使用的教程,基本涵盖所有JNI使用相关的要点。

2. java代码的实现

标准Android显示WebView的实现,参考代码如下:

publicvoiddisplayWebView(){

this.runOnUiThread(newRunnable(){

publicvoidrun(){

//actInstance为成员变量,是当前的Activity。m_webView是WebView类型的成员变量

LinearLayoutlayout=newLinearLayout(actInstance);

actInstance.addContentView(layout,newLayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT));

m_webView=newWebView(actInstance);

layout.addView(m_webView);

LinearLayout.LayoutParamslinearParams=(LinearLayout.LayoutParams)m_webView.getLayoutParams();

//可选的webview位置,x,y,width,height可任意填写,也可以做为函数参数传入。

linearParams.leftMargin=x;

linearParams.topMargin=y;

linearParams.width=width;

linearParams.height=height;

m_webView.setLayoutParams(linearParams);

//可选的webview配置

m_webView.setBackgroundColor(0);

m_webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);

m_webView.getSettings().setAppCacheEnabled(false);

}

});

}

这里需要注意的问题是:

JNI调用过来的代码并不是在主线程程序流中,UI显示需要放到主线程中进行。这个问题卡了我半天的时间,最后问了锋哥才明白Android上需要这么搞。

源码分享

抽时间Github上建了项目,地址如下:

3. 对webView的配置

在自定义的webView中跳转链接,而不是打开系统浏览器。

这需要对webView设置WebViewClient,并实现shouldOverrideUrlLoading方法,如下:

改变WebView视图的大小与位置

设置webView的LayoutParamaters,setLayoutParams。

总结

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

小编个人微信号 jb51ccc

喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值