Latest web development tutorials

Androidのリソース(資源)の管理

優れたAndroidアプリを構築するために使用される多くのものがあります。 アプリケーションをコーディングすることに加えて、あなたがそのようなように、ビットマップ、色、レイアウト定義、ユーザーインターフェイスの文字列、アニメーション、などの静的コンテンツの多様性を、使用などのさまざまなリソース、に焦点を当てる必要があります。 これらのリソースは、一般的に、プロジェクトの解像度/スタンドアロンサブディレクトリに配置されています。

チュートリアルのこのセクションでは、アプリケーションのリソースを整理する代替リソースを指定し、アプリケーションでそれらにアクセスする方法を学習します。


日食で組織のリソース

あなたは、プロジェクトのres /ディレクトリの特定のサブディレクトリの下に各リソースに配置する必要があります。 例えば、これは単純なファイルレベルのプロジェクトです。

MyProject/
    src/  
        MyActivity.java  
    res/
        drawable/  
            icon.png  
        layout/  
            activity_main.xml
            info.xml
        values/  
            strings.xml 

解像度/ディレクトリには、様々なサブディレクトリ内のすべてのリソースが含まれています。 ここで、画像リソース、2レイアウトのリソースと文字列リソースファイルです。 次の表は、プロジェクトのres /ディレクトリのサポートリソースで詳細を提供します。

ディレクトリ リソースタイプ
アニム/ アニメーションプロパティを定義するXMLファイル。 これらは、アクセスR.animの種類によって、RES /アニメーション/フォルダに保存されています
カラー/ カラー状態リストを定義するXMLファイル。 これらは、アクセスR.colorの種類によって、解像度/色/フォルダに保存されています
描画可能/ このような.PNG、.JPG、.GIF、またはXMLファイルなどの画像ファイルは、ビットマップ、状態リスト、図形、アニメーション画像としてコンパイルされます。 これらは、アクセスR.drawableの種類によって、RES /描画可能/フォルダに保存されています
レイアウト/ カスタムUI XMLファイルのレイアウト。 これらは、アクセスR.layoutの種類によって、解像度/レイアウト/フォルダに保存されています
メニュー/ このようなオプション]メニュー、コンテキストメニュー、サブメニューなどのカスタムアプリケーションメニューXMLファイル、。 これらは、アクセスR.menuの種類によって、RES /メニュー/フォルダに保存されています
生/ すべてのファイルは元の形式で保存されます。 我々は、()という名前のリソースIDをR.raw.filenameするResource.openRawResourceを呼び出すことにより、生のファイルを開く必要があります
値/ XMLファイルは(など文字列、整数、色、など)単純な値が含まれています。 ここでは、フォルダの命名規則の下でいくつかのリソースがあります。 アクセスのR.array・タイプで、リソースの配列の代わりにarrays.xml; integers.xmlはR.integerクラスを介してアクセスされるリソースの整数を表し、bools.xml資源ブール値の代わり、R.boolによるアクセスの種類、colors.xml資源色の代わりに、 R.colorクラスを介してアクセス; dimens.xmlの代表は、アクセスのR.dimen・タイプで、値を寸法;のstrings.xmlは文字列リソースを表し、アクセスのR.stringタイプを介して、のstyles.xml代表のスタイルリソース、アクセスR.styleの種類によって
XML / Resources.getXML()を呼び出すことによって、実行時に任意のXMLファイルを読み込みます。 各種設定ファイルは、ここでランタイムを保存することができます

代替リソース

あなたのアプリケーションは、特定のデバイスのための代替構成をサポートするためのリソースを提供する必要があります。 たとえば、異なる言語のための代替文字列リソースを提供し、異なる画面解像度のための資源の代替画像を提供する必要があります。 実行時に、Androidは現在のデバイス設定を検出し、アプリケーションのための適切なリソースをロードします。

の手順に従って、特定の構成のための代替リソースのセットを特定するには:

  • ダウンへ/新しいディレクトリの解像度を作成<RESOURCE_NAME> _ <config_qualifier>と命名されています。 ここでは、このようなレイアウトや画像などの表に記載されたすべてのリソースを、resources_name。 修飾子は、パーソナライズされた構成を使用するためにどのようなリソースを決定します。 あなたは、リソースの修飾子の異なるタイプの完全なリストについては、公式ドキュメントを参照してくださいすることができます。
  • このディレクトリに応じて、代替資源を節約します。 これらのリソースファイルは、デフォルトのリソース・ファイル名は、以下の例では、しかし、これらの文書は、置換の内容を決定する一貫性であることを示す必要があります。 たとえば、次のように画像のファイルが同じ名前を付けますが、画像の解像度の画面解像度が高くなりますが。

ここで画面と高解像度画像置換のデフォルト画像を指定する例です。

MyProject/
   src/
    main/
    java/
       MyActivity.java  
       res/
          drawable/  
            icon.png
            background.png
        drawable-hdpi/  
            icon.png
            background.png  
        layout/  
            activity_main.xml
            info.xml
        values/  
            strings.xml

ここではデフォルトのレイアウト言語と代替レイアウトアラビア語を指定するには、別の例です。

MyProject/
   src/
    main/
    java/
       MyActivity.java  
      res/
         drawable/  
            icon.png
            background.png
        drawable-hdpi/  
            icon.png
            background.png  
        layout/  
            activity_main.xml
            info.xml
        layout-ar/
            main.xml
        values/  
            strings.xml

リソースへのアクセス

アプリケーション開発では、我々は、コードを介して、またはXMLファイルのいずれかを介して、定義されたリソースにアクセスする必要があります。 次のセクションでは、2つのシナリオで別々にこれらのリソースにアクセスする方法について説明します。

リソースにアクセスするためのコードで

Androidアプリケーションは、IDおよびすべてのres /ディレクトリのリソースが含まれているクラスRを生成するようにコンパイルされたとき。 あなたは、サブクラスのリソース名によってクラスR、+を使用するか、直接リソースにアクセスするためにリソースIDを使用することができます。

アクセスのres /ドロウアブル/ myimage.png、およびImageViewのにそれを設定するには、次のコードを使用します。

ImageView imageView = (ImageView) findViewById(R.id.myimageview);
imageView.setImageResource(R.drawable.myimage);

ここでのコードの最初の行は、レイアウトファイルにImageViewののR.id.myimageview定義さmyimageviewを取得します。 MYIMAGEと呼ばれるサブディレクトリ内のres /ドロウアブルに画像を取得するR.drawable.myimageとのセカンドライン。

次のように解像度/値/のstrings.xmlが定義されている例を考えてみましょう:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string  name="hello">Hello, World!</string>
</resources>

今、あなたは次のように、テキストを設定するのTextViewのリソースIDのオブジェクトMSGのIDを使用することができます。

TextView msgTextView = (TextView) findViewById(R.id.msg);
msgTextView.setText(R.string.hello);

レイアウトのres /レイアウト/ activity_main.xmlの次の定義を考えてみましょう

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="fill_parent" 
   android:layout_height="fill_parent" 
   android:orientation="vertical" >

   <TextView android:id="@+id/text"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Hello, I am a TextView" />

   <Button android:id="@+id/button"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Hello, I am a Button" />

</LinearLayout>

次のようにアプリケーション・コードは、アクティビティのレイアウト、のonCreate()メソッドをロードします。

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <color name="opaque_red">#f00</color>
   <string name="hello">Hello!</string>
</resources>

XMLでのアクセス

カラーリソースと文字列リソースが含まれている次のXMLリソースファイルのres /値/のstrings.xmlを、考えてみましょう -

<?xml version="1.0" encoding="utf-8"?>
<EditText xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:textColor="@color/opaque_red"
    android:text="@string/hello" />

さて、あなたは、テキストの色とテキストの内容を設定するには、次のレイアウトファイルでこれらのリソースを使用することができます。

<code>&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;EditText xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:textColor="@color/opaque_red"
    android:text="@string/hello" /&gt;
</code>

あなたは "Hello Worldの!」インスタンスを説明するために、前のセクションに戻る場合は今、私はすべての概念のより良い理解を持っているこのセクションであなたを確認することができます。 したがって、私は強く、前の例を見て戻ってすることをお勧めします、と私は、基本的なリソース使用状況の異なるビューを使用します。