1 package com.example.android.rs.nbody_gl;
2 
3 import android.content.Context;
4 import android.opengl.GLSurfaceView;
5 import android.util.AttributeSet;
6 import android.util.Log;
7 import android.view.InputDevice;
8 import android.view.KeyEvent;
9 import android.view.MotionEvent;
10 import android.view.View;
11 
12 public class BasicGLSurfaceView extends GLSurfaceView {
13     private static final String TAG = "BasicGLSurfaceView";
14     private final BasicGLRenderer mRenderer;
15 
BasicGLSurfaceView(Context context, AttributeSet attrs)16     public BasicGLSurfaceView(Context context, AttributeSet attrs) {
17         super(context, attrs);
18         setEGLContextClientVersion(2);
19         mRenderer = new BasicGLRenderer(context, this);
20         setup();
21     }
22 
BasicGLSurfaceView(Context context)23     public BasicGLSurfaceView(Context context) {
24         super(context);
25         setEGLContextClientVersion(2);
26         mRenderer = new BasicGLRenderer(context, this);
27         setup();
28     }
29 
setup()30     private void setup() {
31         setRenderer(mRenderer);
32         setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY);
33         setFocusable(true);
34         setFocusableInTouchMode(true);
35         requestFocus();
36 
37     }
38 
39     private final float TOUCH_SCALE_FACTOR = 180.0f / 320;
40     private float mPreviousX;
41     private float mPreviousY;
42 
43     @Override
onResume()44     public void onResume() {
45         super.onResume();
46         mRenderer.onResume();
47     }
48 
49     @Override
onPause()50     public void onPause() {
51         mRenderer.onPause();
52         super.onPause();
53     }
54 
55     @Override
onTouchEvent(MotionEvent e)56     public boolean onTouchEvent(MotionEvent e) {
57         mRenderer.onTouchEvent(e);
58         return true;
59     }
60 
61     @Override
onGenericMotionEvent(MotionEvent event)62     public boolean onGenericMotionEvent(MotionEvent event) {
63         Log.v(TAG,"onGenericMotionEvent ");
64         if (event.isFromSource(InputDevice.SOURCE_CLASS_JOYSTICK)) {
65             if (event.getAction() == MotionEvent.ACTION_MOVE) {
66                 float x = event.getAxisValue(MotionEvent.AXIS_X);
67                 float y = event.getAxisValue(MotionEvent.AXIS_Y);
68                 mRenderer.onJoystick(x,y);
69                 return true;
70             }
71         }
72         return super.onGenericMotionEvent(event);
73     }
74 
75     @Override
onKeyDown(int keyCode, KeyEvent event)76     public boolean onKeyDown(int keyCode, KeyEvent event) {
77         mRenderer.onKeyDown(keyCode, event);
78          return super.onKeyDown(keyCode, event);
79      }
80 
81 
82 }