2017-08-28 124 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

檢查更新答案 –