【发布时间】:2012-02-09 16:06:49
【问题描述】:
我的问题直截了当。在任何安卓设备上打开相机应用程序。在纵向模式(默认 90 度)下,底部框架由用于相机功能的按钮组成,例如闪光灯、图像捕捉、访问图库等。将设备旋转到任意方向(180 度或 0 度)横向栏仍然粘在设备菜单按钮位置旁边的窗口空间中。该功能是如何实现的?将框架锚定到窗口的特定位置,以便设备方向发生变化,从而重新配置设备坐标系(整个视图/窗口中每个框架的 X 和 Y 值更改)对重绘框架没有影响。这可以通过为布局 xml 文件指定属性来轻松实现吗?或者这是否涉及编写复杂的代码?如果编程是唯一的选择,我会尽量让它尽可能简单。
谢谢。
【问题讨论】:
-
我搜索了官方的 Camera.apk 源代码。从那里看到了几个解决方案。似乎默认的官方应用程序实际上是在相当复杂的设置中使用大量带有 Open GL API 的图形包代码。有了我所拥有的时间线,我不妨依赖于在 RelativeLayout 中使用 layout_align* 属性并处理方向更改并在 onConfigurationChanged 方法中传递新的布局参数。如果我成功实现了我的愿望,我会在几天内继续发布。
-
有没有办法将整个 Activity 的内容视图锁定/冻结/修复/锚定到设备窗口,以便方向更改不会导致 Activity 重绘视图?我知道 Traffic Jam(游戏应用)在摩托罗拉 Xoom 平板电脑上做到了这一点。这对我来说非常有用。
-
显然,修复活动的窗口很容易。 android:screenOrientation 正是这样做的。就在我的鼻子底下,我从来没有费心去查看开发指南。
标签: android layout view window anchor