【发布时间】:2012-05-16 09:32:20
【问题描述】:
我的 Android 应用程序只能在纵向模式下运行。使用
禁用横向模式setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT).
但我有一个带有签名视图(自定义视图)的对话框,用户使用它来绘制他的签名。结果它给出了一个位图。我还有一个用于保存签名预览的 ImageView,它显示上述位图。用户可以在绘制签名时随心所欲地握住他的设备。因此,我的应用程序应根据当前屏幕位置旋转生成的位图。例如,用户用角度 = 90 度绘制他的签名,我想将位图旋转 90 度,我的应用程序将以纵向模式正确显示签名位图。问题是只支持纵向模式,以下方法不起作用:
int rotation = getResources().getConfiguration().orientation;
或
int rotation = getWindowManager().getDefaultDisplay().getOrientation();
这些语句的结果始终为 0。
那么,如果方向更改被禁用,我如何获取设备的当前位置?
【问题讨论】:
-
您可以使用硬件传感器来获取手机的精确方向并确定它的朝向
-
据我所知,硬件传感器使用回调 onChanged(),只有当回调发生时我才能得到一个值。此外,传感器会为我提供原始值,并且以更方便的值(如 Surface.ROTATION_0、Surface.ROTATION_90、Surface.ROTATION_180、Surface.ROTATION_270)处理它们可能会带来巨大的工作量。
标签: android bitmap orientation landscape portrait