Xamarin.Forms 高速レンダラー
従来、Android の元のコントロール レンダラーのほとんどは、次の 2 つのビューで構成されています。
- や
TextView
などのButton
ネイティブ コントロール。 - レイアウト作業、ジェスチャ処理、およびその他のタスクの一部を処理するコンテナー
ViewGroup
。
ただし、この方法では、論理コントロールごとに 2 つのビューが作成されるため、より複雑なビジュアル ツリーになり、より多くのメモリが必要になり、画面上でレンダリングする処理が増えるという点でパフォーマンスに影響します。
高速レンダラーにより、コントロールのインフレとレンダリングのコストが Xamarin.Forms 1 つのビューに削減されます。 したがって、2 つのビューを作成してビュー ツリーに追加する代わりに、1 つだけが作成されます。 これにより、作成するオブジェクトが少なくなり、ビュー ツリーの複雑さが少なくなり、メモリ使用量が少なくなります (ガベージ コレクションの一時停止も少なくなります)。
高速レンダラーは、Android で次のコントロールで Xamarin.Forms 使用できます。
機能的には、これらの高速レンダラーは従来のレンダラーと変われません。 Xamarin.Forms 4.0 以降では、対象FormsAppCompatActivity
となるすべてのアプリケーションで既定でこれらの高速レンダラーが使用されます。 や CollectionView
を含むすべてのImageButton
新しいコントロールのレンダラーでは、高速レンダラーアプローチが使用されます。
高速レンダラーを使用する場合のパフォーマンスの向上は、レイアウトの複雑さに応じて、アプリケーションごとに異なります。 たとえば、x2 のパフォーマンスの向上は、データの数千行を含むをスクロール ListView
するときに可能です。各行のセルは、高速レンダラーを使用するコントロールで構成されており、目に見えてスムーズにスクロールできます。
注意
カスタム レンダラーは、従来のレンダラーで使用されるのと同じ方法を使用して、高速レンダラー用に作成できます。 詳細については、「Custom Renderers」 (カスタム レンダラー) を参照してください。
下位互換性
高速レンダラーは、次の方法でオーバーライドできます。
を呼び出
Forms.Init
す前に、次のコード行をクラスに追加して、レガシ レンダラーをMainActivity
有効にします。Forms.SetFlags("UseLegacyRenderers");
レガシ レンダラーを対象とするカスタム レンダラーの使用。 既存のカスタム レンダラーは、レガシ レンダラーで引き続き機能します。
異なるレンダラーを使用する 、
View.Visual
などのMaterial
別の を指定します。 マテリアル ビジュアルの詳細については、「マテリアル ビジュアル」を参照してくださいXamarin.Forms。