2016-12-27 6 views
1

android.graphics.Paintメモリ重いオブジェクトはありますか?キャンバスに描画する必要があるクラスにペイントオブジェクトの参照を渡し、それらのクラスで色、スタイルなどのペイントプロパティを設定するか、必要に応じて新しいPaintオブジェクトを作成する方が効率的ですか?Androidペイントオブジェクトのメモリ効率

+0

なぜダウンリストに投票したのか説明してください。私はLibGDXで描画やアニメーション化(基本的にはゲーム開発)をしていたので、この質問をしました。 LibGDXは非常にメモリ重視のオブジェクトであるSpriteBatchオブジェクトを使用します。私はPaintオブジェクトと同じではないのだろうか? – Thracian

答えて

1

はい、Paintは、特に作成と初期化が重いです。つまり、同じPaintオブジェクトをすべて再利用する必要がありますか?まあ、それは依存します。

drawText()を複数回実行する場合、異なる色で同じペイントを使用できますが、異なる色(setColor()を使用)で再利用できます。しかし、2つの異なるクラスで無関係な2つの操作(描画)を実行し、カラー、フォントサイズ、スタイル、PathEffectなどのペイント設定に大きな違いがある場合は、それらのペイントオブジェクトを別々にすることをお勧めします。

簡潔に言えば、類似した描画をより少ない差異で実行するために、同じペイントを使用してください。そして、無関係な描画を行うためには、大きな違いを持っ​​て異なるペイントオブジェクトを使用します。お役に立てれば。

+0

それは私が探していたものです。ありがとう、それは私に大きな利益をもたらすでしょう。それがなぜ重いのか説明してもらえますか? I – Thracian

+0

'Paint.java'を見てください。それは 'ネイティブ'ペイントによってバックアップされます。したがって、新しいPaintオブジェクトを作成すると、ネイティブオブジェクトも作成されます。 – Henry

-1

私にとって最良の方法は: スタイルや幅や色が異なるオブジェクトごとに新しいペイントを作成します。 そして、描画テキストのために、他のペイントを作成します。 (異なる色やテキストサイズのテキストに描画したい場合は、新しいペイントを作成してください)

この方法は、1つのペイントが1つのオブジェクトを描画するので、他の開発者にとってコードをより怠惰にします。

関連する問題