繁体   English   中英

Android:围绕屏幕中心旋转画布

[英]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一起使用?

CanvasDisplay的尺寸不一定总是相同的。 Display.getWidth()已过时,建议改用Display.getSize() 文档中

获取显示的大小,以像素为单位。

请注意,此值不应用于计算布局,因为设备通常会在显示屏的边缘进行屏幕装饰(例如状态栏),从而从此处返回的大小中减少可用的应用程序空间。 布局应改为使用窗口大小。

因此, canvas矩阵转换的情况下,请始终使用canvas作为参考,而不要使用“显示”或“窗口”作为参考,因为画布会提供准确的值。 因此,要使画布围绕中心旋转,您需要canvas的中心。

画布的中心是(canvas.getWidth()/2 , canvas.getHeight()/2)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM