Android 在不更改活动的情况下更新子视图';s方向
我有一个活动,其方向锁定为纵向:Android 在不更改活动的情况下更新子视图';s方向,android,Android,我有一个活动,其方向锁定为纵向: <activity android:name="MainActivity" android:label="@string/app_name" android:screenOrientation="portrait" android:theme="@android:style/Theme.NoTitleBar"> 然而,在活动中,我有一些自定义视图,其中我绘制了一些文本、矩形,尤其是表示箭头的路径 我需要能够在手机旋转时更
<activity android:name="MainActivity" android:label="@string/app_name"
android:screenOrientation="portrait" android:theme="@android:style/Theme.NoTitleBar">
然而,在活动中,我有一些自定义视图,其中我绘制了一些文本、矩形,尤其是表示箭头的路径
我需要能够在手机旋转时更新箭头,而不改变活动的总体布局
因此,活动和布局始终是纵向的,但当手机从纵向倾斜到横向时,需要通知并重新绘制嵌套视图
如何侦听物理方向的更改并更新嵌套视图以重新绘制
谢谢,p更新: 当当前活动的
活动
将屏幕方向
设置为纵向
或横向
时,似乎无法检测方向变化(但尚未测试其他值。即使使用广播接收器和
我能想到的唯一方法就是手动跟踪传感器
这不起作用: 您应该覆盖
活动中的函数
,并从该函数刷新UI
请注意,您需要将
android:configChanges=“orientation”
添加到您的活动中,以便调用此函数。当然可以!只需子类OrientationEventListener
并在onOrientationChanged
方法中执行您需要执行的操作即可
实例化类时,显然要将上下文传递给构造函数,然后在对象上调用enable()
,这样就可以开始了
唯一的缺点是,它不仅仅是纵向或横向,而是以度为单位的精确旋转。但是,通过一点调试和一个漂亮的if/then语句,您可以计算出这些数字的范围
以下是来自文档的有用提示:
当设备的方向改变时调用。方向
参数以度为单位,范围从0到359。方向
为0
当设备定位在其自然位置时,90度
左侧位于顶部时为度,左侧位于顶部时为180度
上下颠倒,当其右侧到顶部时为270度。
方向\u UNKNOWN
在设备接近水平和垂直时返回
方向无法确定
可以找到这些文档
希望这有帮助!我已经添加了xml属性和方法实现(调用时应该会显示Toast),但什么都没有发生。我猜这是因为
screenOrientation=“肖像”
setting?@inazaruk-您是否在清单中锁定屏幕方向的情况下尝试过此操作,因为我刚刚尝试过,并且根本没有调用OnConfiguration Changed您是对的。如果设置了screenOrientation
,则不会报告屏幕方向配置更改。那么还有其他方法吗?没有,它看起来像screenOrientationion
是在系统内部的某个深处处理的,因为即使为ACTION\u CONFIGURATION\u CHANGED事件注册广播接收器也无济于事。此外,即使这是稍后的回复,我认为如果从现在开始需要它,它仍然会对某人有所帮助。