【发布时间】:2013-12-25 19:47:00
【问题描述】:
有几个堆栈溢出问题涉及将活动保持在恒定方向,建议设置android:screenOrientation(或this)或deal with the configuration changes manually。
但是,如果想要为大多数视图保留自动布局的好处,但要让一个视图保持恒定方向,这些答案并不能解决问题。例如,我有一个内容的主视图(位图)和可选的几个“工具栏”。当设备从纵向旋转到横向时,我希望工具栏自动重新布局。另一方面,主内容视图有一个位图,它应该随设备旋转。这是我在 onDraw 中使用的简单代码:
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Bitmap bm = ... // code to get a bitmap
if (bm != null) {
canvas.drawBitmap(bm,0,0,mPaint);
}
}
这显然不能按预期工作,因为当设备方向发生变化时,视图会重新布局,并且其坐标系在此方向变化中相对于物理设备旋转 90 度。如果设备方向发生变化,一种补偿方法是使用 Matrix 对象以 90 度旋转来绘制位图。然而,为了保持视图输入点和位图上的点保持对应,输入坐标也必须改变。
因此,经过长时间的解释后,我的问题是:我能否保留视图,以便在方向改变时其相对于设备的坐标系不会旋转。
这是一张表达我想要什么以及我目前得到什么的图片(也说明了视图的 xy 坐标系)。
【问题讨论】:
-
使用 2 个布局 xmls .. 一个用于 Portarait,一个用于横向 .. 为了使其高效,只需将工具栏用作不同的布局,其余的在片段中。这样你只需要带有工具栏的 xml 作为 2 个文件..
-
只需在 manifest.xml 的特定活动中添加 android:screenOrientation="portrait" 即可。你会得到你想要的。 :)
-
@HYS 如果你有你的解决方案,它的 gud 。如果没有,您可以分享错误:)
-
@subhalaxminayak android:screenOrientation="portrait" 不是解决方案,因为它似乎将整个屏幕保持在纵向模式。我希望其他视图重新布局为横向,只有位图视图保持纵向。谢谢。
-
@HYS 你只想保持图片不变??