为了方便没有准备好梯子的同学,我把项目在优快云上打包下载,不过更新会慢一些
先来看一下我们还有什么基本功能没有实现:
- 使用传感器控制球的朝向
- 分屏
- 平移
- 缩放
之所以需要搞清楚屏幕的朝向,是因为传感器的坐标系、OpenGL坐标系、屏幕坐标系并不是完全统一的
屏幕朝向
手机的屏幕朝向应该是在开发app的时候不得不面对的问题,当然,最简单的方法就是锁定屏幕的朝向。其中,Landscape和Portrait是最常用的两种朝向。
在我们初期的代码实现中,所有坐标系都被调整到适合横屏(Landscape)的模式
简单的获取屏幕朝向,可以像这样:
getWindowManager().getDefaultDisplay().getRotation();
返回的结果和下面的定义进行比较:
- Surface.ROTATION_0 :竖屏,又称PortraitRotation
- Surface.ROTATION_90 :左横屏(手机左转90画面不动或画面右转90度),又称LandscapeRotation
- Surface.ROTATION_180:反向竖屏,又称UpsideDownRotation
- Surface.ROTATION_270:右横屏,又称SeascapeRotation
什么是竖屏呢?就是这样子:
没错,就是传说中的mx2
在ActivityInfo类中,也有表示横屏和竖屏的变量
* SCREEN_ORIENTATION_LANDSCAPE = 0; 横屏
* SCREEN_ORIENTATION_PORTRAIT = 1; 竖屏
我们可以用这种方式来强制指定屏幕的朝向:
setRequestedOrientation(ActivityInfo.SCRE