私はSurfaceView
を読んでおり、その使い方は、SurfaceView
にはデフォルトでView#willNotDraw()
がfalseに設定されており、SurfaceView#onDraw()
に電話するのはあなた次第ですという情報があります。私はRomainGuyがこれがより効率的であるため、これがデフォルトで行われているとも言いました。今私の質問は、別のスレッドでSurfaceView#onDraw()
を呼び出す処理を行うべきときで、View#willNotDraw()
をtrue
に設定し、ちょうどSurfaceView#invalidate()
と呼ぶべきです。両者の違いはありますか?また、パフォーマンスが他のものよりも向上していますか?いつSurfaceViewをUIスレッドで描画させるべきですか?
答えて
参照:
http://developer.android.com/reference/android/view/View.html#setWillNotDraw(boolean)
、あなたの情報を得たところ、私はわからないんだけど、少なくとも、javadocツールは、ほとんどのユーザーは、AndroidはそれをonDraw
イベント自体を送信するために取得するためにfalse
にこれを設定することを言います。いつあなたがこれを行うべきかについてあなたの質問については、私はそれがSurfaceView
を使用している理由になると言います。
あなたのビューが動的なもの(例えば、ゲームやタイトなイベントループを持つものなど)を表示している場合は、更新がいつ発生するかを正確に制御したいと思うでしょう。特に、 invalidate
のより詳細な形式は、View
全体の再描画を節約します。あなたはAndroidがinvalidate
に電話するのを望んでおらず、その理由がそこにあります。
一方、単純に静的なものを描画している場合は、AndroidのUIスタックに無効化を制御させることが理にかなっています。ところで
、invalidate
だけあなたは(onDraw
は、あなたがそれを呼び出すいつか後に呼び出されます)イベントループのスタイルを使用する場合ので、これを認識して、再描画View
に要求をポストします。
編集:いくつかの説明。
SurfaceView.onDraw()とSurfaceView.invalidate()を使用すると、SurfaceViewが通常のViewのように動作し、SurfaceViewに関連する余分なオーバーヘッドが発生します。 UIスレッドから描画する場合は、代わりに通常のビューを使用します。それはより簡単で安価です。
- 1. UIスレッドでCALayer.contentsが描画されていますか?
- 2. SurfaceViewに描画するときのアプリケーションエラー
- 3. 描画するSurfaceviewスレッドエラーNULLPointerException
- 4. アンドロイド:ZOrderMediaOverlayでSurfaceViewのqmlを描画
- 5. スレッドを使用したAndroid SurfaceViewキャンバス描画
- 6. 描画速度を向上させるSurfaceView Android
- 7. SurfaceViewキャンバス透明度付き描画パス
- 8. SurfaceView描画の失敗
- 9. AndroidのSurfaceViewに描画する
- 10. 1つのスレッドで2つのSurfaceViewを制御できますか?
- 11. キャンバスは描かれるべきアルファを持つ色を描画しません
- 12. グラフィックスコンテキストは1つのスレッドでのみ描画されます
- 13. SurfaceViewを使用して1つの複合画像を描画する方法
- 14. SurfaceView onDraw、描画する前に時々リフレッシュしない...なぜですか?
- 15. SurfaceViewからCanvasに描画する方法は?
- 16. OnDraw()が呼び出されず、surfaceViewに何も描画されません - Android
- 17. OpenGL ES 2対キャンバス(SurfaceView)の描画 - これは良いですか?
- 18. Perl Curses :: UIウインドウがすべてのウィジェットを描画しない
- 19. レイアウトのサブメンバであるSurfaceViewに2D primtivesを描画するにはどうすればよいですか?
- 20. SurfaceViewにSoftKeyboardキーコードを描画するには?
- 21. SurfaceViewの背景としてビットマップを描画する
- 22. 画像を描画するか読み込むべきですか?
- 23. Android - SurfaceViewでグラフィックスを描く方法
- 24. UIスレッドは1つしかないので、すべてのイベントリスナーが手続きですか?
- 25. Android Surfaceviewスレッドとメモリリーク
- 26. クラス内からラインを描画できない - なぜ描画されませんか?
- 27. Chart.jsでメソッドを描画できません。v2が見つかりません。
- 28. 2つのポリゴンを1つの三角形のファンで描画できるかどうかを調べる
- 29. SurfaceviewとUIスレッドのやりとりとロックのゲーム変数
- 30. Androidで別の画像を浮かべて描画する