cocos2dx 嵌入Android webview

在2dx界面中嵌套加载显示一个webview,最简单的用法就是直接在一个WebView控件中显示,外加设置了一些简单的属性,可以自定义这个webview的大小。

java代码如下:

public class bxWebview extends Cocos2dxActivity {

	static WebView m_webView;
	static bxWebview majiang = null;
	static FrameLayout m_webLayout;
	static LinearLayout topLayout;

	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		// 全局变量保存this
		majiang = this;
		// 初始化一个空的布局
		m_webLayout = new FrameLayout(this); 
		m_webLayout.setPadding(30, 50, 30, 10);
		addContentView(m_webLayout, new LayoutParams(LayoutParams.FILL_PARENT,
				LayoutParams.FILL_PARENT
		// LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT
				));
	}

	public Cocos2dxGLSurfaceView onCreateView() {
		Cocos2dxGLSurfaceView glSurfaceView = new Cocos2dxGLSurfaceView(this);
		// TestCpp should create stencil buffer
		glSurfaceView.setEGLConfigChooser(5, 6, 5, 0, 16, 8);
		return glSurfaceView;
	}


	static {
		System.loadLibrary("cocos2dcpp");
	}

	public static void openWebView() {
		majiang.runOnUiThread(new Runnable() {// 在主线程里添加别的控件
			@SuppressLint("SetJavaScriptEnabled")
			public void run() {
				// 初始化webView
				m_webView = new WebView(majiang);
				// 设置webView能够执行javascript脚本
				m_webView.getSettings().setJavaScriptEnabled(true);
				// 设置可以支持缩放
				m_webView.getSettings().setSupportZoom(true);// 设置出现缩放工具
				m_webView.getSettings().setBuiltInZoomControls(true);
				// 载入URL
				m_webView.loadUrl("http://www.baidu.com");
				// 使页面获得焦点
				m_webView.requestFocus();
				// 如果页面中链接,如果希望点击链接继续在当前browser中响应
				m_webView.setWebViewClient(new WebViewClient() {
					public boolean shouldOverrideUrlLoading(WebView view,
							String url) {
						if (url.indexOf("tel:") < 0) {
							view.loadUrl(url);
						}
						return true;
					}
				});
				topLayout = new LinearLayout(majiang);
				topLayout.setOrientation(LinearLayout.VERTICAL);


				topLayout.addView(m_webView);
				// 再把线性布局加入到主布局
				m_webLayout.addView(topLayout);
			}
		});
	}

	public static void removeWebView() {
		m_webLayout.removeView(topLayout);
		topLayout.destroyDrawingCache();


		topLayout.removeView(m_webView);
		m_webView.destroy();
	}

	public boolean onKeyDown(int keyCoder, KeyEvent event) {
		if (m_webView.canGoBack() && keyCoder == KeyEvent.KEYCODE_BACK) {
			m_webView.goBack();
		} else {
			removeWebView();
		}
		return false;
	}
}

c++中调用方法:

#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)  
	JniMethodInfo minfo;
	bool isHave = JniHelper::getStaticMethodInfo(minfo,"com/xxx/xxx/bxWebview","openWebView","()V");  
	if (isHave)  
	{ 
		CCLog("exists----------");
		minfo.env->CallStaticVoidMethod(minfo.classID, minfo.methodID);  
	}else{
		CCLog("do not exist----------");
	} 
#endif

头文件包含:

#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
#include <jni.h>
#include "platform/android/jni/JniHelper.h"
#include <android/log.h>
#endif

效果图:




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值