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

Barbanel

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

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

  • Посещение

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

    36

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

  1. Like
    Barbanel отреагировална Alex7wrt в Не выбирается цвет кнопки   
    Если нужно менять цвет, то выбирайте TRectangle, как выше писали. Он полностью заменяет TPanel + имеет много возможностей по оформлению заливки и рамки, даже углы можно закруглить и т.п.
  2. Like
    Barbanel получил реакцию от FREEFAR в Видео для Google Play   
    Привет,
    мы пытались сделать видео сами, и даже при том, что в команде есть дизайнеры и просто люди со вкусом, пришли к выводу что лучше доверить это профессионалам.
    В итоге мы заказали видео в компании, которая специализируется на этом.
    Результатом довольны.
     
    Использовали DU Recorder. Нареканий на скорость и качество видео нет.
    В худшем случае, выпроси у когонить мощное устройство и запиши видео на нем, потом перекинешь видео себе и обработаешь.
  3. Like
    Barbanel отреагировална ENERGY в Вопрос Эппла о шифровании данных   
    В своих программах всегда использую https. Всегда отвечал нет, все проходило. При использовании https не нужно указывать шифрование, это пишут и на стэке. В основном рекомендуют отвечать Да, если вы используете Apple библиотеки для шифрования (Security framework, CommonCrypto).
    Я вообще не вижу проблемы. Отвечайте "Нет", это ускорит процесс рассмотрения.
    Очень низкая вероятность того что вас забанят из за того что неправильно указаны пункты в анкете, просто не пропустят программу до исправления причины.
     
  4. Like
    Barbanel отреагировална Вадим Смоленский в Обработка анимированных GIF по рецепту китайского коллеги   
    Всё отлично заработало, спасибо за инструкции. Особенно радует, что можно менять скорость анимации (TGifPlayer.SetupSpeed) и ставить ее на паузу (TGifPlayer.Pause). Правда, для этого в исходном юните кое-что пришлось переместить из private в public.
    У Сисун (так зовут китайского умельца, если я правильно транскрибировал Wǔ Xīsōng) заслуживает самой глубокой благодарности.
  5. Like
    Barbanel получил реакцию от kami в Вопрос Эппла о шифровании данных   
    Аналогично FREEFAR, пытаемся публиковать приложение.
    Отказов пока еще не получили, но при подготовке к публикации столкнулись со страшным для нас вопросом о шифровании данных (текст переведен с немецкого):
    Проблема в том что мы шифруем БД приложения с помощью AES256 (приложение для школ, хранит личные данные учеников, без шифрования данных в нашем случае нельзя).
    Шифрование в нашем случае не главное предназначение приложения, главное - обработка данных, выставление оценок и т.п.
     
    Вопрос: кто-нибудь еще шифрует данные приложения? Как вы отвечали на такой вопрос Эппла? Были ли какие вопросы от Эппла/последствия?
    Всем заранее спасибо и хорошего дня!
     
    PS. возможно стоит завести новую ветку форума для такого рода вопросов: юридических вопросов или про подготовку к публикации.
  6. Like
    Barbanel отреагировална Равиль Зарипов (ZuBy) в Изменение иконки приложения в RunTime   
    попробуй это
  7. Like
    Barbanel отреагировална Евгений Корепов в Tokyo 10.2 Не работает дебаг в Android   
    Проверьте, с помощью Tcpview.exe к примеру, какое приложение слушает на этом порту.
    P.S. Зарапортовался... порт же не известен. Только некий адрес.
  8. Like
    Barbanel отреагировална ENERGY в Tokyo 10.2 Не работает дебаг в Android   
    Рестарт Windows и Android? 
  9. Like
    Barbanel отреагировална Brovin Yaroslav в Tokyo 10.2 Не работает дебаг в Android   
    Физически, при старте приложения с дебагом, среда посылает на ваше устройство интент на запуск приложения. В интенте передается порт для отладчика, по которому среда будет взаимодействовать с дебаггером.
    Система, получив интент:
    Стартует приложение Приложение при старте получает порт и пытается поднять gdb сервис отладки на указанном порту. Соответственно, если порт уже занят, то вы получите эту ошибку. Он может быть занят в результате предыдущей отладки делфи приложения, которое не было завершено, что заставляет Андроид удерживать нужный среде порт. Помогает обычно:
    Полный ребут девайса, который гарантирует, что никакой ваш процесс у вас не повис. Удаление из процессов винды android_gdb. Который так же может удерживать нужный вам порт.
  10. Like
    Barbanel получил реакцию от Alisson R Oliveira в При LongTap срабатывают и OnTap и OnClick   
    У изображения нужно настроить на какие жесты он реагирует. Кинь на форму TGestureManager, потом настрой поля как показано ниже в коде.
    OnClick - срабатывает при касании объекта, срабатывает и в виндовс и на мобильных устройствах.
    OnTap - срабатывает несколько интеллектуальнее, причем только на мобильных устройствах (в виндовс не срабатывает).
    Упрощенно, он срабатывает только если ты коротко тапнул на контрол, если ты нажал на контрол и повел пальцем, скроля контент или скроля родительский ScrollBox, OnTap НЕ сработает.
    // инициализация Image.Touch.GestureManager := gestManager;     Image.Touch.InteractiveGestures := [TInteractiveGesture.LongTap];     Image.OnGesture := FormGesture; .. // обработка жеста procedure TfrmMain.FormGesture(Sender: TObject; const EventInfo: TGestureEventInfo; var Handled: Boolean); begin     case EventInfo.GestureID of     igiLongTap :         begin             DoSomething();         end; end; end;  
  11. Thanks
    Barbanel получил реакцию от mazayhin в Cannot Connect to the Mac   
    Разобрались, день был тяжелым и довольно насыщенным)
    Причина была в том, что не были сгенерированы provision profiles. А мы в свою очередь не имели понятия что они нужны и как их сгенерировать.
    После генерации оных на developer.apple.com, обновления их же в xcode, загрузки их через paserver с помощью такой-то матери, наконец-то оно заработало!
    Всем спасибо за моральную поддержку!  
  12. Like
    Barbanel получил реакцию от Sergey56 в При LongTap срабатывают и OnTap и OnClick   
    У изображения нужно настроить на какие жесты он реагирует. Кинь на форму TGestureManager, потом настрой поля как показано ниже в коде.
    OnClick - срабатывает при касании объекта, срабатывает и в виндовс и на мобильных устройствах.
    OnTap - срабатывает несколько интеллектуальнее, причем только на мобильных устройствах (в виндовс не срабатывает).
    Упрощенно, он срабатывает только если ты коротко тапнул на контрол, если ты нажал на контрол и повел пальцем, скроля контент или скроля родительский ScrollBox, OnTap НЕ сработает.
    // инициализация Image.Touch.GestureManager := gestManager;     Image.Touch.InteractiveGestures := [TInteractiveGesture.LongTap];     Image.OnGesture := FormGesture; .. // обработка жеста procedure TfrmMain.FormGesture(Sender: TObject; const EventInfo: TGestureEventInfo; var Handled: Boolean); begin     case EventInfo.GestureID of     igiLongTap :         begin             DoSomething();         end; end; end;  
  13. Like
    Barbanel отреагировална Brovin Yaroslav в Можно ли уменьшить размер приложения для андроида?   
    Если говорить о размере приложения. То первоначально нужно понять, что входить в состав пакета? Затем определить, что нужно и не нужно?
     
    Давайте посмотрим на примере состав пакета небольшого Андроида приложения, написанного в RAD Studio XE5 Delphi. В качестве примера, я взял приложение PhotoEditorDemo, доступный на официальном Open Source проекте примеров RAD Studio XE5
     
    Это пример кроссплатформенного простого фоторедактора:
    Описание примера: http://docwiki.embarcadero.com/CodeExamples/XE5/en/FMX.Mobile.PhotoEditorDemo_Sample_(Delphi) Исходники: http://sourceforge.net/p/radstudiodemos/code/HEAD/tree/branches/RadStudio_XE5_Update/FireMonkeyMobile/Delphi/PhotoEditorDemo/ Размер сжатого приложения
    Собираем приложение и смотрим на результирующий пакет PhotoEditorDemo.apk (Он располагается в директории .\Android\Debug\PhotoEditorDemo\bin относительно корня проекта).
     
    После сборки приложения его размер ~6 760 КБ (в зависимости от Debug or Release сборки). Это размер сжатого пакета нативного приложения.
     
    Размер распакованного приложения
    Если мы распакуем ZIP архиватором этот файл, то увидим его содержание:

    В распакованном виде, пакет занимает 21,7 МБ.
     
    Состав пакета
    Что же входит в его состав:
    lib - место хранения собранных натиных библиотек приложения. Поскольку приложение нативное, то оно работает на основании библиотеки .so. res - место хранения ресурсов приложения (картинки, иконки и тд) META-INF - хранение подписи приложения, контрольные суммы файлов ресурсов (картинок, звуков и т.д.) AndroidManifest.xml - манифест приложения (расширенный аналог VersionInfo в Windows) classes.dex - файл с java реализацией дополнительного функционала FireMonkey. resources.arsc - таблица ресурсов. В этом файле собраны xml-описания всех ресурсов. Самый значительный вклад в размер пакета вносят:
    libPhotoEditorDemo.so (20 060 КБ) - непосредственно сам бинарник приложения classes.dex (1 948 КБ) - частичная реализация FireMonkey на java. Размер самого приложения большой потому, что включает в себя полностью все Delphi библиотеки, которые используется FireMonkey. А это:
    RTL Хедеры для доступа к Android API Нативные стили для Android (три стиля - 1х, 1.5x, 2х, 3х скалирования экрана). Каждый стиль содержит исходную png картинку нативного стиля. Фильтры и эффекты FireMonkey Вся остальная реализация FireMonkey. Довольно большой набор того, что нужно включить в пакет и тяжело выбросить.
     
    Если говорить о приложении написанном в Eclipse, то приложение включает в себя только часть пользовательского кода. И размер мал за счет того, что весь Android API находится перманентно на самом устройстве (не в пакете).
     
    Если бы используемая часть библиотек FireMonkey находилась на каждом устройстве, то размер приложения сократился бы раза в четыре. 
     
    Вывод
    Размер установочного пакета приложения, написанного на FireMonkey не большой для нативных приложений порядка 6 760 КБ для реализации простого фоторедактора (Хотя для кого-то это может быть много). В установленном виде приложение занимает от 20 000 КБ. Основная причина полная интеграция используемых библиотек в пакет приложения. Вероятность уменьшить этот размер маловероятна. Однако увеличение функционала приложения не так сказывается на дальнейший рост приложения.
     
    Можно попробовать сделать усеченные библиотеки, сократить функциональность. Но это не даст ощутимого уменьшения результирующего размера приложения. 
     
    На сколько важен размер приложения для конкретной работы приложения каждый заказчик решает сам.
     
    P.S. Цель этого ответа дать подробный ответ о причинах такого размера, а не попытка вызвать обсуждение на тему сравнения сред разработки. Каждый framework обладает своими достоинствами и недостатками. И выбор средства разработки диктуется совокупностью требования заказчика. 
  14. Like
    Barbanel получил реакцию от Pax Beach в Запуск компилированного приложения.   
    Это ирония)))
  15. Like
    Barbanel получил реакцию от rakhmet в Жесты: zoom: in + out   
    Я определяю так:
     
    var FFirstDistance, FLastDistance: integer; .. procedure TformMainMenu2.FormGesture(Sender: TObject; const EventInfo: TGestureEventInfo; var Handled: Boolean); begin case EventInfo.GestureID of igiZoom : begin if (not(TInteractiveGestureFlag.gfBegin in EventInfo.Flags)) and (not(TInteractiveGestureFlag.gfEnd in EventInfo.Flags)) then FLastDistance := EventInfo.Distance; if (TInteractiveGestureFlag.gfBegin in EventInfo.Flags) then FFirstDistance := EventInfo.Distance; if (TInteractiveGestureFlag.gfEnd in EventInfo.Flags) then begin // zoom out if ( FFirstDistance > FLastDistance ) then begin Plan.Scale := 0.5; end; // zoom in if ( FFirstDistance < FLastDistance ) then begin Plan.Scale := 1.0; end; end; end; end; end;
  16. Like
    Barbanel получил реакцию от Oleksi в При LongTap срабатывают и OnTap и OnClick   
    У изображения нужно настроить на какие жесты он реагирует. Кинь на форму TGestureManager, потом настрой поля как показано ниже в коде.
    OnClick - срабатывает при касании объекта, срабатывает и в виндовс и на мобильных устройствах.
    OnTap - срабатывает несколько интеллектуальнее, причем только на мобильных устройствах (в виндовс не срабатывает).
    Упрощенно, он срабатывает только если ты коротко тапнул на контрол, если ты нажал на контрол и повел пальцем, скроля контент или скроля родительский ScrollBox, OnTap НЕ сработает.
    // инициализация Image.Touch.GestureManager := gestManager;     Image.Touch.InteractiveGestures := [TInteractiveGesture.LongTap];     Image.OnGesture := FormGesture; .. // обработка жеста procedure TfrmMain.FormGesture(Sender: TObject; const EventInfo: TGestureEventInfo; var Handled: Boolean); begin     case EventInfo.GestureID of     igiLongTap :         begin             DoSomething();         end; end; end;  
  17. Like
    Barbanel получил реакцию от Евгений Корепов в Жесты: zoom: in + out   
    Я определяю так:
     
    var FFirstDistance, FLastDistance: integer; .. procedure TformMainMenu2.FormGesture(Sender: TObject; const EventInfo: TGestureEventInfo; var Handled: Boolean); begin case EventInfo.GestureID of igiZoom : begin if (not(TInteractiveGestureFlag.gfBegin in EventInfo.Flags)) and (not(TInteractiveGestureFlag.gfEnd in EventInfo.Flags)) then FLastDistance := EventInfo.Distance; if (TInteractiveGestureFlag.gfBegin in EventInfo.Flags) then FFirstDistance := EventInfo.Distance; if (TInteractiveGestureFlag.gfEnd in EventInfo.Flags) then begin // zoom out if ( FFirstDistance > FLastDistance ) then begin Plan.Scale := 0.5; end; // zoom in if ( FFirstDistance < FLastDistance ) then begin Plan.Scale := 1.0; end; end; end; end; end;
×
×
  • Создать...