[英]Android: rotate canvas around the center of the screen
我正在尝试围绕屏幕中心旋转画布,以在右下角获得(0,0)坐标。
这是我的方法:
Display display = getWindowManager().getDefaultDisplay();
int width = display.getWidth();
int height = display.getHeight();
canvas.rotate(180, width/2, height/2);
它确实可以正确旋转,并且在API级别为17的AVD上一切都很完美。但是在API级别为8的AVD上,(0,0)坐标显示在错误的位置。 旋转之前,图片也适合整个设备的屏幕,但现在看起来像这样:
是什么原因引起的?
*编辑!
通过围绕画布自己的中点旋转画布可以解决此问题:
canvas.rotate(180,canvas.getWidth()/2,canvas.getHeight()/2);
但是,为什么以前的版本不能与较旧的API一起使用?
Canvas
和Display
的尺寸不一定总是相同的。 Display.getWidth()
已过时,建议改用Display.getSize()
。 从文档中 :
获取显示的大小,以像素为单位。
请注意,此值不应用于计算布局,因为设备通常会在显示屏的边缘进行屏幕装饰(例如状态栏),从而从此处返回的大小中减少可用的应用程序空间。 布局应改为使用窗口大小。
因此, canvas
矩阵转换的情况下,请始终使用canvas
作为参考,而不要使用“显示”或“窗口”作为参考,因为画布会提供准确的值。 因此,要使画布围绕中心旋转,您需要canvas
的中心。
画布的中心是(canvas.getWidth()/2 , canvas.getHeight()/2)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.