Ken_Rao's blog

Indie game developer is my end goal

如何在安卓上给应用程序设置透明背景 JavaActivity篇

Question: 对于JavaActivity如何在安卓上给应用程序设置透明背景?

之前发过一篇如何在安卓上给应用程序设置透明背景 NativeActivity篇,但是由于3.0rc0后Cocos2d-x更改为Java Activity,而不再是Native Activity,使得这种方法失效。

修改的东西不多。主要有3步。

  • 第一步:在AndroidManifest.xml中设置Activity背景透明
1
android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"

xml

  • 第二步:在libcocos2dx项目的org.cocos2dx.lib项目中的Cocos2dxActivity.java文件中,修改init()方法。

    增加如下代码:

    
      this.mGLSurfaceView.setZOrderOnTop(true);
      this.mGLSurfaceView.getHolder().setFormat(PixelFormat.TRANSLUCENT);
      this.mGLSurfaceView.setEGLConfigChooser(8,8,8,8,16,0);
    

    删除如下代码:(如果不删除的话,顶部会有一个Cocos2dxEditText的白条,Cocos2dxEditText封装了EditText,主要用于TextField,如果程序中有使用到它,那建议更换为EditBox)

    
      /mFrameLayout.addView(edittext);
      //this.mGLSurfaceView.setCocos2dxEditText(edittext);
    

  • 第三步:在libcocos2dx项目的org.cocos2dx.lib项目中的Cocos2dxRenderer.java文件中,修改onSurfaceCreated()方法。

    增加如下代码:

    
      pGL10.glDisable(GL10.GL_DITHER);
      pGL10.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT, GL10.GL_FASTEST);
      pGL10.glClearColor(0, 0, 0, 0);
      pGL10.glEnable(GL10.GL_CULL_FACE);
      pGL10.glShadeModel(GL10.GL_SMOOTH);
    

Comments