开发Opengl 3D案例Demo第一步
1.开发主控制类My3D_Activity
private MyGLSurfaceView myGLSurfaceView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//初始化GLSurfaceView
myGLSurfaceView = new MyGLSurfaceView(this);
//将My3D_Activity的显示界面设置为MyGLSurfaceView
setContentView(myGLSurfaceView);
//获取焦点
myGLSurfaceView.requestFocus();
//设置为可触控
myGLSurfaceView.setFocusableInTouchMode(true);
}
@Override
protected void onResume() {
super.onResume();
//将GLSurfaceView的onResume()方法与Activity的onResume()方法进行绑定
myGLSurfaceView.onResume();
}
@Override
protected void onPause() {
super.onPause();
//将GLSurfaceView的onPause()方法与Activity的onPause()方法进行绑定
myGLSurfaceView.onPause();
}
- 其中,onResume与onPause是Activity生命周期运行中的方法,当Activity可以得到用户焦点的时候就会调用onResume方法,当Activity被遮挡住的时候就会调用onPause方法,onPause和onResume中的动作应该互逆,比如说onPause中释放了相机,那么onResume中就要重新初始化相机。
- GLSurfaceView中的onResume与onPause方法封装对应的执行内容,将其与Activity对应的方法绑定即可。
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
小知识:
关于Activity的生命周期方法
onCreate:当第一次调用一个Activity就会执行onCreate方法
onStart:当Activity处于可见状态的时候就会调用onStart方法。 该方法在 onCreate() 方法之后被调用(一个新 Activity 启动入栈后,它在屏幕最前端,处于栈的最顶端,此时它处于可见并可和用户交互的激活状态),或者在 Activity 从 Stop 状态转换为 Active 状态时被调用,一般执行了onStart()后就执行onResume()。
onResume:当Activity可以得到用户焦点的时候就会调用onResume方法
onRestart:当Activity没有被销毁的时候重新调用这个Activity就会调用onRestart方法(一般执行了onRestart后就执行onStart)
onPause:当 Activity 被另一个透明或者 Dialog 样式的 Activity 覆盖时的就会调用onPause方法。此时它依然与窗口管理器保持连接,系统继续维护其内部状态,所以它仍然可见,但它已经失去了焦点故不可与用户交互。
onStop:当 Activity 被另外一个 Activity 覆盖、失去焦点并并处于不可见(Stop)状态时调用onStop方法,
onDestory:当Activity被销毁时会调用onDestory方法
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
2.开发3D场景视图类MyGLSurfaceView
//角度缩放比例(用于手指移动位移大小与旋转角度大小比例的计算)
private fina