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

ENERGY

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

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

  • Посещение

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

    57

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

  1. Столкнулся с такой же проблемой, если любой компонент (в моем случае TImage ) лежит на фрейме не работает TFloatAnimation вообще.

    Решение: 

    При создании фрейма нужно указывать Self формы, а не  nil.

    : MyFrame := TMyFrame.Create(Self);

  2. Токио сам по себе довольно глючный, особенно до обновления 10.2.3 там и без таймера баги с анимацией, эффектам и низким FPS на ровном месте, в этом случае лучше Берлин использовать (что я и делаю под Android и iOS (Xcode 9 btw) ).

  3. Желательно выбирать тот SDK, который советует EMBT т.к. он протестирован = более стабильная программа (прога все равно будет прекрасно работать под последним Android 8). Плюс еще новый SDK сам по себе может быть сырой. 

    Но скоро нам всем придется делать с последними SDK :

    Starting in late-2018, all new and updated apps will be required to target an SDK that is no more than 1 year older than the current codename release.

    https://www.androidpolice.com/2017/12/19/play-store-require-new-updated-apps-target-recent-api-levels-distribute-native-apps-64-bit-support/

  4. Итак на Android и iOS нет сглаживания при отрисовке примитивов (линий, кругов, вектора).

    Метод 1 (Native Draw, Delphi ONLY ) - лучший и простой. 

    На Canvas PaintBox рисуем как обычно.

    Если нужно нарисовать на Canvas Bitmap'a, а не на PaintBox, тогда нужно правильно подготовить Bitmap: 

    if Scene <> nil then
      lScale := Scene.GetSceneScale
    else
      lScale := 1;
    
    // fBitmap.BitmapScale := lScale; //это только для DrawPath
    fBitmap.SetSize(Ceil(Width * lScale), Ceil(Height * lScale) );

     

    Все детали здесь, также там ссылка на сайт (используйте гугл переводчик)

    https://github.com/OneChen/FMXNativeDraw

    Если нужно сохранить в Bitmap, то делаем PaintBox.MakeScreenshot (TControl.PaintTo) в результате получаем сглаженный Bitmap. Кстати вызвать PaintTo не получится в Paint и Afterpaint методах текущего контрола - будет циклический вызов Paint и в результате переполнение стэка, нужно делать это в AfterPaint формы или фрейма. 

    Метод 2.

    http://riversoftavg.com/blogs/index.php/2016/06/09/use-supersampling-for-offscreen-bitmaps-on-delphi-mobile/

  5. Что-то не нашел готового метода.

    Рисую при помощи NativeDraw (https://github.com/OneChen/FMXNativeDraw) на PaintBox  - все замечательно. Есть сглаживание.

    Если рисую с NatvieDraw на Bitmap - то нет сглаживания.

    Хочу попробовать с PaintBox скопировать в битпам. 

  6. 9 минут назад, Akad сказал:

    Можно по подробнее, что за проблемы? В руках 2 телефона на 6 и 1 на 7.1 - ни где у меня с клиентом проблем нет.
     

    Значит вы не используете https. Поищите на форуме по словам Indy https (ssl) Android 6  

    http://fire-monkey.ru/topic/1922-android-60-не-удается-загрузить-ssl-библиотеку/ 

    http://fire-monkey.ru/forum/368-ssl/

     

  7. Возможно проще будет хранить в TiniFile файле, если их немного. К примеру языковой файл - пару килобайт самое то. Просто и быстро.

     

    В Delphi для работы с файлами используют стримы. AssignFile устарел еще лет 15 тому назад, это наследство из ТурбоПаскаля. См TFileStream и др.  - их нужно использовать.

  8. 11 минут назад, Akad сказал:

    THTTPClient/THTTPServer - это даже не смешно. 

    THTTPClient - стабильно работает на 4 платформах, как https так и http, никогда с ним проблем не было, Писал даже RESTAPI на DropBox и API под корпоративный сервер. А с Indy есть проблемы под Android 6 и выше, - не работает https без шаманства. 

    Про THTTPServer не знаю. Так что не понятно что вас рассмешило

  9. Исправленный код для Берлина и выше:

    procedure TForm2.FormPaint(Sender: TObject; Canvas: TCanvas; const ARect: TRectF);
        var path : TPathData;
        begin
          path := TPathData.Create;
          try
            path.MoveTo(TPointF.Create (10,100));
            path.CurveTo (TPointF.Create(100,10),TPointF.Create(150,150),
                          TPointF.Create(200,100));
            Canvas.Stroke.Thickness := 2;
            Canvas.Stroke.Kind := TBrushKind.Solid;
            Canvas.Stroke.Color := TAlphaColorRec.Red;
            Canvas.BeginScene;
            Canvas.DrawPath(path, 1.0);
            Canvas.EndScene;
          finally
            path.Free;
          end;
        end;

    ifTU13y.png.c6af791836bb665167f416a763f8514e.png

     

     

  10. Набросал простенькую программу для создания стилей под все платформы на основе указанного. 

    Программа только меняет информацию о платформе, никаких других измений со стилем не делает.

    К примеру есть стиль для Android - указываем его программе, - она создает стили для Windows, Mac,  iOs на основе указанного.

    Затем их можно добавлять в StyleBook, запускать и отлаживать этот Android стиль под Windows, что сэкономит массу времени.

    Exe файл находится в \Win32\Release\Styles4Platforms.exe

    5abd0032e5ba2_convertstyles.png.101c746ab14acabd048285ca1acec799.png

     

     

    An app to convert current firemonkey style to other platforms based on the specified *.Style file. App only changes the information about the platform and does not do any other changes with the style.

     

     

     

    Styles 4 Other Platforms.7z

  11. 2 часа назад, mazayhin сказал:

    Просто apk, без каких-либо папок. Ну или через Play Market.

    Для iOS необходим Mac и xCode

    http://docwiki.embarcadero.com/RADStudio/Tokyo/en/IOS_Mobile_Application_Development

    И еще 100$ в год на лицензию разработчика Apple iOS. Без нее будет куча проблем, вплоть до невозможности запустить проект на девайсе заказчика.

  12. 23 часа назад, FREEFAR сказал:

    кому интересно кто искал как воспроизвести GIF на Image

    китайский брат постарался))

    http://www.raysoftware.cn/?p=559

    на Win и Andriod все четко

    Блин, что то гугл транслейт пишет 

    Sorry, we are unable to access the page you requested:

    http://www.raysoftware.cn/
     
    Но если открывать не из главной,  а напр. по месяцам (справа панель) типа http://www.raysoftware.cn/?m=201803 то все работает.
  13. Цитата

    До этого реализовал через PHP, с запросом ответом - но это как бэ некомильфо, и работает не очень стабильно

    Наоборот это наиболее оптимальный и стабильный вариант. Всю работу выполняет сервер.

    Пойду сейчас позову всех наших форумных экстрасенсов и телепатов, - они вам помогут. :) 

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

    TThread.CreateAnonymousThread(
        procedure
        begin
    
    // код      
    
    TThread.Queue(nil,
            procedure
            begin
    
    //   здесь код выполнится только по окончании работы потока (отложенный), в главном потоке.
                  // здесь можно работать с формой.
    
            end);
        end
      ).Start;


     

    TThread.CreateAnonymousThread(procedure ()
      begin
             
            TThread.Synchronize (TThread.CurrentThread,
              procedure ()
              begin
    
      // код выполнится в главном потоке, - к примеру чтобы показать прогресс на форме. и затем 
    
     //  поток продолжит работу.
    
              end);
    
      end).Start;

     

    Всегда помните что нельзя работать с формой из других потоков, без методов синхронизации.

    Только в главном, иначе будут случайные AV ошибки.

    Еще почитайте.

    http://blog.marcocantu.com/blog/2014_may_background_delphi_android_threads.html

     

  15. Чтобы отправить строку в чужой Intent:
    
      Intent.putExtra(TJIntent.JavaClass.EXTRA_TEXT, StringtoJString(AText));
    
    Чтобы получить строку в своем Activity (если кто-то отправил) :
    
    var
      Intent: JIntent;
    ...
      Intent := TAndroidHelper.Activity.getIntent;
      
    
     Text := JStringToString(Intent.getStringExtra( StringToJString(_NAME_) ) );
  16. У меня в одном проекте больше тысячи сразу грузится в ListView (вся база) - без тормозов вообще. При этом каждый Item состоит  текстового поля и картинки. Скролл работает без тормозов, даже на самых простых телефонах - проверял на HTC с Android 4.0.1 (512 мб)

     

    Конечно ListView  гораздо быстрее работает, но есть ньюансы реализации, хотя они все освещены на этом форуме.

  17. А в чем сложность?

    TVertScrollBox как основа (Parent), создаешь Tedit в runtime под самым последним TEdit. 

    Кстати, назовите тему как то ближе к сути вопроса.

    @FREEFAR

    Зачем такой велосипед с фреймами. Это ж лишние тормоза.

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