[英]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.