2016-04-08 6 views
1

私はViewクラスのonDraw(Canvas canvas)メソッドの中で非常に多くの処理を行うAndroidアプリケーションを作成しています。 アプリケーションはポートレートモードを強制的に実行しますAndroidのキャンバスの幅と高さのボラティリティ

私の質問は、キャンバスの高さと幅がペイントメソッドへの呼び出しの間に変更されないと仮定することはどれほど安全ですか?私が尋ねる理由は、これらの値を使って、onDrawメソッドで使用するかなりのオブジェクトを作成するということです。高さと幅が変更されないと仮定すると、onDrawメソッドが最初に呼び出されたときに作成される30程度のオブジェクトをキャッシュすることができます。

私はかなりのSwingプログラミングを行っていますが、これは間違いなくあなたがSwingでやっていないことですが、誰かの電話の高さと幅が変わることはないようです。

これは正しい仮定ですか?私はそれを試して、それは完全に動作しますが、私は感謝していない落ち穴があるかもしれないことを心配しています。

ありがとうございました!

答えて

1

すべてはあなたのViewに起こりうることによって異なります。基本的には、layoutと、Viewで行う予定のものに依存します。

だから、あなたのcanvasのサイズは、あなたのViewのサイズが変更されないことを確かめることができる限り、変わらないと思うかもしれません。 Viewに何も強制的にサイズを変更できない場合は、canvas'のサイズは変わりません。

この問題を克服するための最も簡単な方法は、あなたのViewonSizeChanged方法(またはonLayoutまで)に(とにかくonDrawメソッドの内部で座るべき​​ではありません)すべてのオブジェクトの割り当てを移動することです。この方法で、View'sのサイズが変更されるたびに、オブジェクトを再初期化または修正して、drawingプロセスで正しく動作させることができます。

+0

'onSizeChanged'メソッドは間違いなく最も安全な方法です - ありがとう! – StuPointerException

関連する問題