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

Andrew

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

    23
  • Зарегистрирован

  • Победитель дней

    3

Andrew стал победителем дня 30 июня 2019

Andrew имел наиболее популярный контент!

Информация

  • Пол
    Мужчина
  • Город
    Minsk

Посетители профиля

1 283 просмотра профиля
  1. Очень просто: ====================== program Project1; uses System.StartUpCopy, FMX.Forms, Androidapi.Helpers, Unit1 in 'Unit1.pas' {Form1}; {$R *.res} begin TAndroidHelper.Activity.setRequestedOrientation(TJActivityInfo.JavaClass.SCREEN_ORIENTATION_SENSOR_LANDSCAPE); Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run; end. ====================== Если укажите SCREEN_ORIENTATION_SENSOR_PORTRAIT, то будет только портретная ориентация, но картинка переворачивается на InvertedPortrait только на планшетах.
  2. Пока в Delphi нет такой нужной компоненты как ViewPager: http://developer.android.com/training/animation/screen-slide.html
  3. У TImage есть свойство DisableInterpolation ===================================== Image1.DisableInterpolation:= False;
  4. Lenovo TAB S8-50LC на базе процессора Intel Atom Z3745 - http://fire-monkey.ru/topic/1416-tform-на-планшетах-android/
  5. При работе с Listbox мне приходится использовать RecalcSize. Вообще, для лучшего понимания проблемы вы лучше нарисуйте что хотели бы видеть и что реально получаете.
  6. var ScreenService: IFMXScreenService; begin ScreenService:= TPlatformServices.Current.GetPlatformService(IFMXScreenService) as IFMXScreenService; ScreenService.SetScreenOrientation([TScreenOrientation.Landscape]); end;
  7. Я получил Seattle по подписке. Информации действительно мало, приходилось точно так возмущаться и вытягивать ответы от Embarcadero по телефону. В общем, пока действует подписка, можете скачивать обновления и новые версии. Поэтому подписка меня полностью удовлетворяет.
  8. Обратитесь к тем, у кого приобретали Delphi. Летом на Allsoft я оформил "Update Subscription" поскольку посчитал, что проще платить раз в год и получать обновления и новые версии, чем платить за отдельные версии без обновлений, от которых все равно проку мало. Учитывая, что развитие мобильных платформ и, следовательно, Delphi идет очень быстрыми темпами, это лучший вариант. Помнится, во времена Windows не было большой необходимости часто обновлять Delphi (до сих пор еще разрабатываю на D7).
  9. Может вам это поможет: http://www.jvesoft.com/wp/custom-ios-device-rotation. По аналогии попробуйте сделать и для Android.
  10. Type THackListBox = type TListBox; Procedure TMainForm.Scroll_ListBox_to_Top; begin THackListBox(MyListBox).VScrollBar.Value:= 0; // Прокрутка к первому Item end; На основе этого можно прокручивать к произвольному Item, исходя из суммы высот предыдущих. Впрочем для вашего случая достаточно и ScrollViewPos, но нужно после создания Item добавлять RecalcSize.
  11. Нашел и устранил последнюю проблему планшета Lenovo TAB S8-50LC (CPU Intel Atom). Не исключаю, что подобная проблема возникает и на других устройствах. При изменении ориентации устройства картинка поворачивается моментально. Возможно поэтому в 9 случаях из 10 программа не успевала на это правильно реагировать и форма в портретной ориентации отображалась как альбомная и наоборот. В общем, это выглядело крайне неприятно: Нужно в процедуре "TPlatformAndroid.HandleAndroidCmd(ACmd: Int32);" найти строки: =============== APP_CMD_CONFIG_CHANGED: begin FContentRectMightHaveChanged := ContentRectChangeRefreshCount; // <<---- !!!! FOrientationMightHaveChanged := True; Include(FAppCmdStates, TAndroidAppCmdState.ConfigChanged); end; =============== и в отмеченной строке умножить ContentRectChangeRefreshCount на 3 или 4: FContentRectMightHaveChanged := ContentRectChangeRefreshCount * 4; После этой поправки и исправлений от "Magnum Labs" (см. выше) форма отображается правильно, сколько планшет не крути. На скорость работы приложения это никак не отразилось. Проверялось также на нескольких аппаратах Samsung. Если будет интересно, в следующий раз расскажу как устранить проблему ненужного появления NavigationBar если кликнуть по TMediaPlayerControl или TWebBrowser, а также странной анимации появления/скрытия указанных компонент при изменении их свойства Visible. Проблема с NavigationBar касается устройств, у которых имеется SoftKey.
  12. В Magnum Labs опубликовали решение проблемы с отображением верхней части формы для Android-устройств с процессором Intel x86. Раньше она уезжала под статус бар. Как и предполагалось, требуется внести поправки в FMX.Platform.Android. Для устранения проблемы необходимо: ================================== 1) скопировать файл FMX.Platform.Android.pas в папку с проектом; 2) внести заменить "родную" функцию function TWindowManager.RetrieveContentRect: TRect; на приведенную ниже и перекомпилировать проект: function TWindowManager.RetrieveContentRect: TRect; var Activity: JActivity; NativeWin: JWindow; DecorView: JView; ContentRectVisible, ContentRect: JRect; begin Activity := SharedActivity; if Activity <> nil then begin NativeWin := Activity.getWindow; if NativeWin <> nil then begin FStatusBarHeight := FNewContentRect.Top; ContentRect := TJRect.Create; DecorView := NativeWin.getDecorView; DecorView.getDrawingRect(ContentRect); // Fix by Flying Wang & CallInUIThread( procedure begin if (not PlatformAndroid.GetFullScreen(nil)) and (SharedActivity.getWindow.getAttributes.Flags and TJWindowManager_LayoutParams.JavaClass.FLAG_FULLSCREEN <> TJWindowManager_LayoutParams.JavaClass.FLAG_FULLSCREEN) then begin // http://www.2cto.com/kf/201307/227536.html ContentRectVisible := TJRect.Create; DecorView.getWindowVisibleDisplayFrame(ContentRectVisible); if (ContentRect.Top < 1) or (ContentRectVisible.Top < FStatusBarHeight) then begin ContentRect.Top := ContentRectVisible.Top; FNewContentRect.Top := ContentRectVisible.Top; FStatusBarHeight := FNewContentRect.Top; end; end; end); Result := TRect.Create(Round(FNewContentRect.Left / FScale), Round(FNewContentRect.Top / FScale), Round(ContentRect.Right / FScale), Round(ContentRect.Bottom / FScale)); end; end; end; Ссылка на источник: https://magnumlabs.wordpress.com/2015/10/10/delphiandroid-misalignment-status-bar-on-intel-based-devices/
  13. Да, TViewPager очень не хватает - http://fire-monkey.ru/topic/1392-tviewpager/
  14. Для Android вычисляйте диагональ сами: =================================== Diagonal_in_Inch:= Sqrt(Sqr(DeviceMetricsService.GetDisplayMetrics.PhysicalScreenSize.Width) + Sqr(DeviceMetricsService.GetDisplayMetrics.PhysicalScreenSize.Height)) / DeviceMetricsService.GetDisplayMetrics.PixelsPerInch;
×
×
  • Создать...