我想在屏幕中央画一个正方形。我希望在广场的左侧和右侧有一个小的边缘,这样就远离边缘,我试图创建它的方式是在下面。问题是它不能在所有设备上正确显示,并且当屏幕倾斜时,一些方形被切断。我想这是因为我使用rectSide = 1000.有没有人知道更好的方法可以在任何屏幕尺寸上工作?
int rectside =1000;
canvas.drawRect(width/2 - rectSide/2,
height/2 - rectSide/2,
width/2 + rectSide/2,
height/2 + rectSide/2, paint);
答案 0 :(得分:1)
您需要以编程方式获取设备的高度和宽度
DisplayMetrics displaymetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
int height = displaymetrics.heightPixels;
int width = displaymetrics.widthPixels;
更新:正如@Der Golem指出的那样,在width
和height
之间采用较小的值,以便所有方面都相等
答案 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)