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

zairkz

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

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

  • Посещение

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

    12

Активность репутации

  1. Like
    zairkz отреагировална Kitty в Руководства RAD Studio Mobile Tutorials - Free eBook   
    Ждём книгу от автора этого форума. У неё будет успех и востребованность. Надеямся автор расставит приоритеты в своём расписании и найдёт время на выпуск книги.
  2. Like
    zairkz отреагировална xenon54 в [iOS] Запуск   
    Советую почитать про TestFlight. Это поможет вам удаленно установить свое приложение тому, кому вы хотите показать его на этапе разработки.
    Да и все ответы на ваши вопросы я без труда нашел на просторах интернета когда сам проходил этот путь джедая
  3. Like
    zairkz отреагировална Brovin Yaroslav в "Лишние" Items в отладчике?   
    Чтобы каждый раз при добавлении элемента не запрашивать память на 1 элемент, список растет на несколько элементов вперед. За это отвечает свойство Capacity. Таким образом скорость добавления элементов возрастает.
    Да, но не смотря на это, пользователь работает только в границах от [0, Count -1]
  4. Like
    zairkz отреагировална Kitty в TMapsEngine   
    Тут есть пару слайдов: http://www.slideshare.net/DenisVasilyev1/tmapview-ios-android
  5. Like
    zairkz отреагировална zairkz в TMapsEngine   
    ZuBy красавчик, компонент шикарный, очень помогает его компонент, на счет HereMaps не знал , хотя сидим в одном кабинете   
  6. Like
    zairkz получил реакцию от Равиль Зарипов (ZuBy) в TMapsEngine   
    ZuBy красавчик, компонент шикарный, очень помогает его компонент, на счет HereMaps не знал , хотя сидим в одном кабинете   
  7. Like
    zairkz отреагировална Равиль Зарипов (ZuBy) в TLocationSensor - GPS трекер   
    TMapsEngine
  8. Like
    zairkz отреагировална Равиль Зарипов (ZuBy) в TMapsEngine   
    Компонент TMapsEngine
     
    Возможности
    Нативный LocationSensor [ANDROID] Геокодинг/Реверс геокодинг через Google API, Yandex API, Here Maps API Построение маршрута через Google Distance API Расчет дистанции по прямой Совместим со стандартным компонентом TLocationSensor  
    Видео демонстрация
     
    На видео видно как TMapView косячик с миллионом точек, приложение зависло при отрисовке, но с этим ничего не поделать.
    Без синхронизации не возможно отрисовать все точки
     
    Исходник
    TMapsEngine_source.zip
    TMapsEngine_Seattle_10.zip
     
    Скачать APK  (долго он там не пролежит, а форум не позволяет загрузить zip размером 7,4 мб )
     
  9. Like
    zairkz отреагировална kami в [Android] программа закрывается при использовании LocationSensor и Memo   
    {$IFDEF offtop}Мсье знает толк в извращениях {$ENDIF}
  10. Like
    zairkz отреагировална Равиль Зарипов (ZuBy) в TLocationSensor - GPS трекер   
    вот оригинальный код, я же себе сделал компонент сразу с геокодингом и реверс геокодингом (через три сервиса here maps, google maps, yandex maps) +расчёт дистанции по дороге через google +расчёт дистанции по прямой
    AndroidGPS.zip
  11. Like
    zairkz отреагировална Равиль Зарипов (ZuBy) в [Android] программа закрывается при использовании LocationSensor и Memo   
    Это все конечно хорошо, но не всегда работает.
    Вот такая зверская конструкция на Windows отрабатывается на ура, а на андроиде бывают лаги
    TTask.Run(procedure begin   // тут обращение к базе например   TThread.Synchronize(nil, procedure   begin      //  тут разбираем данные     TTask.Run(procedure     begin       // тут сохраняем       TThread.Queue(nil, procedure       begin          // тут обновляем данные в визуальных компонентах       end);     end);    end); end); пришлось отказаться от такой конструкции, но иногда она жутко удобна
  12. Like
    zairkz отреагировална AngryOwl в Заставка приложения до Form1.Show   
    "- создайте форму (например fmSplash) и на ее событие OnFormCreate делаете все что вам нужно
    - и когда, на ваш взгляд, уже пора создать главную форму приложения - обновите информацию в TfgProgressDialog и в блоке
      TThread.Synchronize(TThread.CurrentThread, procedure
      begin
        {....}
        Application.CreateForm(TfmMain, fmMain);
      end);
    создайте все формы вашего приложения..."
     
    чего там только нет... даже боюсь начать перечислять...
  13. Like
    zairkz отреагировална FeLDMARShaL в Оптимизация   
    Долго думал над тем в какую ветку форума запихать свой вопрос, возможно по этой причине не смог найти ответа. Меня интересуют вопросы оптимизация приложения. Причем во всех смыслах.
     
    Во-первых, хочется максимально разогнать работу интерфейса, время отклика от нажатия на контролы уменьшить бы, или к примеру, сделать более плавное прокручивание на сролпанели. Единственное что нашел своими силами в этом направлении, это свойство у формы Quality. Это свойство я выставил в HighPerfomance. (кстати, а я правильно понял, что это то что мне надо?). После выставления этого свойства, я визуально заметил, что стало более быстро все работать. Но больше ничего не смог придумать. К примеру, на iOS устройстве, панель (скроллируемая) на которой находятся кнопки (много кнопок) заметно тормозит при сроле – т.е. сразу палится что это не нативное приложение. А также замечаю, что самое первое нажатие на кнопку, тоже подвисает, по отношению ко второму нажатию.
     
    Во-вторых, я заметил, что приложение, которое свернули в фоновом режиме очень сильно кушает аккумулятор. К примеру, на моем андройде, за 12 часов аккумулятор со 100% сел до 60%. На iPhone со 100% до 85%. Это при учете что wi-fi был отключен, и без симкарты телефоны были. Т.е. без приложения максимум просадка за 12 часов это 1-2%. К счастью, пока радует, что стандартная андройдовская фитча не показывает, что это именно наше приложение кушает аккумулятор – но думаю, что опытные пользователи раскурят в чем причина того что девайс, стал сильно проседать по заряду. Само собой, когда приложение в фоне оно не работает, никаких потоков там не запускается и ничего не делается. Я думаю может какой-то датчик включился или еще что-нибудь. В общем нужен совет как можно уменьшить потребление заряда аккумулятора.
     
    В общем нужны любые советы (можно из реальной жизни) или какие-нибудь мануалы как разогнать приложение и сократить ресурсопотребляемость его.
     
    П.С, совсем скоро будем заливать наше приложение в AppStore и GooglePlay, и хочется, чтобы оно вело себя максимально нативно (похоже на приложения, написанные специально под эти плтформы)
     
    Буду благодарен любым ссылкам, мастер-классам, примерам кода, мануалам, документации, может быть какие-нибудь конференции по этому поводу или веб семинарам…
     
  14. Like
    zairkz отреагировална Brovin Yaroslav в [Android] программа закрывается при использовании LocationSensor и Memo   
    Если у вас зависает программа, то замените Synchronize на TThread.Queue. Это точно должно помочь
     
    Этим летом мне выделили время и я плотно занимался проблемой "черного экрана" на андроиде и креша при закрытии приложения на Андроиде. На форуме было очень много обсуждений этой проблемы. Поэтому есть пара советов, как ее избежать в текущих версия среды:
    Все операции требуемые выполнять в Delphi UI потоке нужно выполнять в Synchronize или Queue. Второе предпочтительнее. Отличие между Synchronize и Queue - только в том, что первое остановит выполнение потока до тех пор, пока не выполниться код в Synchronize. Queue наборот, поставить в очередь ваш код на выполнение. Поэтому если вы можете выполнять вашу задачу асинхронно, то лучше использовать Queue, если нет, то Synchronize. В вашем случае вы можете выполнить добавление маркера асинхронно, так как результат сенсора вы не используете в будущем для вычислений. То есть у вас только задача отображения данных в Real Time. Поэтому 
  15. Like
    zairkz отреагировална AngryOwl в Заставка приложения до Form1.Show   
    Все "быстренько" бывает только если приложение простое "как две копейки"...
    В реальности - это действительно напрягает.
    Извернуться можно примерно так:
    - создайте форму (например fmSplash) и на ее событие OnFormCreate делаете все что вам нужно
    - создайте TfgProgressDialog (например), который будет отображать процесс загрузки приложения и инициализацию переменных, модулей и т.п.
    - подготовьте все что вам нужно для вашего приложения, до создания главной формы (и других)
    - все что требует отображения в TfgProgressDialog помещайте в блоки
      TThread.Synchronize(TThread.CurrentThread, procedure   begin     {....}   end); - все что не требует отображения в GUI и никак не связано с компонентами других форм, и что может выполняться "постольку-поскольку" помещайте в блоки
      TThread.CreateAnonymousThread(procedure   begin     {...}   end).Start; - и когда, на ваш взгляд, уже пора создать главную форму приложения - обновите информацию в TfgProgressDialog и в блоке
      TThread.Synchronize(TThread.CurrentThread, procedure   begin     {....}   end); создайте все формы вашего приложения...
     
    З.Ы. как пример можете посмотреть тут. просто иначе объяснить не вижу возможности...
  16. Like
    zairkz отреагировална rustam_d в Заставка приложения до Form1.Show   
    Delphi XE8 upd1, FMX.
     
    Перелопатил форумы по заставкам. Я думаю тема все еще не раскрыта.
    реализация встроенной заставки с ХЕ7 чепуха годная для студентов.
    Кому нужная 0.0001с заставка и потом черный экран на секунды длящиеся вечностью?
     
    Господа, предлагаю поставить точку с этим недоразумением.
    Пробовал и двойные формы, типа одна с картинкой и только потом главная и т.п.
    Также сама сплешь форма криейтид главную...нормального эффекта не добился...
    Может что то не так делаю, а может руки кривые, я незнаю. А может надо было влить
    пару тон процессинг мессенджеров или апдейтов с репаинтами?
     
    Видал варианты, где ковыряют манифесты, деплои и т.п. Однако по отзывам и там не все чисто.
    А главное все это как то не в одном месте не упорядоченно разбросано...
     
    Коллеги, у кого есть идеальное и простое решение для дроида и иоса...прошу поделиться...
     
     
     
     
     
  17. Like
    zairkz отреагировална Кривяков Виталий в TUITabControl   
    Добрый день!
     
    В теме про наш продукт http://fire-monkey.ru/topic/1519-1c-papyc-mobilnoe-prilozhenie-dlia-masterov-priemschiko/ меня просили поделиться исходным кодом компонента TabControl с поддержкой слайда табов пальцем. С удовольствием делюсь
    В составе архива сам компонент и пример его использования.
    FMXUI.zip
  18. Like
    zairkz получил реакцию от zloid в Медленно перемещаются контролы на Android   
    Может поможет настройка рендеринга приложения, при использовании у меня скорость анимацию увеличивается, а качество изображения незаметно, где то на форуме было:
    procedure RenderingSetupCallback(const Sender, Context: TObject; var ColorBits, DepthBits: Integer; var Stencil: Boolean; var Multisamples: Integer);  begin ColorBits := 16; // default is 24   DepthBits := 0; // default is 24   Stencil := false; // default is True   Multisamples := 0; // default depends on TForm.Quality or TForm3D.Multisample end; И прописать в событии FormCreate
    procedure TForm_main.FormCreate(Sender: TObject); var SetupService: IFMXRenderingSetupService; begin   if TPlatformServices.Current.SupportsPlatformService(IFMXRenderingSetupService, IInterface(SetupService))     then SetupService.Subscribe(RenderingSetupCallback); end;
  19. Like
    zairkz получил реакцию от Brovin Yaroslav в Медленно перемещаются контролы на Android   
    Может поможет настройка рендеринга приложения, при использовании у меня скорость анимацию увеличивается, а качество изображения незаметно, где то на форуме было:
    procedure RenderingSetupCallback(const Sender, Context: TObject; var ColorBits, DepthBits: Integer; var Stencil: Boolean; var Multisamples: Integer);  begin ColorBits := 16; // default is 24   DepthBits := 0; // default is 24   Stencil := false; // default is True   Multisamples := 0; // default depends on TForm.Quality or TForm3D.Multisample end; И прописать в событии FormCreate
    procedure TForm_main.FormCreate(Sender: TObject); var SetupService: IFMXRenderingSetupService; begin   if TPlatformServices.Current.SupportsPlatformService(IFMXRenderingSetupService, IInterface(SetupService))     then SetupService.Subscribe(RenderingSetupCallback); end;
  20. Like
    zairkz отреагировална Равиль Зарипов (ZuBy) в LocationSensor.Sensor.State используется?   
    чтобы получить статус GPS (для Android) включен или нет, нужно использовать следующий код
    function CheckGPSActive: boolean; // uses // Androidapi.JNIBridge, Androidapi.JNI.Location,  Androidapi.JNI.JavaTypes, // Androidapi.JNI.GraphicsContentViewText, Androidapi.Helpers {$IFDEF ANDROID} var   LocManagerObj: JObject;   LocationManager: JLocationManager;   allProviders: JList;   I: Integer; begin   Result := false;   // запрашиваем сервис Location   LocManagerObj := SharedActivityContext.getSystemService(TJContext.JavaClass.LOCATION_SERVICE);   if Assigned(LocManagerObj) then   begin     // получаем LocationManager     LocationManager := TJLocationManager.Wrap((LocManagerObj as ILocalObject).GetObjectID);     if Assigned(LocationManager) then     begin       // запрашиваем список всех провайдеров       allProviders := LocationManager.getProviders(true);       // выводим список       if Assigned(allProviders) then       begin         with TStringList.Create do         begin           for I := 0 to allProviders.size - 1 do             Add(JStringToString(allProviders.get(I).toString));           if ((IndexOf('gps') >= 0) or (IndexOf('network') >= 0)) then             Result := true;           Free;         end;       end;     end;   end; {$ELSE} begin   Result := false; {$ENDIF} end;
  21. Like
    zairkz получил реакцию от Brovin Yaroslav в [TWebBrowser] [iOS] Открытие прикрепленной html страницы в TWebBrowser   
    Напишите пожалуйста какой путь вы указываете при вложении файлов RemotePath в Deployment для Android и какой для iOS.
    К примеру для Android укажите assets\internal
    Для iOS StartUp\Documents
    Регистр Важен!
  22. Like
    zairkz отреагировална Brovin Yaroslav в [TMultiView] Как избежать задержки при первом появлении TMultiView?   
    Так, я посмотрел. Сохраняем себе такую процедуру:
    procedure PreloadContent(const Control: TControl); var I: Integer; begin if Control is TStyledControl then TStyledControl(Control).ApplyStyleLookup; for I := 0 to Control.ControlsCount - 1 do PreloadContent(Control.Controls[I]); end; Она форсирует загрузку стилей. Задержка при появлении TMutliView заключается в том, что стиль загружается не сразу у любого контрола, а только по мере появления контрола. Обычно это происходит при первой отрисовки. Это правило касается всех контролов.
     
    Поэтому, в этом случае, вам нужно форсировать загрузку стилей. Это можно сделать при помощи моей процедуру PreloadContent.
    Добавьте в TForm.OnCreate и это решит задержку при первом появлении:
    PreloadContent(MultiView1);
  23. Like
    zairkz отреагировална UniSoft в Проблемы со стилями и релиз конфигурацией XE8 &C++   
    Проблема в инициализации модулей, точнее в последовательности их инициализации.   FMX.Types.pas initialization     ...     // <<< тут проблема,      // на момент вызова этого конструктора, инициализация модуля System.Rtti.pas     // еще не выполнялась...     // т.е. модуль System.Rtti.pas инициализируется после FMX.Types.pas     SharedContext := TRttiContext.Create;     ...   System.Rtti.pas class function TRttiContext.Create: TRttiContext; begin   EnsurePoolToken(@Result.FContextToken); end;   constructor TPoolToken.Create; begin   TMonitor.Enter(PoolLock); // вот тут то и падение, модуль еще не инициализирован и PoolLock = nil   try     if Pool = nil then     begin       Pool := TRttiPool.Create;       PoolRefCount := 1;     end     else       Inc(PoolRefCount);   finally     TMonitor.Exit(PoolLock);   end; end;   procedure EnsurePoolToken(TokenRef: PInterface); var   sample: Pointer;     procedure DoCreate;   var     tok: IInterface;   begin     tok := TRttiContext.FGlobalContextToken;     if tok = nil then       tok := TPoolToken.Create;     if AtomicCmpExchange(PPointer(TokenRef)^, Pointer(tok), sample) = sample then     begin       // We won the race to initialize the TokenRef location, so       // zero-out interface reference without decrementing reference count.       PPointer(@tok)^ := nil;     end;   end;   begin   sample := PPointer(TokenRef)^;   if sample <> nil then     Exit;   DoCreate; end;   initialization   ...   PoolLock := TObject.Create;   Есть еще один нюанс, инициализация System.Rtti.pas зачем-то выполняется два раза, к краху это не приведет, но небольшой (не накопительный) memleak будет.   Проблема в библиотеках, и похоже только Win32   ЗЫ. к стилям никакого отношения не имеет... достаточно одной строчки:  void __fastcall TForm1::FormCreate(TObject *Sender) { TValue::From<String>("test"); }
  24. Like
    zairkz получил реакцию от Равиль Зарипов (ZuBy) в При изменении размеров или положения компонентов на форме всё проподает   
    В скриншоте не выключены превью стили в Multi-Device Preview.
    0. Перезапустите Дельфи
    1. Создайте новый проект MultiDeviceProject
    2. Выключите превью стилей в меню Multi-Device Preview как у Вас в скриншоте.
    3. Закройте проект не сохраняя
    4. Откройте свой проект (не перезапускайте Delphi)
     
    Попробуйте пожалуйста еще раз.
  25. Like
    zairkz получил реакцию от Равиль Зарипов (ZuBy) в При изменении размеров или положения компонентов на форме всё проподает   
    Ну так то, я это и писал чтобы отключить превью )
×
×
  • Создать...