Как создать заставку для всех размеров экрана в Xamarin

#c# #visual-studio #xamarin

#c# #visual-studio #xamarin

Вопрос:

Я могу без проблем отображать заставку, но мне нужно предоставить заставку правильного размера в зависимости от разрешения экрана. Во всех примерах, которые я проверил, говорится, что нужно поместить splashscreen.png в папку, доступную для рисования, и ссылаться на нее в splash.xml который, в свою очередь, упоминается в style.xml который используется в качестве темы всплывающей активности.

splash.xml внутренние ресурсы > доступные для рисования

 <?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
  <item>
    <color android:color="@color/launcher_background"/>
  </item>
  <item>
    <bitmap
        android:src="@drawable/splashscreen"
        android:tileMode="disabled"
        android:gravity="center"
        />
  </item>
</layer-list> 
  

Внутри Ресурсы> значения > styles.xml:

 <style name="splashscreen" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="android:windowBackground">@drawable/splash</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowIsTranslucent">false</item>
    <item name="android:windowIsFloating">false</item>
    <item name="android:backgroundDimEnabled">true</item>
  </style>
  

Вот моя проблема:

Внутри ресурсов есть папка для рисования, а внутри ресурсов есть отдельные папки mipmap, которые должны содержать заставки разных размеров. Примеры, которые я видел, ссылаются только на одно изображение из drawable. Итак, вопрос в том, как мне правильно ссылаться на правильный splashscreen.png в зависимости от разрешения устройства?

Источники:

https://learn.microsoft.com/en-us/xamarin/android/user-interface/splash-screen

https://www.xamarinhelp.com/creating-splash-screen-xamarin-forms/

Комментарии:

1. Устройство само извлекает его из нужной папки, вам нужно будет предоставить соответствующий ресурс изображения для каждой папки. Другими словами, вам понадобятся несколько одинаковых изображений с соответствующим разрешением для mdpi, xdpi, xxdpi и т.д.

2. Да, но как ??… Я должен ссылаться на splash.png в splash.xml . это указывает только на один png-файл в drawable.

3. Итак, вам нужно будет создать один и тот же файл в разных разрешениях, обычно это делает дизайнер, но что касается ссылки на него, это все то же имя. Таким образом, у вас будет spalsh.png , например, в вашем drawable и во всех других папках макета. Сама платформа будет знать, где искать

4. Вы хотите сказать, что я должен поместить splash.xml файл внутри папки для рисования, а затем все файлы splashscreen.png внутри соответствующих размеров папок?

5. xml-файл может оставаться там, где он есть, вам просто нужно поместить splashscreen.png в папку соответствующего размера

Ответ №1:

Ссылки на изображение должны быть только из папки drawable, а в других папках должны быть изображения с точно таким же именем. В зависимости от разрешения устройство автоматически выбирает правильную папку для рисования и изображение внутри нее. Для получения более подробной информации нажмите здесь

Комментарии:

1. Мне нужно кое-что уточнить. Вы говорите, что изображение должно быть доступно для рисования. Какая версия изображения? версия с самым высоким разрешением?

2. самый низкий, поскольку он следует иерархии от высокого к низкому. Если у вас есть такие папки, как hdpi, mdpi, ldpi и default drawable, и если устройство hdpi, оно сначала будет искать изображение в hdpi, затем, если оно недоступно, оно будет искать mdpi, затем ldpi, а затем для рисования по умолчанию.