Používání prostředků Androidu

Prostředky poskytují způsob, jak zahrnout do aplikace libovolné soubory, jako je text, XML, písma, hudba a video. Pokud se tyto soubory pokusíte zahrnout jako "prostředky", Android je zpracuje do svého systému prostředků a nebudete moci získat nezpracovaná data. Pokud chcete mít přístup k datům, která se nedotkne, prostředky představují jeden způsob, jak to provést.

Prostředky přidané do vašeho projektu se zobrazí stejně jako systém souborů, který může číst aplikace pomocí AssetManager. V této jednoduché ukázce přidáváme do našeho projektu Asset typu textový soubor, přečteme ho pomocí AssetManager a zobrazí se v TextView.

Přidat Asset do Project

Prostředky se přecházejí do Assets složky vašeho projektu. Přidejte do této složky nový textový soubor s názvem read_asset.txt . Vložte do něj nějaký text, například "jsem přišel z assetu!".

Visual Studio by měl nastavit akci sestavení pro tento soubor na AndroidAsset:

Setting the build action to AndroidAsset

Výběr správného BuildAction zajistí, že se soubor zabalí do APK v době kompilace.

Čtení prostředků

Prostředky jsou čteny pomocí AssetManager. Instance AssetManager je dostupná přístupem k vlastnosti AssetManager ) Android.Content.Context , jako je aktivita. V následujícím kódu otevřete náš read_asset.txt Asset, přečtete obsah a zobrazíme ho pomocí 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);
}

Čtení binárních prostředků

Použití StreamReader v předchozím příkladu je ideální pro textové prostředky. Pro binární prostředky použijte následující kód:

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...

}

Spuštění aplikace

Spusťte aplikaci a měli byste vidět následující:

Example screenshot