Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
你真的应该在Xamarin.Forms项目中放置三份图像副本吗?_Xamarin.forms - Fatal编程技术网

你真的应该在Xamarin.Forms项目中放置三份图像副本吗?

你真的应该在Xamarin.Forms项目中放置三份图像副本吗?,xamarin.forms,Xamarin.forms,我是否做错了什么,或者没有办法在Xamarin.Forms项目中只添加一个图像,而不是在每个平台的项目中添加一个图像?这不管用 myImage.Source = ImageSource.FromResource("MyProject.myImage.jpg"); // yes, build action embedded resource 事实上,添加该行将在它到达该行之前导致运行时错误。但别再担心那些愚蠢的事情了 如何使用Xamarin.Forms一次性添加图像 这种方法意味着每个平台将无法

我是否做错了什么,或者没有办法在Xamarin.Forms项目中只添加一个图像,而不是在每个平台的项目中添加一个图像?这不管用

myImage.Source = ImageSource.FromResource("MyProject.myImage.jpg"); // yes, build action embedded resource
事实上,添加该行将在它到达该行之前导致运行时错误。但别再担心那些愚蠢的事情了

如何使用Xamarin.Forms一次性添加图像

这种方法意味着每个平台将无法加载不同的图像分辨率;这必须手动执行。此方法还可能导致应用程序下载大小变大

您可以在项目中只包含一次图像作为嵌入式资源

然后使用以下命令从该程序集加载它

var assemblyOfMyProject = typeof(MyProject.SomeClassInThisAssembly).GetTypeInfo().Assembly;
ImageSource.FromResource("MyProject.myImage.jpg", assemblyOfMyProject);
从NetStandard 2.0开始,可能不需要包含程序集

这里有一个用于字符串的简便扩展方法,它存储程序集,因此您只需加载一次

public static class ImageSourceExtensions
{
    private static Assembly _assembly;

    static ImageSourceExtensions()
    {
        _assembly = typeof(MyProject.SomeClass).GetTypeInfo().Assembly;
    }

    public static ImageSource FromResource(this string path)
    {
        return ImageSource.FromResource(path, _assembly);
    }
}
像这样使用


ImageSource image=“MyProject.image.jpg”.FromResource()

但请记住,多次使用图像是完全有意义的,因为iOS和Android在设备分辨率方面选择了正确的图像(mdpi等)!如果你做得对,你将拥有三个以上的“副本”。有趣的是,2019年谷歌将推出应用捆绑,这意味着他们将根据资源和架构类型将apk转换为几种不同的apk。因此,提供几种不同的分辨率将有助于减少用户设备上的应用程序大小;SVG没有任何与传统位图格式相关的大小调整问题,因为它是按比例渲染的,当然这会带来自身的性能损失。在所有平台上对SVG的支持都在增加,一旦支持SVG动画,它将更加可定制。