2016-11-24 2 views
1

У меня есть приложение UWP в магазине приложений Windows 10 (World Time Clock). Это приложение позволяет пользователю подключать живые вторичные плитки, которые отображают текст, который обновляется каждую минуту (чтобы показать текущее время в разных городах мира). Эти живые текстовые плитки создаются как «адаптивные плитки» с помощью XML, показанных ниже:Прозрачные живые плитки в универсальных приложениях Windows (UWP) на Win 10 mobile/phone

tile definition xml

В настоящее время эти живые текстовые плитки имеют сплошной цвет фон # 000000 (черный) вытащил из манифеста приложения. В последней версии Windows 10 для телефона есть настройка, использующая прозрачность прозрачной панели экрана; он обеспечивает хороший эффект, но только для утилит Microsoft. См. Снимок экрана ниже. К сожалению, я не могу понять, как сделать фон для моих текстовых плит прозрачным/полупрозрачным. Я ожидал бы, что Windows настроит альфа-канал/непрозрачность/прозрачность; но это не так. Кроме того, цвет фона, который я могу установить в манифесте, - это RGB, а не ARGB; он НЕ позволяет указывать значение альфа-канала. Кто-нибудь знает, возможно ли, чтобы приложения, отличные от Microsoft, имели полупрозрачные фальш-плитки для живых текстовых плит? Если да, то какое-либо предложение о том, как добиться этого эффекта (полупрозрачный фон Microsoft и мои непрозрачные фонные плитки, показанные ниже)?

Translucent live tiles screenshot

+0

Что вы подразумеваете под «вытащил из манифеста приложения»? В моем манифеста по умолчанию фон установлен в значение «BackgroundColor =» transparent », возможно, вы можете попробовать это? –

ответ

0

Как уже упоминалось Томасом в комментариях вы можете изменить цвет фона вашей плитки в Package.appxmanifest. В коде это BackgroundColor="transparent" в VisualElements тэгом:

<Applications> 
    <Application Id="App" Executable="$targetnametoken$.exe" EntryPoint="MyApp.App"> 
    <uap:VisualElements DisplayName="MyApp" Square150x150Logo="Assets\Square150x150Logo.png" Square44x44Logo="Assets\Square44x44Logo.png" Description="MyApp" BackgroundColor="transparent"> 

Если вы хотите, чтобы иметь его в своем приложении, как в приложениях Microsoft вы можете изменить BackgroundColor вашего SecondaryTile в коде с чем-то вроде этого:

public static async Task ChangeSecondaryTilesBackground(bool transparent) { 
    IReadOnlyList<SecondaryTile> tiles = await SecondaryTile.FindAllAsync(); 

    foreach (SecondaryTile tile in tiles) { 
     if (transparent) 
      tile.VisualElements.BackgroundColor = Windows.UI.Colors.Transparent; 
     else 
      tile.VisualElements.BackgroundColor = Windows.UI.Colors.Green; // Set to your color 

     await tile.UpdateAsync(); 
    } 
} 

Обновление первичной плитки здесь немного сложнее, поскольку вам потребуется создать новый контент Xml для плитки с фоновым изображением, содержащим только ваш цвет, и установить его с помощью tileUpdater.Update(new TileNotification(xmlContent));

Обратите внимание, что на ПК пользователь может деактивировать плитку, щелкнув его правой кнопкой мыши, а затем все, что установлено в Package.appxmanifest, будет использоваться. Содержимое по умолчанию из appxmanifest будет также показано, если ваш контент TileNotification является неправильным или не загружается.

Другой способ (например, если брендинг важен для вас) заключается в том, чтобы сохранить BackgroundColor в appxmanifest, и если пользователь хочет иметь прозрачную живую панель с изображением приложения, просто создайте SecondaryTile, реплицируя основное приложение значок. Например, я сделал это в PitlaneOne. Причина, по которой я так делал, заключается в том, что настройка BackgroundColor в appxmanifest на прозрачность приведет к тому, что значок приложения в списке «Приложения» и в списке «Магазин» будет также прозрачным.

Смежные вопросы