2013年4月15日月曜日

Androidアフ゜リにおけるassetsフォルダとres/rawの使い分け

アプリで画像やXMLを利用するには res/drawable や res/value res/xml に配置してリソースIDを使用するよう決められているがそれ以外のファイルはassetsフォルダとres/raw どちらに配置するか迷った。
が、規約があった。

要はこういうこと

【assetsフォルダ】
・アプリから保存可能!!
・ディレクトリ構造可能(フォルダ作成可能)
・リソースIDが振られないので引数に使用するAPIには使用できない
・URLを引数とするAPIに「file:///android_asset/」として使える

【res/rawフォルダ】
・アプリからの保存不可
・ディレクトリ構造不可
・res/raw-en res/raw-hdpiのように解像度・言語別に端末自動判別してくれる機能が使える
・リソースIDがコンパイル時に振られるので引数に使うAPIに使用できる。
 ※特に音楽やビデオファイルの場合はAPIがリソースIDを求められることが多いし、公式でここ指定されている
・URLとしては取れないので引数をURLとするには一旦assetやテ゛ータフォルタ゛に保存する必要がある  ←俺追加
↑ごめんちゃい。ContentProviderでできました。

ちなみにアプリ固有なバイナリファイルを読み込む場合はここに「you might consider saving some resources in the assets/ directory (instead of res/raw/). 」
※俺訳:リソース(リソースID関連のソース・動作メモリ)を節約できるのでres/rawよりassetsを検討しる

とあったのでメテ゛ィアファイルやXMLのような特定のファイル形式でなく、解像度・言語別判別を使わないのならばassetsフォルダのほうがいいみたい


【おまけ】
フォントファイル(ttf)をアプリから使用する時のようにリソースIDが全く使えず、AssetManagerを優先するAPI
もあるので注意

0 件のコメント:

コメントを投稿