我正在尝试这样做,所以我的应用程序永远不会进入纵向模式,但能够在2个横向屏幕视图之间切换。我知道这可以在Gingerbread(2.3)中轻松完成,但我在为其他版本的android手动完成时,我的代码如下:
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轴?我如何抓住它们以扭转它们?
答案 0 :(得分:2)
据我所知,在2.3之前不支持倒置布局。 因此,除非您使用自定义SurfaceView绘制屏幕,否则我会说您无法使用标准窗口小部件。 使用表面视图,您只需要在渲染之前转换整个画布。
此外,您应该使用常量来了解当前方向(没有幻数),请参阅Configuration class API documentation
if (orientation==Configuration.ORIENTATION_LANDSCAPE)
答案 1 :(得分:1)
getRotation for class' Display'在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.
例如,如果设备具有自然高的屏幕,并且用户将其侧面转向横向,则此处返回的值可能是Surface.ROTATION_90或Surface.ROTATION_270,具体取决于它的方向转过身来。角度是屏幕上绘制图形的旋转,这是设备物理旋转的相反方向。例如,如果设备逆时针旋转90度,则补偿渲染将顺时针旋转90度,因此此处返回的值将为Surface.ROTATION_90。