Androidリソース管理フレームワーク(Asset Manager)の概要

4771 ワード

Androidアプリケーションはコードロジックとインタフェースリソースを分離し、Androidアプリケーションリソースはassetsとresの2つに分類されます.
assets
assetsクラスリソースは、エンジニアリングルートディレクトリのassetsサブディレクトリの下に配置され、元のファイルが保存されており、任意の方法で組織することができます.これらのファイルは最終的にapkファイルにそのままパッケージされます.プログラムでこれらのファイルにアクセスする場合は、ファイル名を指定してアクセスする必要があります.たとえば、assetsディレクトリの下にfilenameというファイルがあるとしたら、次のコードを使用してアクセスできます.
AssetManager am= getAssets();  
InputStream is = assset.open("filename");

res
resクラスリソースは、エンジニアリングルートディレクトリのresサブディレクトリの下に配置され、保存されているファイルの多くはコンパイルされ、リソースIDが付与されます.これにより、resクラスのリソースにプログラム内でIDでアクセスできます.resクラスリソースは、用途によって、以下の9つのシードタイプにさらに分けることができます.
  • animator
  • anim
  • color
  • drawable
  • layout
  • menu
  • raw
  • values
  • xml

  • animator
    animatorのようなリソースファイルはres/animatorディレクトリに保存されています.主にプロパティアニメーションを記述するために使用されています.私はプロパティアニメーションのまとめをして、animatorディレクトリの下のファイルがどのように使用されているかを見ることができます.
    anim
    このようなリソースファイルはres/animディレクトリの下に保存されています.主に補間アニメーションを記述するために使用されています.私は補間アニメーションの総括をして、animディレクトリの下のファイルがどのように使用されているか、および補間アニメーションの属性を表示することができます.
    color
    このようなリソースは、res/colorディレクトリにXMLファイル形式で保存され、記述オブジェクトの色状態で選択されます.例えば、1つのオブジェクトが異なる状態で異なる色を表示することを規定することができる.オブジェクトのステータスはpressed、focused、selected、checkable、checked、enabled、windowに分けることができます.focusedなど7種類.
    
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:color="#d8d8d8" android:state_enabled="false" />
        <item android:color="#999999" android:state_pressed="true" />
        <item android:color="#999999" android:state_focused="true" />
        <item android:color="#666666" />
    selector>
    

    drawable
    このようなリソースは、ペイント可能なオブジェクトを記述するために、res/drawableディレクトリの下にXMLまたはBitmapファイルで保存されます.例えば、プログラムインタフェースビューの背景図として、いくつかの画像(.png,.9.png,.jpg,.gif)を配置することができます.このディレクトリに保存されているBitmapファイルは、パッケージ化中に最適化される可能性があります.例えば、256色以上を必要としない真のカラーPNGファイルは、8ビットのパレットのみのPNGパネルに変換される可能性があり、これにより、ピクチャが消費するメモリリソースを低減するために、ピクチャを無損失に圧縮することができる.
    layout
    このようなリソースは、通常、XMLファイルでres/layoutディレクトリに保存され、主にアプリケーションインタフェースのレイアウトを記述するために使用されます.
    menu
    このようなリソースは、アプリケーションメニュー、例えばOptions Menu、Context Menu、SubMenuを記述するために、res/menuディレクトリの下にXMLファイルで保存される.
    raw
    このようなリソースは任意のフォーマットのファイルでres/rawディレクトリに保存され、assetsクラスのリソースと同様にapkファイルにそのままパッケージされていますが、リソースIDが付与され、プログラムでIDでアクセスできます.例えば、res/rawディレクトリの下にfilenameという名前のファイルがある、コンパイル中に付与リソースIDがR.rawであるとする.filenameでは、次のコードを使用してアクセスできます.
    Resources res = getResources();
    InputStream is = res .openRawResource(R.raw.filename);

    values
    このようなリソースは、XMLファイルでres/valuesディレクトリに保存する、配列、色、寸法、文字列、スタイル値などの簡単な値を記述するために使用され、一般的にはarraysという名前で6つの異なる値が保存される.xml、colors.xml、dimens.xml、strings.xmlとstyles.xmlファイルにあります.
    xml
    このようなリソースは、res/xmlディレクトリにXMLファイルで保存され、一般的にアプリケーションの構成情報を記述するために使用されます.
    なお、上記9種類のリソースファイルは、rawタイプのリソースとBitmapファイルのdrawableタイプのリソースのほか、他のリソースファイルはテキスト形式のXMLファイルであり、パッケージ化中にバイナリ形式のXMLファイルにコンパイルされる.これらのバイナリ形式のXMLファイルには、XML要素ラベル、属性名、属性値、およびその他のすべてのテキスト値で使用される文字列を含むファイルで参照される文字列を保存する文字列リソースプールがあります.これにより、テキスト形式のXMLファイルの各文字列が配置される場所は、バイナリ形式のXMLファイルで文字列リソースプールにインデックスされた整数値に置き換えられます.これには2つのメリットがあります.
    A.ファイルの使用量が少ない.たとえば、元のテキスト形式のXMLファイルで4つの場所で同じ文字列が使用されていると仮定すると、最終的にコンパイルされたバイナリ形式のXMLファイルでは、文字列リソースプールには文字列値が1つしかなく、参照された4つの場所では整数値が1つしか使用されません.
    B.解析速度が速い.バイナリ形式のXMLファイルでは、すべてのXML要素ラベルと属性等値が整数で記述されるため、解析中に文字列解析を必要とせず、解析速度を向上させることができる