/res ディレクトリと /assets ディレクトリの違い 質問する

/res ディレクトリと /assets ディレクトリの違い 質問する

resディレクトリ内のファイルは、アセットがファイル システムのように動作している間はアクセス可能であることは知っR.classていますが、一般的に、どちらを使用するのが最適なのかを知りたいです。res
と asset の実際の違いを知る手助けをしてくれる人はいませんか?

ベストアンサー1

リソースには、異なる言語、OSバージョン、画面の向きなどに応じた代替案を提供するための組み込みサポートがあります。ここアセットでは、そのいずれも利用できません。また、API の多くの部分では、リソース識別子の使用がサポートされています。最後に、リソースの名前は、コンパイル時にチェックされる定数フィールド名に変換されるため、コードとリソース自体の間に不一致が生じる可能性が低くなります。そのいずれも、アセットには当てはまりません。

では、なぜアセットフォルダが必要なのでしょうか。実行時に使用したいアセットを計算したい場合、それは非常に簡単です。リソースの場合、使用される可能性のあるすべてのリソースIDのリストを宣言し、リストのインデックスを計算する必要があります。(これは少し厄介で、開発サイクルでリソースのセットが変更された場合にエラーが発生する可能性があります。)(編集:名前でリソースIDを取得するには、getIdentifierただし、コンパイル時のチェックの利点は失われます。) アセットはフォルダー階層に整理することもできますが、これはリソースではサポートされていません。これはデータを管理する別の方法です。リソースはほとんどの場合に対応しますが、アセットが使用されることもあります。

もう1つの違いは、ライブラリプロジェクトで定義されたリソースは、ライブラリに依存するアプリケーションプロジェクトに自動的にインポートされることです。アセットの場合はそうはなりません。アセットファイルは、アプリケーションプロジェクトのアセットディレクトリに存在する必要があります。[編集: Androidの新しいGradleベースのビルドシステム(Android Studio で使用)、これは当てはまらなくなりました。ライブラリ プロジェクトのアセット ディレクトリは .aar ファイルにパッケージ化されるため、ライブラリ プロジェクトで定義されたアセットはアプリケーション プロジェクトにマージされます (したがって、/assets参照ライブラリ内にある場合は、アプリケーションのディレクトリに存在する必要はありません)。]

編集:カスタムフォントをアプリにパッケージ化したい場合には、さらに別の違いが生じます。API呼び出しTypefaceファイルシステムまたはアプリのディレクトリに保存されているフォントファイルから を作成する。しかし、ディレクトリに保存されているフォントファイルから(またはディレクトリの使用を許可する から)assets/を作成するための API はありません。[注: Android O(現在アルファプレビューで利用可能)では、カスタムフォントをリソースとして含めることができます。説明を参照してください。Typefaceres/InputStreamres/こここの待望の機能は、長い間待たれていたものです。ただし、最小 API レベルが 25 以下の場合は、カスタム フォントをリソースではなくアセットとしてパッケージ化する必要があります。

おすすめ記事