我使用以下代码:
var baseUrl = DependencyService.Get<IBaseUrl> ().Get ();
var backgroundImage = new Image () {
Source = FileImageSource.FromFile (
System.IO.Path.Combine (baseUrl, "Content", "images", "background-2.jpg")
)
};
iOS和Androids的DependencyServices如下所示:
// iOS
[assembly: Xamarin.Forms.Dependency (typeof (BaseUrl_iOS))]
namespace TuneProtectApp.iOS
{
public class BaseUrl_iOS : IBaseUrl
{
public BaseUrl_iOS () { }
public string Get ()
{
return NSBundle.MainBundle.BundlePath;
}
}
}
// Android
[assembly: Xamarin.Forms.Dependency (typeof (BaseUrl_Droid))]
namespace TuneProtectApp.Droid
{
public class BaseUrl_Droid : IBaseUrl
{
public BaseUrl_Droid () {}
public string Get ()
{
return "file:///android_asset/";
}
}
}
backgroundImage在iOS上加载但在Android上加载不正常 . 如何从Android上的Xamarin.Forms中的资产加载图像?
1 回答
在我的 Xamarin.forms (shared) 应用程序中,我有一个注册页面,用户还必须为他的头像选择一个图像 . 根据用户的性别,我将男性或女性符号图像显示为默认(用户可以选择另一个,如果他想这样做) .
I have implemented it as follows:
首先为 all 项目(iOS,Android和WP)创建了一个子目录 \Embedded (直接在每个项目类型的项目根目录中) .
然后将两个.jpg添加到所有项目中的新目录中 .
在我的应用程序中,我有一个全局变量(GV.cEmbeddedAblage)
This is filled in startup-code:
此外,我为图像创建一个全局字节数组(例如男性):
然后我可以轻松地从共享代码(在注册页面上)访问图像(例如):
Generate the path, load image in byte-array (if not already loaded):
Fill another byte.array (with selected (loaded) male- / female- image):
create the image on the page:
Overtake the selected image as Source to the Image:
你应该能够做到这一点......