Поделиться через


Использование ресурсов Android

Ресурсы предоставляют способ включения произвольных файлов, таких как текст, xml, шрифты, музыка и видео в приложении. Если вы попытаетесь включить эти файлы в качестве ресурсов, Android обработает их в своей системе ресурсов, и вы не сможете получить необработанные данные. Если вы хотите получить доступ к данным, нетронутым, ресурсы являются одним из способов сделать это.

Ресурсы, добавленные в проект, будут отображаться так же, как файловая система, считываемая приложением с помощью AssetManager. В этой простой демонстрации мы добавим в проект текстовый файл, считываем его с помощью AssetManagerи отображаем его в TextView.

Добавление ресурса в проект

Ресурсы отправляются в папку Assets проекта. Добавьте в эту папку read_asset.txtновый текстовый файл. Поместите в него текст, как "Я пришел из ресурса!".

Visual Studio должен задать действие сборки для этого файла в AndroidAsset:

Setting the build action to AndroidAsset

При выборе правильной сборки файл будет упаковен в APK во время компиляции.

Чтение ресурсов

Ресурсы считываются с помощью AssetManager. Экземпляр AssetManager доступен путем доступа к свойству Assets для объекта 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