有许多Stack Overflow的问题涉及如何保持活动在一个固定的方向上,建议设置android:screenOrientation(或这个)或手动处理配置更改。然而,如果想让大多数视图自动布局的同时保持一个视图的方向不变,则这些答案无法解决该问题。例如,我有一个主要的内容视图(位图)和可选的几个“工具栏”。当设备从纵向旋转到横向时,我希望工具栏能够自动重新布局。另一方面,主要内容视图具有位图,并且应随设备旋转。以下是我在onDraw中使用的简单代码:
当设备方向改变时,视图重新布局并且其坐标系相对于物理设备旋转90度,因此这显然不能按预期工作。一种解决方法是使用Matrix对象来绘制具有90度旋转的位图,如果设备方向已更改。但是,输入坐标也必须更改以保持视图输入点和位图上的点对应,否则无法实现预期效果。
因此,我的问题在于:我能否使视图保持其相对于设备的坐标系在方向更改时不旋转?
下面是一个表达我想要的内容和我当前获得的内容的图片(也说明了视图的xy坐标系)。
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坐标系)。