计算CanvasView的比例因子

时间:2017-08-28 19:46:39

标签: android canvas drawing scale

晚上好,

首先,我需要为我糟糕的英语道歉,我尽量尽力描述我的问题。所以,我再次开始我的小型绘画游戏。我之所以完成它是因为我无法处理这个问题,我不想在这里惹恼所有人的问题。

正如我说的那样,我正在制作一个“Draw n'Guesss”游戏。我已经解决了Canvas在Firebase上的同步问题,不是我想要的,但我解决了它。现在我遇到了Canvas不适合每个屏幕的问题,我无法弄清楚如何计算匹配的比例因子。

每次创建带有画布的房间时,创建设备的屏幕分辨率都会在Firebase中填充。 如果我现在使用另一个屏幕分辨率的另一个设备并加入房间,画布有另一个尺寸(大或小)。

我已经尝试过不同的方法来计算比例因子。

首先,我认为只是将创建大小和实际屏幕分辨率分开。

第二次尝试是倒置的方式。

现在的方式是因为我的应用程序在底部有一个动作栏和小ImageView来获取屏幕分辨率并使用此代码细分动作栏和ImageView的大小。

    final int height = getResources().getDisplayMetrics().heightPixels - getActionBarSize() - (int)(100f * getResources().getDisplayMetrics().density);
    final int width = getResources().getDisplayMetrics().widthPixels;

哪种实际的工作也是如此。

我为此感到抱歉,但有没有人知道解决方案?

感谢您的帮助!

The gray area is what should be eliminated but it shouldnt be to big either.

1 个答案:

答案 0 :(得分:0)

您可以在自定义视图的onLayout或getWidth()返回>的第一个绘图中计算它0,获取其中任何一个的值,它将完全适合您的视图。

类似的东西:

void onLayout(boolean changed, int left, int top, int right, int bottom) {    
if(changed && right > 0) {
     int thisWidth = right - left; 
     // Do your layout things with this size
}
}