2014-09-30 85 views
3

我正在開發其使用embedded images feature管理在共享項目中的一些資產Xamarin.Forms應用。現在我有了特定於平臺的渲染器,這些渲染器也需要訪問這些圖像。如何使用Xamarin將嵌入資源加載到Android位圖?

在iOS我可以簡單地使用

UIImage.FromResource(typeof(CustomMap).Assembly, "my_graphic"); 

加載的嵌入圖像,並在的UIImageView或類似的使用。如何在Android特定的代碼中完成相同的操作?

回答

0

不完全乾淨並經過測試,但您可能需要創建ImageLoaderSourceHandler類的實例並調用其LoadImageAsync方法,並將其傳遞給ImageSource,context和CancellationToken(可選)的實例。 你最終會得到一個Android.Graphics.Bitmap的實例。

或者,如果你想繞過表單,你可能希望創建在Android項目鏈接到這些圖像,通常使用它們。或加載byte stream from embedded resource

+0

使用ImageLoaderSourceHandler某種方式加載其他圖像干擾...但https://github.com/xamarin/mobile-samples/blob/master/EmbeddedResources/SharedLib/ResourceLoader.cs做了訣竅:var stream = EmbeddedResourceLoader.GetEmbeddedResourceStream(「my_graphic」); var bitmap = await BitmapFactory.DecodeStreamAsync(stream); – Rodja 2014-10-02 04:34:30

1

在機器人渲染您可以將圖像設置ImageView的這個樣子。在使用平臺特定的代碼時,在平臺的文件結構中使用圖像。在android中將圖像包含在Drawable文件夾中。

 global::Android.Widget.ImageView imageview = new global::Android.Widget.ImageView(); 
     imageview.SetBackgroundResource (Resource.Drawable.my_graphic); 
+1

我問過在Android上使用嵌入式資源,而不是Android資源機制。 – Rodja 2014-10-02 04:09:14

0

這是我正在做它:

var key = "my_graphic"; 
using (var imageStream = Assembly.GetAssembly (typeof(YOURNAMESPACE.App)).GetManifestResourceStream (key)) 
       { 
        var bitmap = await BitmapFactory.DecodeStreamAsync (imageStream); 
       } 

我的嵌入式圖像是在XamarinForms項目(PCL)

相關問題