如何在android的屏幕中心绘制一个正方形

时间:2015-06-22 08:05:16

标签: java android

我想在屏幕中央画一个正方形。我希望在广场的左侧和右侧有一个小的边缘,这样就远离边缘,我试图创建它的方式是在下面。问题是它不能在所有设备上正确显示,并且当屏幕倾斜时,一些方形被切断。我想这是因为我使用rectSide = 1000.有没有人知道更好的方法可以在任何屏幕尺寸上工作?

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

3 个答案:

答案 0 :(得分:1)

您需要以编程方式获取设备的高度和宽度

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

更新:正如@Der Golem指出的那样,在widthheight之间采用较小的值,以便所有方面都相等

答案 1 :(得分:1)

获取设备的维度:

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);

答案 2 :(得分:0)

你是对的,使用绝对像素数不是好方法。

您应该使用显示高度和尺寸来调整您的rectSide。宽度。如何获取屏幕尺寸属性已经讨论过here

我还强烈建议您阅读this,以便更好地了解如何管理多种屏幕尺寸。