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

ENERGY

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

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

  • Посещение

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

    57

Сообщения, опубликованные ENERGY

  1. Имхо лучше взять 5s - будет возможность тестировать ПО на маленьких экранах и на минимальной айфон конфигурации. 5s это неплохой смарт, iOS 11 на нем не тормозит (а 12 тем более), поэтому людей на нем еще много.

  2. Никак, даже в нативном swift, при тапе на уведомление, сначала запускается\активируется программа, а затем уже оттуда нужно вызвать ссылку и закрыть\скрыть программу.

    Вы же для iOS пишите? 

  3. C AMD есть решения, но процессор должен поддерживать AMD-V. Но и с этим тоже будут проблемы, я пробовал запустить виртуалку заточенную под AMD на своем ПК, но не получилось, вываливались разные ошибки при запуске. Мне кажется даже если удастся все запустить, появятся очередные баги.  Именно поэтому я так и написал - "не пойдет", это не категоричное нет.

    С Intel у меня все запустилось с первого раза. Насколько я понял, процессор тоже должен поддерживать виртуализацию.

  4. 2 часа назад, Евгений Корепов сказал:

     

    Имхо тогда уже лучше купить обычный ноут под Win с Intel и на нем запустить виртуалку. Это более универсальное решение. Мне решение с виртуальной машиной больше нравится, т.к в VMWare удобно создавать образы всей системы. Особенно это актуально перед обновление системы или Xcode. Не работает после обновления? Пару кликов и ты вернулся к рабочей версии.

    Ну или MacMini, тоже бюджетное решение.

  5. В 25.09.2018 в 07:27, Равиль Зарипов (ZuBy) сказал:

    В Берлине и ниже метод Clear не чистил за собой и правильно будет чистить циклом как в примере выше

    Это справедливо только когда данные в ЛВ перезаполняются

    Именно в Берлине я и проверял - под Windows и iOS - деструктор вызывается. Под остальными ОС не проверял, но думаю там тоже все ок.

    Что значит "перезаполняются"?

    @Равиль Зарипов (ZuBy)

  6. Необходимый минимум -

    iPhone или iPad. iPhone нужен от 5s и выше. 5 уже не пойдет, т.к. 32 битный. 

    100$  - купить сертификат разработчика у Apple.

    MacOS можно запускать на виртуальной машине, готовые образы Vmware, с установленой системой, есть на рутрекере. Для работы нужен реальный процесор Intel, с AMD не пойдет.

    Настройка всего этого может занять пару дней, а то и больше.  

  7. В 10.01.2015 в 13:12, ruslan сказал:

    а вот в TListViewItems.Clear просто чистится TList<TListViewItem>. как известно TList это просто список указателей. так что сама память при ListView.Items.Clear как я понимаю не освободится.

    Это неверно. Все TListViewItem корректно уничтожаются и освобождаются в Clear.

    Чтобы это проверить, достаточно поставить точку останова на TListItem.Destroy;

    А предложенный вами код это очень не оптимизированное и медленное решение, с перерассчетом всех индексов при каждом удалении айтема.

  8. {$IFDEF ANDROID}
    Uses
       Androidapi.JNI.GraphicsContentViewText,
       Androidapi.Helpers,
       Androidapi.JNI.JavaTypes,
       Androidapi.JNI.Net;
    {$ENDIF}
    
    procedure btnPdfClick(Sender: TObject);
    var
       lName       : String;
    {$IFDEF ANDROID}
       Intent      : JIntent;
       URI         : Jnet_Uri;
    {$ENDIF}
    begin
        lName := TPath.GetSharedDownloadsPath + PathDelim + 'test.pdf';
    
        {$IFDEF ANDROID}
          URI := TJnet_Uri.JavaClass.parse(StringToJString('file:///' + lName));
          intent := TJIntent.Create;
          intent.setAction(TJIntent.JavaClass.ACTION_VIEW);
          intent.setDataAndType(URI,StringToJString('application/pdf'));
          SharedActivity.startActivity(intent);
        {$ENDIF}
    end;

     

  9. Правильно. Фреймворк будет смотреть на значение в Scale - если оно будет около системного значения, то загрузит нужную картинку. Иногда, чтобы убедиться что картинка загружается, я раскрашиваю их в разные цвета.

    Offtop: 

    Иногда я беру картинку с разрешением scale 3 и оставляю только одну картинку указывая Scale 1 (т.е. на деле у нее разрешение scale 3).  TImage или TGlyph сделает авторесайз под размер компонента, но не всегда качественный авторесайз получается, нужно смотреть на результаты. Вообще (не только в Delphi), растровую картинку можно уменьшить почти без потери качества, а вот если ее увеличить - то тогда будет плохое качество - появятся растровые квадраты и картинка не будет выглядеть сглаженной. Поэтому не увеличивайте картинки малых разрешение, до более высокого. 

  10. 2 часа назад, Hangar-18 сказал:

    SpeedButton вы не расположите поверх всех элементов, например ListBoxa с прокруткой. То есть кнопка на основе SpeedButton не будет  "floating".

    Ваш же метод прекрасно работает.

    Почему это не расположу? Кликаем правой кнопкой в Design Time по контролу, и выбираем Control > BringToFront. Также метод BringToFront и SendToBack есть в runtime у каждого контрола.

    Кнопка должна находится на форме (ее Parent).  

  11. Все переменные в пост https запросе шифруются, ничего делать не надо.

    Уже много раз обсуждали, что лучше использовать THttpClient ,вместо Indy компонентов. Т..к. https не работает на Android 6 и выше с Indy. И в целом он более стабильный чем Indy.

  12. Может кому то пригодится.

    Победить Linker Error 1 просто. И iOS SDK 11 и больше прекрасно компилиться и работает на Берлине.

    В логах ошибки пишет что ld: file not found: /System/Library/Frameworks/FileProvider.framework/FileProvider for architecture arm64

    Значит нужно добавить его в SDK 

    Tools -> Options -> SDK Manager - выбираем свой SDK и добавляем по аналогии с уже имеюищимися путями:  Add: 

    $(SDKROOT)/System/Library/Frameworks

    FrameworkName: FileProvider

     

    Далее ОК и обновляем кэш (Update Local File Cache). Сделайте Clean проекту на всякий случай, и та дам, все компилиться под Берлином и запускается на айфоне с IOS 11+ 64bit.

     

    Upd - но лучше поставить поставить последнюю версию Delphi, т.к. я заметил баг с системным тулбаром он не перекрашивается,  в зависимости от цвета текущей формы..

  13. 4 часа назад, Tumaso сказал:

    А вот насчет рисования кругов со сглаживанием через nativeAPI, можно поподробнее? А то TCircle в андроиде это полный треш

    Native Api (google translate ) :

    https://github.com/OneChen/FMXNativeDraw (там же ссылка на описаниеl)

    Равиль сделал на основе этого модуля готовые компоненты:  

    https://github.com/rzaripov1990/ZMaterialComponents

  14. Проблема в том что ваш битмап растягивается ,т.к. у него не правильный масштаб (масштаб 1, а нужен системный который больше).

    Значит

    1. Получите текущий Scale из системы (если отнаследовались от TControl, то есть Scene.GetSceneScale).

    2. Установите правильный размер у битмапа - Bitmap.SetSize(Ceil(Width * Scale), Ceil(Height * Scale))

    Вместо Ceil можно Trunc попробовать, что лучше.

    BitmapScale не трогайте (его нужно менять, если рисуете векторный Path ). Теперь попробуйте вывести на него текст, а затем этот битпам отобразить на PaintBox. Должно все получиться с высокой вероятность, я так отрисовываю примитивы, напр. круг через китайский модуль NativeAPI, чтобы было сглаживание на Android/iOS.

     

  15. В 13.01.2018 в 13:14, x11 сказал:

    Я использую обычную TSpeedButton с прозрачной png картинкой с круглой кнопкой.

    В этом варианте при нажатии будет появляться сервый прямоугольник. Не идет. Вариант Равиля медленный, кнопка будет часто перерисовыватся, круг + картинка + тень. 

    Поэтому лучший вариант это сделать кнопку в виде обычной картинки. TImage или TGlyph. Я делал на TGlyph чтобы все картинки были в ImageList. 

    Подготовьте 3 пнг картинки с полностью готовой кнопкой, с тремя масштабами.

    Scale 1 = 56x56
    Scale 2 = 112x112
    Scale 3 = 168x168

    Поместите его в TImageList (обычно в глобальном Datamodule), добавьте свое изображение в список и добавьте 3 коэффициента масштабирования в исходное изображение (дважды щелкните элемент в списке «Sources of Image» в ImageList,  там выберите "Add new Item"), в итоге одно изображение в TImageList будет иметь 3 scale. Чтобы понять какой scale загрузился при тесте, можно поставить для теста картинки разного цвета. Поместите TGlyph на форму и выберите свой список изображений.

    Установите событие OnClick в Form OnCreate (поскольку Glyph1 не имеет OnClick по умолчанию в Object Inspector):

    Glyph1.OnClick := Click;
    Glyph1.HitTest := true; 

    В OnClick добавьте этот код для анимации:

    procedure TForm2.TestClick(Sender: TObject);
    begin
      TAnimator.AnimateFloatWait(Glyph1, 'Opacity', 0.5, 0.2);
      TAnimator.AnimateFloat(Glyph1, 'Opacity', 1, 0.2);
    end;

    Или вы можете использовать TImage - это еще проще и меньше кода, чем выше.

     

     

×
×
  • Создать...