-
Постов
568 -
Зарегистрирован
-
Посещение
-
Победитель дней
57
Сообщения, опубликованные ENERGY
-
-
-
Токио сам по себе довольно глючный, особенно до обновления 10.2.3 там и без таймера баги с анимацией, эффектам и низким FPS на ровном месте, в этом случае лучше Берлин использовать (что я и делаю под Android и iOS (Xcode 9 btw) ).
-
Желательно выбирать тот 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.
-
Круто. За какой срок примерно сделали и сколько человек работало?
-
Итак на 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.
-
TControl.MakeScreenshot
Итак если кому то нужно сделать Bitmap со сглаживанием под Android\iOS, то здесь описано как:
-
Что-то не нашел готового метода.
Рисую при помощи NativeDraw (https://github.com/OneChen/FMXNativeDraw) на PaintBox - все замечательно. Есть сглаживание.
Если рисую с NatvieDraw на Bitmap - то нет сглаживания.
Хочу попробовать с PaintBox скопировать в битпам.
-
Немного оффтоп, но все таки ..
-
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/
-
Возможно проще будет хранить в TiniFile файле, если их немного. К примеру языковой файл - пару килобайт самое то. Просто и быстро.
В Delphi для работы с файлами используют стримы. AssignFile устарел еще лет 15 тому назад, это наследство из ТурбоПаскаля. См TFileStream и др. - их нужно использовать.
-
11 минут назад, Akad сказал:
THTTPClient/THTTPServer - это даже не смешно.
THTTPClient - стабильно работает на 4 платформах, как https так и http, никогда с ним проблем не было, Писал даже RESTAPI на DropBox и API под корпоративный сервер. А с Indy есть проблемы под Android 6 и выше, - не работает https без шаманства.
Про THTTPServer не знаю. Так что не понятно что вас рассмешило
-
Исправленный код для Берлина и выше:
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;
-
Набросал простенькую программу для создания стилей под все платформы на основе указанного.
Программа только меняет информацию о платформе, никаких других измений со стилем не делает.
К примеру есть стиль для 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.
-
Ну так быстрее будет проверять и удалять эту ошибочную строку через StringList, чем искать что-то другое.
-
2 часа назад, mazayhin сказал:
Просто apk, без каких-либо папок. Ну или через Play Market.
Для iOS необходим Mac и xCode
http://docwiki.embarcadero.com/RADStudio/Tokyo/en/IOS_Mobile_Application_Development
И еще 100$ в год на лицензию разработчика Apple iOS. Без нее будет куча проблем, вплоть до невозможности запустить проект на девайсе заказчика.
-
Мыши плакали, кололись, но продолжали есть кактус... Это я про Токио.
-
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 то все работает.
-
Цитата
До этого реализовал через PHP, с запросом ответом - но это как бэ некомильфо, и работает не очень стабильно
Наоборот это наиболее оптимальный и стабильный вариант. Всю работу выполняет сервер.
Пойду сейчас позову всех наших форумных экстрасенсов и телепатов, - они вам помогут.
-
Только что, krapotkin сказал:
если у нас поток, то вызывается он один раз, следовательно вместо синхронайз лучше просто онтерминейт
Или TThread.Queue
-
Лучше использовать потоки, т.к. сейчас все моб. девайсы имеют многоядерные процессоры.
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
-
Чтобы отправить строку в чужой Intent: Intent.putExtra(TJIntent.JavaClass.EXTRA_TEXT, StringtoJString(AText));
Чтобы получить строку в своем Activity (если кто-то отправил) : var Intent: JIntent; ... Intent := TAndroidHelper.Activity.getIntent;
Text := JStringToString(Intent.getStringExtra( StringToJString(_NAME_) ) );
-
А как это делается в Java ? Я обычно ищу пример на Java и перевожу в Delphi
-
У меня в одном проекте больше тысячи сразу грузится в ListView (вся база) - без тормозов вообще. При этом каждый Item состоит текстового поля и картинки. Скролл работает без тормозов, даже на самых простых телефонах - проверял на HTC с Android 4.0.1 (512 мб)
Конечно ListView гораздо быстрее работает, но есть ньюансы реализации, хотя они все освещены на этом форуме.
-
А в чем сложность?
TVertScrollBox как основа (Parent), создаешь Tedit в runtime под самым последним TEdit.
Кстати, назовите тему как то ближе к сути вопроса.
Зачем такой велосипед с фреймами. Это ж лишние тормоза.
[Отклонение] TFloatAnimation и TFrame
в TFloatAnimation
Опубликовано · Изменено пользователем ENERGY
Столкнулся с такой же проблемой, если любой компонент (в моем случае TImage ) лежит на фрейме не работает TFloatAnimation вообще.
Решение:
При создании фрейма нужно указывать Self формы, а не nil.
: MyFrame := TMyFrame.Create(Self);