我想在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