Latest web development tutorials

안드로이드 리소스 (자원) 관리

뛰어난 안드로이드 응용 프로그램을 작성하는 데 사용되는 여러 가지가 있습니다. 응용 프로그램을 코딩하는 것 외에도, 당신은 당신이 등등 비트 맵, 색상, 레이아웃 정의, 사용자 인터페이스 문자열, 애니메이션과 같은 정적 콘텐츠의 다양한 사용 등 다양한 자원에 초점을 맞출 필요가있다. 이러한 자원은 일반적으로 프로젝트의 입술 / 독립형 서브 디렉토리에 배치됩니다.

튜토리얼의이 섹션에서는 응용 프로그램 리소스를 구성 대체 자원을 지정하고, 응용 프로그램에서에 액세스하는 방법을 배우게됩니다.


일식의 조직 자원

당신은 당신의 프로젝트 입술 / 디렉토리의 특정 하위 디렉토리에 각 자원에 배치해야합니다. 예를 들어, 간단한 파일 레벨 프로젝트이다 :

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

입술 / 디렉토리는 다양한 하위 디렉토리에있는 모든 리소스가 포함되어 있습니다. 여기에 사진 자원이 레이아웃 자원과 문자열 리소스 파일입니다. 다음 표는 프로젝트 입술 / 디렉토리 지원 리소스에 대한 자세한 있습니다.

디렉토리 자원 유형
ANIM / 애니메이션 속성을 정의하는 XML 파일입니다. 그들은 액세스 R.anim의 유형으로, 입술 / ANIM / 폴더에 저장됩니다
색상 / 색상 상태 목록을 정의하는 XML 파일. 그들은 액세스 R.color의 유형으로, 입술 / 색상 / 폴더에 저장됩니다
드로어 블 / 이러한 .PNG, .JPG, .gif 참고, 또는 XML 파일과 이미지 파일은 비트 맵, 국가 목록, 모양, 애니메이션 이미지로 컴파일됩니다. 그들은 액세스 R.drawable의 유형으로, 입술 / 드로어 블 / 폴더에 저장됩니다
레이아웃 / 사용자 UI XML 파일 레이아웃. 그들은 액세스 R.layout의 유형으로, 고해상도 / 레이아웃 / 폴더에 저장됩니다
메뉴 / 이러한 옵션 메뉴, 컨텍스트 메뉴, 하위 메뉴 등 사용자 정의 응용 프로그램 메뉴 XML 파일. 그들은 액세스 R.menu의 유형으로, 입술 / 메뉴 / 폴더에 저장됩니다
원시 / 모든 파일은 원래의 형태로 저장됩니다. 우리는 ()라는 이름의 리소스 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 유형을 통해 값을 치수, styles.xml 대표 스타일 리소스 액세스의 유형 R.style에 의해, strings.xml의 액세스의 R.string 유형을 통해 문자열 리소스를 나타냅니다
XML / Resources.getXML ()를 호출하여 런타임에 임의의 XML 파일을 읽을 수 있습니다. 다양한 구성 파일은 여기 런타임을 저장할 수 있습니다

대체 자원

응용 프로그램은 특정 장치에 대한 다른 구성을 지원하기 위해 자원을 제공 할 필요가있다. 예를 들어, 다른 언어에 대한 대체 문자열 리소스를 제공, 다른 화면 해상도에 대한 자원의 다른 사진을 제공해야합니다. 런타임시, 안드로이드는 현재 장치 구성을 감지하고 응용 프로그램에 대한 적절한 리소스를로드합니다.

다음 단계의 특정 구성에 대한 대체 리소스들의 세트를 식별하는 방법 :

  • 아래에 / 새 디렉토리 입술을 만들기 <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 파일을 통해 중, 정의 된 리소스에 대한 액세스가 필요합니다. 다음 섹션에서는 두 가지 시나리오에 별도로 리소스에 액세스하는 방법에 대해 설명합니다.

자원에 액세스하기위한 코드에

안드로이드 응용 프로그램은 ID 및 모든 입술 / 디렉토리 자원을 포함하는 클래스 R을 생성하기 위해 컴파일됩니다. 당신은 하위 클래스의 자원 이름으로 +, 클래스 R을 사용하거나 직접 리소스에 액세스 할 리소스 ID를 사용할 수 있습니다.

액세스 입술 / 드로어 블 / myimage.png 및 이미지 뷰로 설정, 다음 코드를 사용합니다 :

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

여기에 코드의 첫 번째 줄은 레이아웃 파일에 이미지 뷰의 R.id.myimageview 정의 myimageview를 얻을 수 있습니다. R.drawable.myimage와 두 번째 줄은 하위 디렉토리라고 myimage을에 입술 / 드로어 블의 이미지를 얻을 수 있습니다.

다음과 같이 입술 / 값 / strings.xml의 정의하는 예를 생각해 볼 수 있습니다 :

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

이제, 다음과 같이 텍스트를 설정할 텍스트 뷰 자원 ID의 물체 MSG의 ID를 사용할 수있다 :

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

레이아웃 입술 / 레이아웃 / 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 리소스 파일 입술 / 값 / 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>

당신이 "안녕하세요!"인스턴스를 설명하기 이전 섹션에 돌아 오면 지금, 나는 모든 개념에 대한 이해가이 섹션에서 당신을 확인할 수 있습니다. 따라서, 난 강력 앞의 예를보고 돌아 가야하는 것이 좋습니다, 나는 기본적인 자원 사용의 다른보기를 사용합니다.