簡體   English   中英

從Assets文件夾中的xml文件創建Drawable

[英]Creating a Drawable from xml file in Assets folder

我在Assets文件夾中有一個子文件夾,其中包含一些xml布局(只是簡單的形狀。)我的目標是能夠創建一個Drawable對象用作視圖的背景。 目前,它只是簡單的形狀,但最終會有很多形狀。 由於多種原因,我不想使用資源區域(沒有子文件夾,不想對資源路徑進行硬編碼,等等)。

適用於圖像可繪制對象的普通代碼對xml文件返回null。 是否有人對如何執行此操作有任何指示? 下面的代碼示例。

xml文件:

<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval">
  <stroke android:width="2dp" android:color="#c9c6af" />
  <solid android:color="#ffffffff" />
</shape>

用於讀取文件的C#代碼,與Java非常相似。 是的,我知道我需要關閉InputStream:

public static Drawable GetDrawableFromAsset(Context context, string filePath)
    {
        AssetManager assetManager = context.Assets;

        Stream istr;
        Drawable drawable = null;
        try
        {
            istr = assetManager.Open(filePath);
            drawable = Drawable.CreateFromStream(istr, null);
        }
        catch (IOException e)
        {
            // handle exception
        }

        return drawable;
    }

事實證明,由於性能原因您無法執行此操作:

https://developer.android.com/reference/android/view/LayoutInflater.html

出於性能原因,視圖膨脹在很大程度上依賴於在構建時完成的XML文件的預處理。 因此,當前無法在運行時對純XML文件使用LayoutInflater和XmlPullParser。 它僅適用於從編譯資源(R.something文件)返回的XmlPullParser。

這與使用XmlPullParser ,這是我無論如何都要結束的嘗試(出於相同的原因,從流創建無效)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM