I am trying to combine 2D and 3D views. My app initially starts in 2D.
When the user presses a button, I want to temporarily switch to 3D,
draw some fancy transition effects, and switch back to 2D. However, I
am getting stuck because the 3D view will come out black. It's
reproducible on both the 1.0 SDK and G1 phone.
I have reduced the problem to the following. You can drop the file
into ApiDemo:
1: when "GLSurfaceView2" is launched, initially it shows a blue screen
(2D View).
2: when user presses DPAD_DENTER, I create the 3D view and set it to
current view. However, the screen is completely black.
3: now, press PHONE button to start the dialer, then press the BACK
button, the rotating cubes is rendered on the screen
Is this a bug?
Thanks
-----------------------------Add to ApiDemo/
AndroidManifest.xml---------------------
<activity android:name=".graphics.GLSurfaceViewActivity2"
android:label="Graphics/OpenGL ES/GLSurfaceView2"
android:theme="@android:style/Theme.NoTitleBar"
android:configChanges="orientation|keyboardHidden">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category
android:name="android.intent.category.SAMPLE_CODE" />
</intent-filter>
</activity>
-------------------------------------------------
new---------------------------------------------
package com.example.android.apis.graphics;
import android.app.Activity;
import android.os.Bundle;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.view.KeyEvent;
import android.view.View;
import android.view.ViewGroup;
public class GLSurfaceViewActivity2 extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
normalView = new NormalView(this);
setContentView(normalView);
}
public boolean onKeyDown(int keyCode, KeyEvent event) {
switch (keyCode) {
case KeyEvent.KEYCODE_DPAD_CENTER:
if (isNormal) {
mGLSurfaceView = new GLSurfaceView(this);
mGLSurfaceView.setRenderer(new CubeRenderer(false));
setContentView(mGLSurfaceView);
isNormal = false;
}
return true;
}
return super.onKeyDown(keyCode, event);
}
protected void onResume() {
super.onResume();
if (mGLSurfaceView != null) {
mGLSurfaceView.onResume();
}
}
protected void onPause() {
super.onPause();
if (mGLSurfaceView != null) {
mGLSurfaceView.onPause();
}
}
private GLSurfaceView mGLSurfaceView;
private View normalView;
boolean isNormal = true;
}
class NormalView extends View {
public NormalView(Context context) {
super(context);
}
public void onDraw(Canvas canvas) {
Rect rect = canvas.getClipBounds();
Paint paint = new Paint();
paint.setAntiAlias(true);
canvas.drawColor(Color.BLUE);
}
}
-------------------------------------------------
end-------------------------------------------
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
-~----------~----~----~----~------~----~------~--~---