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

Лидеры

  1. Alex7wrt

    Alex7wrt

    Пользователи


    • Баллы

      4

    • Постов

      508


  2. krapotkin

    krapotkin

    Пользователи


    • Баллы

      2

    • Постов

      2 213


  3. x11

    x11

    Пользователи


    • Баллы

      1

    • Постов

      828


  4. Shippo

    Shippo

    Пользователи


    • Баллы

      1

    • Постов

      6


Популярный контент

Показан контент с высокой репутацией 26.10.2018 во всех областях

  1. Обнаружил, что на некоторых телефонах с вытянутым экраном не отображается Smart Banner (TBannerAD.Size = Auto). Оказалось, что причиной тому неверный расчет высоты баннера в исходниках FMX.Advertising.Android. Может быть, эта информация кому-нибудь поможет В документации Android высота баннера должна вычисляться так: Тогда как в коде FMX.Advertising.Android она вычисляется в процедуре UpdateControlMetrics следующим образом: const AdHeightPortrait = 90; AdHeightLandscape = 90; AdHeightPhonePortrait = 50; AdHeightPhoneLandscape = 32; AndroidSW600DP = 600; AndroidSW600DPLandscape = 552; AdMobBannerHeight = 50; AdMobFullBannerHeight = 60; AdMobLeaderboardHeight = 90; begin if (FAdControl <> nil) and not Assigned(FAdControl.OnResize) then begin case FAdControl.AdSize of TBannerAdSize.Auto: begin if Screen.Size.Height > Screen.Size.Width then if Screen.Size.Width < AndroidSW600DP then FAdControl.Height := AdHeightPhonePortrait else FAdControl.Height := AdHeightPortrait else if Screen.Size.Height < AndroidSW600DPLandscape then FAdControl.Height := AdHeightPhoneLandscape else FAdControl.Height := AdHeightLandscape; end; Также, учитывая, что на вытянутых экранах (по крайней мере на тех устройствах, на которых я тестил), Screen.Width и Screen.Height далеко не всегда дают верные значения, то более правильный код процедуры TAndroidBannerAd.UpdateControlMetrics будет таким: procedure TAndroidBannerAd.UpdateControlMetrics; var Frame: TRectF; Form: TCommonCustomForm; Disp: JDisplayMetrics; Window: JWindow; h: integer; const AdHeightLandscape = 90; AdHeightPhoneLandscape = 32; AndroidSW600DP = 600; AndroidSW600DPLandscape = 552; AdMobBannerHeight = 50; AdMobFullBannerHeight = 60; AdMobLeaderboardHeight = 90; begin if (FAdControl <> nil) and not Assigned(FAdControl.OnResize) then begin Disp := TJDisplayMetrics.Create; Window:=TJWindow.Wrap((MainActivity.getWindow as ILocalObject).GetObjectID); Window.getWindowManager.getDefaultDisplay.getRealMetrics(disp); h:=round(Disp.heightPixels/Disp.density); case FAdControl.AdSize of TBannerAdSize.Auto: begin if Screen.Size.Height > Screen.Size.Width then begin if h <= 400 then FAdControl.Height := 32 else if (h>400) and (h<=720) then FAdControl.Height:=50 else FAdControl.Height := 90 end else if Screen.Size.Height < AndroidSW600DPLandscape then FAdControl.Height := AdHeightPhoneLandscape else FAdControl.Height := AdHeightLandscape; end; TBannerAdSize.Small: FAdControl.Height := AdMobBannerHeight; TBannerAdSize.Medium: FAdControl.Height := AdMobFullBannerHeight; TBannerAdSize.Large: FAdControl.Height := AdMobLeaderboardHeight; end; if Screen.ActiveForm <> nil then Form := Screen.ActiveForm else if Application.MainForm <> nil then Form := Application.MainForm else Form := nil; if Form <> nil then begin Frame := WindowHandleToPlatform(Form.Handle).Bounds; FAdControl.Width := Round(Frame.Width); end; end; end;
    4 балла
  2. krapotkin

    Непонятный LiveBinding Object

    самое правильное по всем статьям просто руками написать загрузку данных в UI, реакцию на изменения в UI и выгрузку данных в МД времени занимает в 100 раз меньше, чем ловить глюки и отлаживать "технологии"
    1 балл
  3. Shippo

    альтернатива диалогу

    да, указание полного пути к функции помогло! Совсем другой вид у диалога. И остается в фокусе при переходе между приложениями. Большое спасибо. (в списке юнитов присутствовал и FMX.Dialogs и Vcl.Dialogs. видимо VCL перебивал FMX, я к сожалению этого не заметила)
    1 балл
  4. krapotkin

    альтернатива диалогу

    ну наверное не стоит ожидать чтобы два разных фреймворка в одной программе хорошо сосуществовали проверил. чудесно работает, нативно выглядит FMX.Dialogs.SelectDirectory('Открыть папку','C:\',st);
    1 балл
  5. x11

    Непонятный LiveBinding Object

    Я не смотрел проект и буду подсказывать, как. Просто напишу, что LiveBinding - тормознутая и глючная технология. Разработчики так и не довели её до ума. Если есть возможность, лучше отказаться от LiveBinding.
    1 балл
Эта таблица лидеров рассчитана в Москва/GMT+03:00
×
×
  • Создать...