我正在开发一个Xamarin.Forms应用程序,它使用embedded images feature管理共享项目中的一些资产。现在我有平台特定的渲染器,它们也需要访问这些图像。
在iOS上我可以简单地使用
UIImage.FromResource(typeof(CustomMap).Assembly, "my_graphic");
加载嵌入的图像并在UIImageView或类似文件中使用它。如何在Android特定代码中完成相同的操作?
答案 0 :(得分:1)
在droid渲染器中,您可以像这样将图像设置为Imageview。使用平台特定代码时,请使用平台文件结构中的图像。在Android中将您的图像包含在Drawable文件夹中。
global::Android.Widget.ImageView imageview = new global::Android.Widget.ImageView ();
imageview.SetBackgroundResource (Resource.Drawable.my_graphic);
答案 1 :(得分:0)
不完全清理和测试但您可能想要创建ImageLoaderSourceHandler类的实例并调用其LoadImageAsync方法,并向其传递ImageSource,context和CancellationToken(可选)的实例。 您将获得Android.Graphics.Bitmap的实例。
或者,如果您想绕过表单,您可能希望在Android项目中创建指向这些图像的链接并正常使用它们。或者加载byte stream from embedded resource
答案 2 :(得分:0)
我正是这样做的:
var key = "my_graphic";
using (var imageStream = Assembly.GetAssembly (typeof(YOURNAMESPACE.App)).GetManifestResourceStream (key))
{
var bitmap = await BitmapFactory.DecodeStreamAsync (imageStream);
}
我的嵌入式图像位于XamarinForms项目(PCL)
答案 3 :(得分:0)
这可能对您有用。
// If your class is inherited from activity or android context then use this.
var imageSource = ImageSource.FromFile("Images/waterfront.jpg");
var img = new ImageLoaderSourceHandler().LoadImageAsync(imageSource,this);
或
// if your class is not from android context then use this.
var imageSource = ImageSource.FromFile("Images/waterfront.jpg");
var img = new ImageLoaderSourceHandler().LoadImageAsync(imageSource,Android.App.Application.Context);
这是完整的实现
private async Bitmap GetBitMap(path)
{
var imageSource = ImageSource.FromFile(path);
return await new ImageLoaderSourceHandler().LoadImageAsync(imageSource,Android.App.Application.Context);
}