我有一个 GLRendering 类,它有一个像这样的变量:
public class MyGLRenderer implements GLSurfaceView.Renderer{
int width;
@Override
public void onSurfaceChanged(GL10 gl, int width, int height) {
//I know these values are being set here correctly here to the devices width and height
//Confirmed using Logging
this.width = width;
this.height = height;
}
}
在我的 Activity 类中,我正在创建 GLSurfaceView 类的实例并尝试通过对象获取宽度值,如下所示:
public class MainActivity extends Activity {
private GLSurfaceView myView;
MyGLRenderer render;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//Request full screen
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
myView = new MyGLSurfaceView(this);
render = new MyGLRenderer(myView);
setContentView(myView);
}
我的 Activity 类中有一个内部类,它来自这个类的 onTouchEvent() 方法,我需要访问这个“宽度”变量,如下所示:
class MyGLSurfaceView extends GLSurfaceView {
@Override
public boolean onTouchEvent(MotionEvent event) {
Log.v("Testing","Value of width is: "+render.width)
当我从 onTouchEvent() 方法中注销值时,它返回 0。为什么?我知道它不是 0,实际上是设备屏幕的宽度。
如果我将 MyGLSurfaceView 类中的“width”变量的声明更改为静态,那么它可以正常工作,但是我在 Activity 类中创建 MyGLSurfaceView 类的实例的原因是我不想使用静态。我想在不使用静态的情况下访问它。
我也尝试过使用 getter 方法,得到了相同的结果。
请有人可以帮助我理解这种行为以及如何解决它?谢谢