2017-08-28 102 views
0

晚上好,计算Canvas比例因子

首先,我需要对我的坏英语说抱歉,我试着尽我所能描述我的问题。所以,我又开始了我的小绘画游戏。我完成它的原因是因为我无法处理这个问题,我不想在这里用我所有的问题来惹恼别人。

所以正如我所说我做了一个“绘制n'猜”游戏。我已经解决了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.

回答

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 
} 
} 
+0

对不起,这个问题,但我怎么能计算出它在onLayout:?/ –

+0

检查更新答案 –