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 }