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: }