Android 자산 사용

자산은 애플리케이션에 텍스트, xml, 글꼴, 음악 및 비디오와 같은 임의의 파일을 포함하는 방법을 제공합니다. 이러한 파일을 "리소스"로 포함하려는 경우 Android는 해당 리소스 시스템으로 처리하며 원시 데이터를 가져올 수 없습니다. 데이터를 그대로 액세스하려는 경우 자산이 이를 수행하는 한 가지 방법입니다.

프로젝트에 추가된 자산은 AssetManager를 사용하여 애플리케이션에서 읽을 수 있는 파일 시스템처럼 표시됩니다. 이 간단한 데모에서는 프로젝트에 텍스트 파일 자산을 추가하고, 사용하여 AssetManager읽고, TextView에 표시합니다.

프로젝트에 자산 추가

자산은 프로젝트의 폴더로 Assets 이동합니다. 라는 read_asset.txt이 폴더에 새 텍스트 파일을 추가합니다. "자산에서 왔어요!"와 같은 텍스트를 그 안에 배치합니다.

Visual Studio에서 이 파일에 대한 빌드 작업을 AndroidAsset으로 설정해야 합니다.

Setting the build action to AndroidAsset

올바른 BuildAction 을 선택하면 파일이 컴파일 시간에 APK로 패키지됩니다.

자산 읽기

자산은 AssetManager를 사용하여 읽습니다. AssetManager 인스턴스는 활동과 같은 자산 속성에 Android.Content.Context액세스하여 사용할 수 있습니다. 다음 코드에서는 read_asset.txt 자산을 열고 내용을 읽고 TextView를 사용하여 표시합니다.

protected override void OnCreate (Bundle bundle)
{
    base.OnCreate (bundle);

    // Create a new TextView and set it as our view
    TextView tv = new TextView (this);
    
    // Read the contents of our asset
    string content;
    AssetManager assets = this.Assets;
    using (StreamReader sr = new StreamReader (assets.Open ("read_asset.txt")))
    {
        content = sr.ReadToEnd ();
    }

    // Set TextView.Text to our asset content
    tv.Text = content;
    SetContentView (tv);
}

이진 자산 읽기

위의 예제에서 사용하는 StreamReader 것은 텍스트 자산에 적합합니다. 이진 자산의 경우 다음 코드를 사용합니다.

protected override void OnCreate (Bundle bundle)
{
    base.OnCreate (bundle);

    // Read the contents of our asset
    const int maxReadSize = 256 * 1024;
    byte[] content;
    AssetManager assets = this.Assets;
    using (BinaryReader br = new BinaryReader (assets.Open ("mydatabase.db")))
    {
        content = br.ReadBytes (maxReadSize);
    }

    // Do something with it...

}

애플리케이션 실행

애플리케이션을 실행하면 다음이 표시됩니다.

Example screenshot