簡體   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