如何在安卓上给应用程序设置透明背景 NativeActivity篇
Question: 对于NativeActivity如何在安卓上给应用程序设置透明背景?
以Cocos2d-x 3.0 rc0为例,对于NativeActivity,效果图:
如果你想让你的activity透明,很简单,只需要4步。
- 第一步:打开AndroidManifest.xml文件,添加Translucent到
1
| android:theme="@android:style/Theme.NoTitleBar.Fullscreen">
|
- 第二步:打开Cocos2dxActivity.java文件,添加
1
| getWindow().setFormat(PixelFormat.TRANSLUCENT);
|
- 第三步:打开cocos2d/cocos/2d/CCDirector.cpp文件,找到setGLDefaultValues()函数,修改最后一个alpha值,范围从0.0f到1.0f。
1
| glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
|
- 第四步:打开cocos2d/cocos/2d/platform/android/nativeactivity.cpp,找到engine_init_display(struct engine* engine)函数,修改如下数组
修改
1
2
3
4
5
6
7
8
9
10
| const EGLint attribs[] = {
EGL_SURFACE_TYPE, EGL_WINDOW_BIT,
EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT,
EGL_BLUE_SIZE, 5,
EGL_GREEN_SIZE, 6,
EGL_RED_SIZE, 5,
EGL_DEPTH_SIZE, 16,
EGL_STENCIL_SIZE, 8,
EGL_NONE
};
|
成
1
2
3
4
5
6
7
8
9
10
11
| const EGLint attribs[] = {
EGL_SURFACE_TYPE, EGL_WINDOW_BIT,
EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT,
//EGL_BLUE_SIZE, 5, -->delete
//EGL_GREEN_SIZE, 6, -->delete
//EGL_RED_SIZE, 5, -->delete
EGL_BUFFER_SIZE, 32, //-->new field
EGL_DEPTH_SIZE, 16,
EGL_STENCIL_SIZE, 8,
EGL_NONE
};
|
搞定收工