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

ENERGY

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

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

  • Посещение

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

    57

Весь контент ENERGY

  1. Столкнулся с такой же проблемой, если любой компонент (в моем случае TImage ) лежит на фрейме не работает TFloatAnimation вообще. Решение: При создании фрейма нужно указывать Self формы, а не nil. : MyFrame := TMyFrame.Create(Self);
  2. Да Осипов молодец, прям удивляюсь его производительности. И для Delphi сколько качественных книг уже выпустил и для С++. Интересно на каких форумах он обитает?
  3. Токио сам по себе довольно глючный, особенно до обновления 10.2.3 там и без таймера баги с анимацией, эффектам и низким FPS на ровном месте, в этом случае лучше Берлин использовать (что я и делаю под Android и iOS (Xcode 9 btw) ).
  4. Желательно выбирать тот 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/
  5. Итак на 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/
  6. TControl.MakeScreenshot Итак если кому то нужно сделать Bitmap со сглаживанием под Android\iOS, то здесь описано как:
  7. Что-то не нашел готового метода. Рисую при помощи NativeDraw (https://github.com/OneChen/FMXNativeDraw) на PaintBox - все замечательно. Есть сглаживание. Если рисую с NatvieDraw на Bitmap - то нет сглаживания. Хочу попробовать с PaintBox скопировать в битпам.
  8. Немного оффтоп, но все таки ..
  9. Значит вы не используете https. Поищите на форуме по словам Indy https (ssl) Android 6 http://fire-monkey.ru/topic/1922-android-60-не-удается-загрузить-ssl-библиотеку/ http://fire-monkey.ru/forum/368-ssl/
  10. Возможно проще будет хранить в TiniFile файле, если их немного. К примеру языковой файл - пару килобайт самое то. Просто и быстро. В Delphi для работы с файлами используют стримы. AssignFile устарел еще лет 15 тому назад, это наследство из ТурбоПаскаля. См TFileStream и др. - их нужно использовать.
  11. THTTPClient - стабильно работает на 4 платформах, как https так и http, никогда с ним проблем не было, Писал даже RESTAPI на DropBox и API под корпоративный сервер. А с Indy есть проблемы под Android 6 и выше, - не работает https без шаманства. Про THTTPServer не знаю. Так что не понятно что вас рассмешило
  12. ENERGY

    Пример с CurveTo, кривые Безье

    Исправленный код для Берлина и выше: 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;
  13. Набросал простенькую программу для создания стилей под все платформы на основе указанного. Программа только меняет информацию о платформе, никаких других измений со стилем не делает. К примеру есть стиль для Android - указываем его программе, - она создает стили для Windows, Mac, iOs на основе указанного. Затем их можно добавлять в StyleBook, запускать и отлаживать этот Android стиль под Windows, что сэкономит массу времени. Exe файл находится в \Win32\Release\Styles4Platforms.exe 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
  14. Ну так быстрее будет проверять и удалять эту ошибочную строку через StringList, чем искать что-то другое.
  15. И еще 100$ в год на лицензию разработчика Apple iOS. Без нее будет куча проблем, вплоть до невозможности запустить проект на девайсе заказчика.
  16. Мыши плакали, кололись, но продолжали есть кактус... Это я про Токио.
  17. ENERGY

    Gif File

    Блин, что то гугл транслейт пишет Sorry, we are unable to access the page you requested: http://www.raysoftware.cn/ Но если открывать не из главной, а напр. по месяцам (справа панель) типа http://www.raysoftware.cn/?m=201803 то все работает.
  18. Наоборот это наиболее оптимальный и стабильный вариант. Всю работу выполняет сервер. Пойду сейчас позову всех наших форумных экстрасенсов и телепатов, - они вам помогут.
  19. Лучше использовать потоки, т.к. сейчас все моб. девайсы имеют многоядерные процессоры. 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
  20. Чтобы отправить строку в чужой Intent: Intent.putExtra(TJIntent.JavaClass.EXTRA_TEXT, StringtoJString(AText)); Чтобы получить строку в своем Activity (если кто-то отправил) : var Intent: JIntent; ... Intent := TAndroidHelper.Activity.getIntent; Text := JStringToString(Intent.getStringExtra( StringToJString(_NAME_) ) );
  21. А как это делается в Java ? Я обычно ищу пример на Java и перевожу в Delphi
  22. У меня в одном проекте больше тысячи сразу грузится в ListView (вся база) - без тормозов вообще. При этом каждый Item состоит текстового поля и картинки. Скролл работает без тормозов, даже на самых простых телефонах - проверял на HTC с Android 4.0.1 (512 мб) Конечно ListView гораздо быстрее работает, но есть ньюансы реализации, хотя они все освещены на этом форуме.
  23. А в чем сложность? TVertScrollBox как основа (Parent), создаешь Tedit в runtime под самым последним TEdit. Кстати, назовите тему как то ближе к сути вопроса. @FREEFAR Зачем такой велосипед с фреймами. Это ж лишние тормоза.
×
×
  • Создать...