我想在android中以3D旋转我自己的FrameLayout。我必须使用GlSurfaceView类吗?我是计算机图形学的新手,但知道旋转和翻译背后的理论。为了进行3D opengl旋转,我们通常会进行以下操作。Android ViewGroup 3D旋转
在活动类中,我们创建一个GLSurfaceView对象并设置其渲染器。 Renderer对象是从实现GlSurfaceView.Renderer接口的类创建的。
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
GLSurfaceView view = new GLSurfaceView(this);
view.setRenderer(new OpenGLRenderer());
setContentView(view);
}
在我们的渲染器类中,我们使图,旋转和平移用以下方法
// Called when the surface is created or recreated.
public void onSurfaceCreated(GL10 gl, EGLConfig config)
// Called to draw the current frame.
public void onDrawFrame(GL10 gl)
// Called when the surface changed size.
public void onSurfaceChanged(GL10 gl, int width, int height)
然而,随着
public class RotatedMapView extends FrameLayout
我要让我有被宣告自定义的FrameLayout这个:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
RotatedMapView view = new RotatedMapView (this);
view.setRenderer(new OpenGLRenderer());
setContentView(view);
}
但我不能,因为setRenderer对于GlSurfaceView是特别的。我现在浏览GlSurfaceView.java源代码,以适应我的设计。我为GlSurfaceVİew.java找到的链接是http://code.google.com/p/apps-for-android/source/browse/trunk/SpriteMethodTest/src/com/android/spritemethodtest/GLSurfaceView.java?r=150 来源太长。事实上,我并不懒得阅读它,但我想确定我是否以正确的方式。
其实我需要在3D旋转的MapView。有没有办法做到这一点? – 2011-03-22 23:48:02
您可以尝试使用上述动画。这将围绕y轴进行半3D旋转。如果你想要什么比你运气好 – skorulis 2011-03-22 23:56:00
你说扩展视图的任何东西都被设计成在2d的canvas元素上绘制,但是glsurfaceview也扩展了viewview,它扩展了视图。关键点是渲染器对象。 Glsurfaceview与其他视图不同,因为它具有渲染器对象。我不确定你是否正确。 – 2011-03-25 07:36:48