2015-06-22 78 views
0

我正在畫屏幕中心的一個正方形。我希望在那裏左右兩邊有一個微小的邊距,以便遠離邊緣,我試圖創建它的方式在下面。問題在於,它無法在所有設備上正確顯示,並且當屏幕傾斜時,部分正方形被切斷。我認爲這是因爲我使用rectSide = 1000.有沒有人知道更好的方式來做到這一點,將在任何屏幕尺寸上工作?如何在屏幕中心畫一個正方形android

int rectside =1000; 
canvas.drawRect(width/2 - rectSide/2, 
       height/2 - rectSide/2, 
       width/2 + rectSide/2, 
       height/2 + rectSide/2, paint); 
+0

1000像素似乎是一個很大的數目,對我來說。而且,如果它在中心......它已經遠離邊緣。你不需要削減一些額外的大小。 –

+0

好吧,當然,如果它小一點的話就是小邊緣。 –

回答

1

您需要獲得設備的高度和寬度編程這樣

DisplayMetrics displaymetrics = new DisplayMetrics(); 
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics); 
int height = displaymetrics.heightPixels; 
int width = displaymetrics.widthPixels; 

更新:由於@Der傀儡指出,採取widthheight之間的小,使得各方應等於

+0

...然後在寬度和高度之間取**較小的**。 –

+0

你是指在高度和寬度之間取小者? – Phill

+1

既然你想要一個**正方形**,尺寸必須是**相同**。 –

0

你說得對,使用絕對像素數並不是好方法。

你應該使用顯示高度&寬度來調整你的左側。如何獲得屏幕尺寸屬性已經在here中討論過了。

我還強烈建議您閱讀this,以更好地瞭解如何管理多種屏幕尺寸。

+0

隨着鏈接ü也應該添加代碼片斷too.Otherwise有人可以downvoteü –

0

獲取設備的尺寸:

DisplayMetrics displaymetrics = new DisplayMetrics(); 
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics); 
int height = displaymetrics.heightPixels; 
int width = displaymetrics.widthPixels; 

接下來,得到的最小尺寸:

int diameter = width; 
if (height < width){ 
    diameter = height; 
} 

現在得到的偏移,我建議使用某種設備的百分比,例如

int offset = (int) (0.05*diameter); 
diameter -= offset; 

最後畫出來:

canvas.drawRect(width/2 - diameter/2 , 
       height/2 - diameter/2, 
       width/2 + diameter/2, 
       height/2 + diameter/2, paint); 
+0

在我忘記之前,如果橫向變化混亂你的矩形,一定要把所有這一切都放在一個方法,你可以重繪一個UI更新是必需的(並且不要忘記清除畫布:))。 –

相關問題