2017-08-03 9 views
0

簡単な例のために、アプリアセットとして使用される画像の数があります。Xamarin.Forms画像キャッシングクロスプラットフォームソリューション

私が理解する限り、Xamarin.Formsはこれらのイメージをキャッシュしません。したがって、これらの10個のイメージをツールバーに表示すると(問題を説明するだけです)、小さなツールバーに10個のイメージを置くことはありません) 5つのページに同じツールバーが表示されています。つまり、10枚の画像が5回ずつ読み込まれ、合計50枚の画像が読み込まれます。 5ページx 10画像= 50画像を読み込むのではなく、10画像しか読み込みません。

さらに、私たちのリポジトリに10枚の画像を追加する必要がある場合は、私たちのリポジトリ(Android用1枚、IOS用1枚、UWP用1枚)に少なくとも3枚の同じ画像を追加する必要があります。この結果、リポジトリには30個の画像が表示されますが、実際には10個しか必要ありませんでした。

これらの2つの問題は、3つのプラットフォームすべてで同じ画像を共有できるため、 3つのプラットフォーム(Android、IOS、UWP)で使用されているイメージで、UIに何回表示するかに関係なく、メモリに1回だけイメージを読み込みます。

答えて

2

キャッシングをサポートするFFImageLoadingを調べることができます。

埋め込み画像は、ローカル画像のようなアプリケーションとともに出荷されますが、画像のコピーを持つ代わりに、プラットフォーム固有のコードではなく共有されたコードで画像を表示することができます。各アプリケーションのファイル構造は、イメージファイルがアセンブリとしてリソースとして埋め込まれています。このイメージの配布方法は、イメージがコードにバンドルされているため、コンポーネントの作成に特に適しています。

https://developer.xamarin.com/guides/xamarin-forms/user-interface/images/#Embedded_Images

プラットフォームごとに画像を追加することは悪いことではないことけれども覚えておいてください。各プラットフォームにはピクセル密度などが異なるため、独自のイメージバージョンが用意されているため、プラットフォーム固有のルートを検討したい場合は、各プラットフォームで見栄えがよくなります。

別の方法として、画像をファイルにリンクされた画像として各プラットフォーム固有のファイルに追加する方法があります。イメージファイル自体は、単一の場所に保存して、プラットフォームごとに正しいディレクトリにファイルリンクすることができます。

+0

大変感謝しているSteven – pixel

関連する問題