2017-08-28 9 views
0

おはよう、CanvasViewの縮尺係数を計算する

最初に私の悪い英語を申し訳なく思っています。できるだけ自分の問題を説明できるようにします。だから私は私の小さなドローイングゲームで再び始まります。私がそれを終えた理由は、私がこの問題に対処できなかったためであり、私はすべての質問でここに人々を悩ませたくありません。

私が言ったように、私はちょっとした "推測"ゲームを作っています。私はすでにFirebase上のCanvasの同期を解決しました。私が望んでいたのではなく、私はそれを解決しました。キャンバスがすべての画面に適合しないという問題がありました。マッチングファクタを計算する方法がわかりませんでした。

キャンバスのある部屋が作成されるたびに、作成デバイスの画面解像度がFirebaseに入力されました。 他の画面解像度で別のデバイスを使用して部屋に参加すると、キャンバスのサイズが大きくなったり小さくなったりします。

スケールファクタを計算するために、すでにさまざまなことを試しました。

まず、作成サイズと実際の画面解像度を分けると思っていました。

2回目の試みは逆の方法でした。

私のアプリケーションにはアクションバーと小さな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を返す最初のドローでそれを計算し、それらのいずれかの値を取得し、それはあなたのビューのために正確になりますことができます。

のような何か:私はonLayoutでそれを計算することができますどのように

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

:?/ –

+0

チェック更新の回答 –

関連する問題