[英]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.