2011-01-21 178 views
2

我想使它成为我的应用程序永远不会进入肖像模式,但能够在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

据我所知在2.3之前不支持倒排布局。所以除非你用自定义的SurfaceView绘制屏幕,​​否则你不能用标准的小部件来做。使用表面视图,您只需在渲染之前转换整个画布即可。

此外,你应该要想知道当前的方向(没有魔法numuber)使用常量,看到Configuration class API documentation

if (orientation==Configuration.ORIENTATION_LANDSCAPE) 
+0

必须有办法手动设置x轴和y轴? android操作系统如何知道自己做它? – SamRowley 2011-01-21 10:40:29

1

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。