【问题标题】:Android. How to determine screen orientation if application supports only portrait mode?安卓。如果应用程序仅支持纵向模式,如何确定屏幕方向?
【发布时间】: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


【解决方案1】:

您可以将对话框设置为单独的活动,并使其不限于纵向。

【讨论】:

  • 不幸的是,我不能让它不限于纵向,因为这是客户的要求。并且创建一个新的活动而不是一个对话框对我来说不是一条出路,因为我的签名视图位于带有几个片段的自定义寻呼机上,并且在启动新活动后恢复其状态并不容易。
猜你喜欢
  • 2023-04-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-09
  • 1970-01-01
相关资源
最近更新 更多