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」 (カスタム レンダラー) を参照してください。

下位互換性

高速レンダラーは、次の方法でオーバーライドできます。

  1. を呼び出Forms.Initす前に、次のコード行をクラスに追加して、レガシ レンダラーをMainActivity有効にします。

    Forms.SetFlags("UseLegacyRenderers");
    
  2. レガシ レンダラーを対象とするカスタム レンダラーの使用。 既存のカスタム レンダラーは、レガシ レンダラーで引き続き機能します。

  3. 異なるレンダラーを使用する 、 View.Visualなどの Material別の を指定します。 マテリアル ビジュアルの詳細については、「マテリアル ビジュアル」を参照してくださいXamarin.Forms