Перейти к содержанию
Fire Monkey от А до Я
  • 0

Подмена платформенного стиля через ресурсы


bigjorj

Вопрос

В продолжении темы http://fire-monkey.ru/topic/170-kak-izmenit-stil-po-umolchaniiu-dlia-androida/

 

Seatle. Android.

 

Пытаюсь заменить платформенный стиль под Android. Добавляю в проект ресурс под именем androidstyle в него помещаю свой стиль. Цель - не тянуть стиль по умолчанию дабы не раздувать apk еще на 2 мБ.

 

При компиляции получаю следующую ошибку

[DCC Error] E2597 C:\Users\Public\Documents\Embarcadero\Studio\17.0\PlatformSDKs\android-ndk-r9c\toolchains\arm-linux-androideabi-4.6\prebuilt\windows\bin\arm-linux-androideabi-ld.exe: error: .\Android\Debug\Mobile.o: multiple definition of '__rsrc_N6RCDATA12androidstyleE'
  C:\Users\Public\Documents\Embarcadero\Studio\17.0\PlatformSDKs\android-ndk-r9c\toolchains\arm-linux-androideabi-4.6\prebuilt\windows\bin\arm-linux-androideabi-ld.exe: c:\program files (x86)\embarcadero\studio\17.0\lib\Android\Release\FMX.Controls.Android.o: previous definition here

Я так понимаю ругается на повтор имена ресурса. Как исправить? Или на 10 это больше не работает?

Изменено пользователем bigjorj
Ссылка на комментарий

Рекомендуемые сообщения

  • 0
  • Модераторы
unit FMX.Controls.Android;

interface

{$SCOPEDENUMS ON}

implementation

uses FMX.Types, FMX.Styles, System.Types, System.Classes, System.SysUtils;

{$R *.res}

initialization
  //TStyleManager.RegisterPlatformStyleResource(TOSPlatform.Android, 'androidstyle');
end.

думаю это поможет

 

под Windows вообще 3 стиля...

  TStyleManager.RegisterPlatformStyleResource(TOSPlatform.Windows, 'win7style');
  TStyleManager.RegisterPlatformStyleResource(TOSPlatform.Windows, 'win8style');
  TStyleManager.RegisterPlatformStyleResource(TOSPlatform.Windows, 'win10style');
Изменено пользователем ZuBy
Ссылка на комментарий
  • 0

Да. Как раз в этом направлении копал.

 

Только помогло вот это 

unit FMX.Controls.Android;

interface

{$SCOPEDENUMS ON}

implementation

uses FMX.Types, FMX.Styles, System.Types, System.Classes, System.SysUtils;

//{$R *.res}

initialization
  TStyleManager.RegisterPlatformStyleResource(TOSPlatform.Android, 'androidstyle');
end.

То есть закомментировал загрузку ресурсов.

 

Но вот беда. Оказалось что в моем стиле были стили не для всех контролов... Половина контролов стала невидимыми

Изменено пользователем bigjorj
Ссылка на комментарий
  • 0

Вот что я вам скажу.

По моим наблюдениям загрузка стиля из файла или даже ресурса в TStyleManager происходит на Android намноооого дольше нежели переключение между разными TStyleBook с предварительно загруженными стилями. Возвращаюсь к StyleBook. 

Ссылка на комментарий
  • 0
  • Администраторы

загрузка стиля из файла или даже ресурса в TStyleManager происходит на Android намноооого дольше нежели переключение между разными TStyleBook с предварительно загруженными стилями

 

Это поведение ожидаемо. Так как при переключении стиль бука, у вас уже загружен стиль в память.

При загрузке стиля из ресурсов, вы вначале тратите время на загрузку в память (десирелизация), а потом уже использование.

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...