Android 리소스 기본 사항Android Resource Basics

거의 모든 Android 응용 프로그램에 이러한 일부 종류의 리소스를 갖습니다. 최소한 있는 경우가 많습니다 XML 파일 형태로 사용자 인터페이스 레이아웃 합니다.Almost all Android applications will have some sort of resources in them; at a minimum they often have the user interface layouts in the form of XML files. Xamarin.Android 응용 프로그램을 처음 만들어질 때 기본 리소스는 Xamarin.Android 프로젝트 템플릿에서 설치:When a Xamarin.Android application is first created, default resources are setup by the Xamarin.Android project template:

기본 리소스를 구성 하는 5 개의 파일이 리소스 폴더에 생성 되었습니다.The five files that make up the default resources were created in the Resources folder:

  • Icon.png – 응용 프로그램에 대 한 기본 아이콘Icon.png – The default icon for the application

  • Main.axml – 응용 프로그램에 대 한 기본 사용자 인터페이스 레이아웃 파일입니다.Main.axml – The default user interface layout file for an application. Android 하는 동안 사용 하는 참고 합니다 .xml 파일 확장명을 Xamarin.Android를 사용 합니다 .axml 파일 확장명.Note that while Android uses the .xml file extension, Xamarin.Android uses the .axml file extension.

  • Strings.xml – 응용 프로그램의 지역화에 도움이 되는 문자열 테이블Strings.xml – A string table to help with localization of the application

  • AboutResources.txt – 이 필요 하지 않으며 안전 하 게 삭제 될 수 있습니다.AboutResources.txt – This is not necessary and may safely be deleted. 리소스 폴더에 있는 파일을 상위 수준 개요를 제공 합니다.It just provides a high level overview of the Resources folder and the files in it.

  • Resource.designer.cs – 이 파일이 자동으로 생성 되 고 Xamarin.Android 및 고유한 포함 하 여 유지 관리 ID의 각 리소스에 할당 합니다.Resource.designer.cs – This file is automatically generated and maintained by Xamarin.Android and holds the unique ID's assigned to each resource. 이것이 매우 유사 하 고 Java로 작성 된 Android 응용 프로그램을 포함 하는 R.java 파일로 목적에서 동일 합니다.This is very similar and identical in purpose to the R.java file that an Android application written in Java would have. Xamarin.Android 도구에 의해 자동으로 생성 됩니다 하 고 때때로 다시 생성 됩니다.It is automatically created by the Xamarin.Android tools and will be regenerated from time to time.

리소스 만들기 및 액세스Creating and Accessing Resources

리소스를 만드는 간단 하 게 해당 리소스 형식에 대 한 디렉터리에 파일을 추가 합니다.Creating resources is as simple as adding files to the directory for the resource type in question. 아래 스크린샷 참조를 프로젝트에 추가 된 독일어 로캘의 문자열 리소스를 보여 줍니다.The screen shot below shows string resources for German locales were added to a project. Strings.xml 파일에 추가한 합니다 빌드 작업 로 자동으로 설정 되었습니다 AndroidResource Xamarin.Android 도구에 의해:When Strings.xml was added to the file, the Build Action was automatically set to AndroidResource by the Xamarin.Android tools:

따라서 Xamarin.Android 도구를 올바르게 컴파일 및 APK 파일에 리소스를 포함 합니다.This allows the Xamarin.Android tools to properly compile and embed the resources in to the APK file. 어떤 이유로 경우 합니다 빌드 작업 로 설정 되어 있지 Android 리소스, 파일, APK에서 제외 됩니다. 그런 다음 및 런타임 오류를 로드 하거나 리소스에 액세스 하려고 하면 및 응용 프로그램 작동이 중단 됩니다.If for some reason the Build Action is not set to Android Resource, then the files will be excluded from the APK, and any attempt to load or access the resources will result in a run-time error and the application will crash.

또한 반드시 Android만 지원 하지만 소문자 파일 이름을 리소스 항목에 대 한, Xamarin.Android는 조금 더 관대; 대문자 및 소문자 모두 파일을 지원 합니다.Also, it's important to note that while Android only supports lowercase filenames for resource items, Xamarin.Android is a bit more forgiving; it will support both uppercase and lowercase filenames. 소문자를 구분 기호로 밑줄을 사용 하 여 사용 하는 이미지 이름에 대 한 규칙 (예를 들어 내_이미지_name.png).The convention for image names is to use lowercase with underscores as separators (for example, my_image_name.png). Note 대시나 공백 구분 기호로 사용 되는 경우 리소스 이름을 처리할 수 없습니다.Note that resource names cannot be processed if dashes or spaces are used as separators.

프로젝트에 리소스를 추가한 후 두 가지 응용 프로그램에서 사용할 – 프로그래밍 방식으로 (내부 코드) 또는 XML 파일입니다.Once resources have been added to a project, there are two ways to use them in an application – programmatically (inside code) or from XML files.

리소스를 프로그래밍 방식으로 참조Referencing Resources Programmatically

이러한 파일에 프로그래밍 방식으로 액세스 하려면 고유한 리소스 ID가 할당 됩니다.To access these files programmatically, they are assigned a unique resource ID. 이 리소스 ID는 라는 특수 한 클래스에 정의 된 정수 Resource, 파일에서 찾을 수 있는 Resource.designer.cs와 같습니다.This resource ID is an integer defined in a special class called Resource, which is found in the file Resource.designer.cs, and looks something like this:

public partial class Resource
{
    public partial class Attribute
    {
    }
    public partial class Drawable {
        public const int Icon=0x7f020000;
    }
    public partial class Id
    {
        public const int Textview=0x7f050000;
    }
    public partial class Layout
    {
        public const int Main=0x7f030000;
    }
    public partial class String
    {
        public const int App_Name=0x7f040001;
        public const int Hello=0x7f040000;
    }
}

각 리소스 ID는 리소스 종류에 해당 하는 중첩된 된 클래스 내부에 포함 되어 있습니다.Each resource ID is contained inside a nested class that corresponds to the resource type. 예를 들어, 파일 Icon.png Xamarin.Android 업데이트를 프로젝트에 추가 된를 Resource 클래스 라는 중첩된 클래스를 만들면 Drawable 라는 상수 내부를 사용 하 여 Icon입니다.For example, when the file Icon.png was added to the project, Xamarin.Android updated the Resource class, creating a nested class called Drawable with a constant inside named Icon. 이렇게 하면 파일이 Icon.png 코드에서 참조 Resource.Drawable.Icon합니다.This allows the file Icon.png to be referred to in code as Resource.Drawable.Icon. Resource 클래스 됩니다 하지 수 수동으로 편집할 Xamarin.Android에서 발생 하는 모든 변경 사항을 덮어쓰게 됩니다.The Resource class should not be manually edited, as any changes that are made to it will be overwritten by Xamarin.Android.

프로그래밍 방식으로 코드에서 리소스를 참조 하는 경우 다음 구문을 사용 하는 리소스 클래스 계층 구조를 통해 액세스할 수 있습니다.When referencing resources programmatically (in code), they can be accessed via the Resources class hierarchy which uses the following syntax:

[<PackageName>.]Resource.<ResourceType>.<ResourceName>
  • PackageName – 패키지 리소스를 제공 하 고만 필요한 경우 다른 패키지에서 리소스를 사용 하 합니다.PackageName – The package which is providing the resource and is only required when resources from other packages are being used.

  • ResourceType – 위에서 설명한 리소스 클래스 내에 있는 중첩 된 리소스 형식입니다.ResourceType – This is the nested resource type that is within the Resource class described above.

  • 리소스 이름 – (확장명 없음) 리소스의 파일 이름 또는 XML 요소에 있는 리소스에 대 한 android: name 특성의 값입니다.Resource Name – this is the filename of the resource (without the extension) or the value of the android:name attribute for resources that are in an XML element.

XML에서 리소스를 참조합니다.Referencing Resources from XML

수행 하 여 XML 파일에 리소스에 액세스 하는 특수 구문을:Resources in an XML file are accessed by a following a special syntax:

@[<PackageName>:]<ResourceType>/<ResourceName>
  • PackageName – 패키지 리소스를 제공 하 고만 필요한 경우 다른 패키지에서 리소스를 사용 하 합니다.PackageName – the package which is providing the resource and is only required when resources from other packages are being used.

  • ResourceType – 리소스 클래스 내에 있는 중첩 된 리소스 형식입니다.ResourceType – This is the nested resource type that is within the Resource class.

  • 리소스 이름 – 리소스의 이름입니다 (없이 파일 형식 확장명) 또는 값을 android:name XML 요소에 있는 리소스에 대 한 특성입니다.Resource Name – this is the filename of the resource (without the file type extension) or the value of the android:name attribute for resources that are in an XML element.

예를 들어 레이아웃 파일의 내용을 Main.axml, 다음과 같습니다.For example the contents of a layout file, Main.axml, are as follows:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">
    <ImageView android:id="@+id/myImage"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/flag" />
</LinearLayout>

이 예제에는 ImageView 라는 드로어 블 리소스를 필요한 플래그합니다.This example has an ImageView that requires a drawable resource named flag. 합니다 ImageView 에 해당 src 특성이로 설정 @drawable/flag합니다.The ImageView has its src attribute set to @drawable/flag. 작업이 시작 되 면 Android 디렉터리 안에 보입니다 리소스/Drawable 라는 파일에 대 한 flag.png (파일 확장명 수 다른 이미지 형식을 같은 flag.jpg) 및 해당 파일을 로드 하 여 표시 된 ImageView합니다.When the activity starts, Android will look inside the directory Resource/Drawable for a file named flag.png (the file extension could be another image format, like flag.jpg) and load that file and display it in the ImageView. 이 응용 프로그램을 실행 하는 경우 다음 이미지와 같이 표시 됩니다.When this application is run, it would look something like the following image:

지역화 된 ImageView