我应该在表单应用程序中为iOS和Android使用不同大小的图标吗?

时间:2017-11-07 14:23:53

标签: xamarin xamarin.forms

我有一个带标签栏的表单应用程序。对于iOS,我创建了这些图标:

ionicons_2-0-1_ios-pause-outline_25.png
ionicons_2-0-1_ios-pause-outline_25@2x.png
ionicons_2-0-1_ios-pause-outline_2523x.png

它们的尺寸为25 * 25,50 * 50和75 * 75

根据我的阅读,我相信这些是正确的尺寸。

但有人可以就应用程序的Android端的大小和命名约定向我提供建议。

我被告知文件名可能需要不同。如果我想为iOS使用一个图标而对Android使用另一个图标,它又如何工作。目前我指定了这样的图标:

var homePage = new NavigationPage(new HomePage())
{
   Title = "Home",
   Icon = "ionicons_2-0-1_ios-home-outline_25.png"
};

1 个答案:

答案 0 :(得分:3)

是的,你可能想分开那些。

您可以阅读documentation page上处理不同图像的所有内容。每个平台都有关于正确图像大小的非常具体的指导,也取决于您使用它们的控件。只需谷歌与Android或iOS一起使用“图标大小”或“人机界面指南”。此外,您可能需要查看MFractor插件,该插件具有(付费)功能,可为您生成合适的尺寸,从而为您节省时间。

对于 Android ,您可能希望避免使用连字符,因为众所周知它们会造成麻烦。

为了区分平台,您可以使用这样的结构,用于XAML:

<ContentPage>
    <ContentPage.Padding>
        <OnPlatform x:TypeArguments="Thickness">
            <On Platform="Android, UWP">0</On>
            <On Platform="iOS">0,20,0,0</On>
        </OnPlatform>
    </ContentPage.Padding>
</ContentPage>

在代码中:

switch(Device.RuntimePlatform)
{
    case Device.iOS:
        this.Padding = new Thickness(0,20,0,0);
        break;
    case Device.Android:
    case Device.UWP:   
    case Device.macOS:
    default:
        // This is just an example. You wouldn't actually need to do this, since Padding is already 0 by default.
        this.Padding = new Thickness(0);
        break;
}

(来自xamarinhelp.com的代码示例)

虽然这显示Padding,但您可以将其应用于字符串并将其应用于您的情况。但是,您 不能使用不同的文件名。您可以相同地命名它们,但只需使用不同的图标。该平台还将确定使用@2x等获取或后缀的分辨率