使用Display.getRotation()的屏幕旋转
问题描述:
我想使它成为我的应用程序永远不会进入肖像模式,但能够在2个横向屏幕视图之间切换。我知道这很容易在姜饼(2.3)来完成,但我有麻烦做手工为Android的其他版本,我的代码如下:使用Display.getRotation()的屏幕旋转
Display display = ((WindowManager) getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
int orientation = display.getRotation();
if (orientation == 1) {
/* The device is rotated to the left. */
Log.v("Left", "Rotated Left");
} else if (orientation == 3) {
/* The device is rotated to the right. */
Log.v("Right", "Rotated Right");
} else {
}
我的问题是我怎么翻转X和屏幕视图的y轴取决于检测到的旋转?我如何获得它们以扭转它们?
答
据我所知在2.3之前不支持倒排布局。所以除非你用自定义的SurfaceView绘制屏幕,否则你不能用标准的小部件来做。使用表面视图,您只需在渲染之前转换整个画布即可。
此外,你应该要想知道当前的方向(没有魔法numuber)使用常量,看到Configuration class API documentation
if (orientation==Configuration.ORIENTATION_LANDSCAPE)
答
getRotation类 '显示' 在https://developer.android.com/reference/android/view/Display.html#getRotation()
getRotation回报解释:
Surface.ROTATION_0 (no rotation),
Surface.ROTATION_90,
Surface.ROTATION_180,
or Surface.ROTATION_270.
例如,如果设备具有自然高大的屏幕,并且用户已将其转到其侧以进入al和风向,这里返回的值可能是Surface.ROTATION_90或Surface.ROTATION_270,具体取决于它转向的方向。该角度是屏幕上绘制图形的旋转,这与设备的物理旋转方向相反。例如,如果设备逆时针旋转90度,则补偿渲染将顺时针旋转90度,因此返回值将为Surface.ROTATION_90。
必须有办法手动设置x轴和y轴? android操作系统如何知道自己做它? – SamRowley 2011-01-21 10:40:29