Log.d()コールを拡張ビューのonDraw()に入れて、どのくらいの頻度でコールされているかを確認できます。それはビューのインスタンス化時に呼び出されますが、これは驚くべきことではありません。しかし、私が気づいたのは、onTouchEvent()によって処理されるすべてのタップで呼び出されます。私のコードでは、グラフィックスに関連するものは何も遠隔操作していません。しかし、documentationのビューでは、onDraw()が実際に呼び出されたときには何も見つかりませんでした。私は実際に私の特定のプロジェクトについては心配していません(これは私のために問題を引き起こしません)、私はちょうどどこか、またはビューの操作の順序を示す何かのリストがあるかどうかを知りたいと思います。 onDraw()は呼び出されます。ときView.onDraw()---呼び出されるのはいつですか?
答えて
私の知る限り、ビューのonDraw()が呼び出されます。
- ビューが最初に描かれているinvalidate()がビューで呼び出されるたび
必要に応じていつでも使用できます。たとえば、多くのビューでは、アウトラインとカーソルを取得するEditText、または押された状態にあるボタンのように、オンにする方法を変更します。これにより、ビューは再描画されます。
私は、ビューの動作を詳細に記述したドキュメントを用意しておき、それが存在し、誰かがどこにそれを見つけるかを知っていることがうれしいことに同意します。
あなたはビューの背景描画可能に設定した場合は、[表示はバックそのonDraw()メソッドを呼び出す前に、あなたのために にそれを描画します。
ビューがウィンドウにアタッチされると、onAttachedToWindow()が呼び出されます。 これはサーフェスを持ち、描画を開始します。この 関数は、 onDraw(android.graphics.Canvas)より前に呼び出されることが保証されていますが、最初のonDrawの前にいつでも という名前で呼び出すことができます(onMeasure(int、 int)前後)。
invalidate()は、ダーティーで定義された領域を描画する必要があるとマークします。 ビューが表示されている場合、onDraw(android.graphics.Canvas)は で呼び出されます。心に留めておくべき
onDraw()を呼び出す前に傍受する方法ですが、私の質問を確認したいですか?http://stackoverflow.com/questions/19052952/bitmap-change-will -make-view-auto-refresh-before-ondraw-and-regardless-invalid – VinceStyling
一つ重要なことは、それが引数なしで無効()関数の呼び出しを最小化しようとしています。 代わりに4つの引数を指定してinvalidate()関数を最大化しようとします。描画全体が非常に高価です。第2の変形では、ビューの一部のみが更新されます。
onDraw()
は、invalidate()
が呼び出されたときに呼び出されます。
しかし、あなたはViewGroupsについて知っておくべきです:onDraw()
は、期待通りにと呼ばれることはありません。むしろ、onDispatchDraw()
。
ただし、ViewGroupではsetWillNotDraw(false)
をコンストラクタに呼び出してonDraw()
をinvalidate()
に呼び出すことができます。
上記に追加this answer
を見てみましょう:ソフトキーボードがView.invalidateを(原因) - > View.onDraw()ウィンドウをリサイズ後のシーケンスが賢明「キーボード」を対応するために、 。カスタムView.onDraw()は、この可能性を予期する状態にしておく必要があります。
このような現象は、ブルートゥースキーボードを搭載したタブレットで開発してテストしたアプリが実際に犬に届いた理由を説明しています( - :
- 1. PyEval_InitThreadsはいつ呼び出されるのですか?
- 2. View.invalidate()はView.onDraw()を呼び出すようではありません
- 3. JSF 2.0:encodeAllはいつ呼び出され、encodeBeginはいつ呼び出されますか?
- 4. onSaveInstanceState()メソッドが呼び出されたのはいつですか?
- 5. @PredestroyはプロトタイプスコープのBeanでいつ呼び出されますか?
- 6. TCL/C - setFromAnyProc()がいつ呼び出されるのですか
- 7. QGLWidgetのpaintGLはいつ呼び出されますか?
- 8. FragmentPagerAdapterのgetItemはいつ呼び出されますか?
- 9. アプリケーションのonCreate()メソッドはいつ呼び出されますか?
- 10. ListViewのgetView()メソッドはいつ呼び出されますか?
- 11. LinqでOnValidateが呼び出されるのはいつですか?
- 12. asp.net WebServiceでApplication_Endが呼び出されるのはいつですか?
- 13. アプリケーションでOnResultが呼び出されるのはいつですか? (ResultCallback)
- 14. Railsで検証メソッドが呼び出されるのはいつですか?
- 15. IResourceOwnerPasswordValidatorはいつ呼び出されますか?
- 16. getPlaceholderTemplateForComplication()メソッドはいつ呼び出されますか?
- 17. Control.DestroyHandleはいつ呼び出されますか?
- 18. didRegisterForRemoteNotificationsWithDeviceTokenはいつ呼び出されますか?
- 19. ServiceConnection.onServiceDisconnected()はいつ呼び出されますか?
- 20. コンストラクタはいつ呼び出されますか?
- 21. exit_mmapはいつ呼び出されますか?
- 22. ngOnInitメソッドはいつ呼び出されますか?
- 23. rowupdate、rowupdating、rowdeleted、rowdeleting eventsはいつ呼び出されますか
- 24. document.ready()はいつ呼び出されますか?
- 25. Angular2 ngAfterViewInitはいつ呼び出されますか?
- 26. マネージドBeanコンストラクタはいつ呼び出されますか?
- 27. layoutSubviewsメソッドはいつ呼び出されますか?
- 28. body onLoadはいつ呼び出されますか?
- 29. cellForRowAtIndexPathはいつ呼び出されますか?
- 30. プレーヤー(_:wantsToQuitMatch :)はいつ呼び出されますか?
これは 'ViewGroup'sには当てはまりません。 ://stackoverflow.com/a/34367199/1642079 –