1: package com.programmez.opengl.exercice1; 3: import android.content.Context; 4: import android.opengl.GLSurfaceView; 5: import android.view.MotionEvent; 7: public class CubeSurfaceView extends GLSurfaceView { 8: CubeRenderer mRenderer; 9: private final float TOUCH_SCALE_FACTOR = 180.0f / 320; 10: private final float TRACKBALL_SCALE_FACTOR = 36.0f; 11: private float mPreviousX = 0; 12: private float mPreviousY = 0; 14: public CubeSurfaceView(Context context) { 15: super(context); 16: mRenderer = new CubeRenderer(context); 17: setRenderer(mRenderer); 18: setRenderMode(GLSurfaceView.RENDERMODE_CONTINUOUSLY); 19: } 21: @Override 22: public boolean onTrackballEvent(MotionEvent e) { 23: mRenderer.setmAngleX(mRenderer.getmAngleX() + e.getX() 24: * TRACKBALL_SCALE_FACTOR); 25: mRenderer.setmAngleY(mRenderer.getmAngleY() + e.getY() 26: * TRACKBALL_SCALE_FACTOR); 27: return true; 28: } 30: @Override 31: public boolean onTouchEvent(MotionEvent e) { 32: float x = e.getX(); 33: float y = e.getY(); 34: switch (e.getAction()) { 35: case MotionEvent.ACTION_MOVE: 36: float dx = x - mPreviousX; 37: float dy = y - mPreviousY; 38: mRenderer.setmAngleX(mRenderer.getmAngleX() + dy 39: * TOUCH_SCALE_FACTOR); 40: mRenderer.setmAngleY(mRenderer.getmAngleY() + dx 41: * TOUCH_SCALE_FACTOR); 42: } 43: mPreviousX = x; 44: mPreviousY = y; 45: return true; 46: } 47: }