Java 在android中如何在屏幕中央绘制正方形
我想在屏幕中央画一个正方形。我想在正方形的左右两边留一点边距,这样就远离了边缘,我试图创建它的方式就在下面。问题是,它不会在所有设备上正确显示,并且当屏幕倾斜时,一些正方形会被切断。我想这是因为我使用了rectSide=1000。有谁知道一种更好的方法可以在任何大小的屏幕上使用吗Java 在android中如何在屏幕中央绘制正方形,java,android,Java,Android,我想在屏幕中央画一个正方形。我想在正方形的左右两边留一点边距,这样就远离了边缘,我试图创建它的方式就在下面。问题是,它不会在所有设备上正确显示,并且当屏幕倾斜时,一些正方形会被切断。我想这是因为我使用了rectSide=1000。有谁知道一种更好的方法可以在任何大小的屏幕上使用吗 int rectside =1000; canvas.drawRect(width/2 - rectSide/2, height/2 - rectSide/2,
int rectside =1000;
canvas.drawRect(width/2 - rectSide/2,
height/2 - rectSide/2,
width/2 + rectSide/2,
height/2 + rectSide/2, paint);
您需要像这样以编程方式获取设备的高度和宽度
DisplayMetrics displaymetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
int height = displaymetrics.heightPixels;
int width = displaymetrics.widthPixels;
更新:正如@Der Golem所指出的,在
宽度
和高度
之间取较小的值,这样所有边都应该相等你是对的,使用绝对数量的像素不是好方法
您应该使用显示高度和宽度调整矩形。如何获得屏幕大小属性已经讨论过了
我还强烈建议您阅读,以便更好地了解如何管理多个屏幕尺寸。获取设备尺寸:
DisplayMetrics displaymetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
int height = displaymetrics.heightPixels;
int width = displaymetrics.widthPixels;
int diameter = width;
if (height < width){
diameter = height;
}
接下来,获取最小尺寸:
DisplayMetrics displaymetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
int height = displaymetrics.heightPixels;
int width = displaymetrics.widthPixels;
int diameter = width;
if (height < width){
diameter = height;
}
最后画出来:
canvas.drawRect(width/2 - diameter/2 ,
height/2 - diameter/2,
width/2 + diameter/2,
height/2 + diameter/2, paint);
对我来说,1000像素似乎是个大数目。而且,如果它在中心。。。它已经远离边缘了。你不需要剪一些额外的尺寸。好吧,如果它是小的,当然是小边。。。。然后取
width
和`height之间的较小值。你是什么意思取高度和宽度之间的较小值?因为你想要一个正方形,尺寸必须相同。在我忘记之前,如果横向变化弄乱了你的矩形,请确保将所有这些都放在一个方法中,每当需要UI更新时,你都可以重新绘制(别忘了清理画布:)。除了链接之外,你还应该添加代码片段。否则有人会对你投反对票