powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / FMX, android, вращающийся кружок "ожидания"
17 сообщений из 17, страница 1 из 1
FMX, android, вращающийся кружок "ожидания"
    #39789883
Devillio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!

Помогите, пожалуйста.
Приложение через интернет получает сведения и показывает их в listbox. Хочется сделать как у людей - вращающийся кружок по центру, пока приходят данные и заполняется listbox.
Сделал через TTask.Run, делаю видимым layer с arc, нашел в интернетах, работает.
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
  TTask.Run(
    procedure
    var
      arr: array [0 .. 0] of ITask; //в примере было [0..1] )) 

    begin
      try
        TThread.Synchronize(nil,
          procedure
          begin
            layPB.Visible := True; //делаю видимым layer с arc
            layPB.BringToFront;
          end);

        arr[0] := TTask.Run( //запускаю поток для получения данных
          procedure
          var
            ...
          begin
            try
              AP := TStringList.Create;
              AJSONText := idHttpPost('/mobapi/getlist', AP, IsExcepted);
            finally
              AP.Free;
            end;

            if IsExcepted then
            begin
              ...
              Exit;
            end;

            if CheckContentIsJSON(AJSONText) then
              try
                try
                  AJSON := TJSONObject.ParseJSONValue(AJSONText) as TJSONObject;
                  ...
                  TThread.Synchronize(nil, //по идее тут уже arc перестает вращается и это неаккуратно выглядит :)
                    procedure
                    begin
                      try
                        lbListDebtors.BeginUpdate;
                        lbListDebtors.Items.Clear;
                        ... //тут уже заполнение списка

...
        TTask.WaitForAll(arr);

      finally
        TThread.Synchronize(nil,
          procedure
          begin
            layPB.Visible := False;
            if AnErrorMessageAfterPB <> '' then
              ShowMessage(AnErrorMessageAfterPB);
          end);
      end;
    end);


Но: интернет, на котором тестируется, довольно медленный, список, который заполняется, довольно большой, а телефон, на котором тестирую, довольно старый. Для заполнения listbox приходится использовать Synchronize, иначе валятся ошибки (видимо как в windows нельзя заполнять визуальные компоненты из потока). И получается так, что пока работает idHttp - кружок вращается плавно, а потом, когда заполняются данные, кружок стоит. Это все явно не правильно )
Подскажите, как правильно сделать панельку ожидания с плавно вращающимся кружком, без запинаний?

Спасибо!
...
Рейтинг: 0 / 0
FMX, android, вращающийся кружок "ожидания"
    #39789886
goldmi45
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Devillio,

а подскажите, после заполнения списка, поток ещё нужен? Если нет, то наверное лучше дождаться данных из потока и заполнить список не из потока...
...
Рейтинг: 0 / 0
FMX, android, вращающийся кружок "ожидания"
    #39789889
Devillio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
goldmi45, да, так и есть же. В потоке получаем данные (wait крутится плавно), не в потоке данные заполняем (wait не крутится, ждет заполнения). Но список заполняется не мгновенно, почти секунду на моем стааареньком lg leon.
Очень хочется, чтобы wait крутился на всем этапе - от получения до полного заполнения.
...
Рейтинг: 0 / 0
FMX, android, вращающийся кружок "ожидания"
    #39789892
Фотография krapotkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
только если заполнять маленькими порциями через Synchronize. других вариантов в голову не приходит
...
Рейтинг: 0 / 0
FMX, android, вращающийся кружок "ожидания"
    #39789956
Василий 2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, заполнять порциями. Это помимо визуальной отзывчивости поможет избежать ANR.
...
Рейтинг: 0 / 0
FMX, android, вращающийся кружок "ожидания"
    #39789992
Devillio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Василий 2, что такое ANR? Гугл тоже не знает )

Переделал на порционность, перестает работать ListBox.BeginUpdate и ListBox.EndUpdate (я их тоже в отдельных Synchronize запускал). Если их убрать, то да, работает. Чуууточку подергивается, но вращается. Вместо BeginUpdate пришлось использовать Visible := False; иначе видно как каждый Item прогружается.
Но имхо это не так должно делаться. В других приложениях такие задержки красиво ровно без рывков вращаются.
...
Рейтинг: 0 / 0
FMX, android, вращающийся кружок "ожидания"
    #39789998
Cobalt747
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Devillio,

Application Not Responding
Проложение не отвечает - хотите его закрыть?
...
Рейтинг: 0 / 0
FMX, android, вращающийся кружок "ожидания"
    #39789999
Devillio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cobalt747, благодарю
...
Рейтинг: 0 / 0
FMX, android, вращающийся кружок "ожидания"
    #39790094
Василий 2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DevillioВасилий 2, что такое ANR? Гугл тоже не знает )
Какой-то у тебя странный гугл...
...
Рейтинг: 0 / 0
FMX, android, вращающийся кружок "ожидания"
    #39790098
Василий 2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно и скорее всего будет разумнее грузить пачками по нескольку элементов. Что же касается плавности анимации, можно и от обратного пойти - крутить ее в отдельном треде, а в список грузить в основном (не знаю, реализуемо ли такое в Андроид). Все равно анимация модальная.
...
Рейтинг: 0 / 0
FMX, android, вращающийся кружок "ожидания"
    #39790101
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Василий 2,

если ты часто роешься по андроидной доке - гугл это запоминает

У меня, например, это только третья ссылка, а сначала идут

Сбои и ошибки ANR ("Приложение не отвечает") - Cправка - Play ...
https://support.google.com/googleplay/.../6083203?hl...‎
В Play Console можно посмотреть информацию о сбоях приложений и ошибках ANR ("Приложение не отвечает"). Сведения поступают с устройств ...

ANR — Википедия
https://ru.wikipedia.org/wiki/ANR‎
ANR — аббревиатура с рядом значений, в частности: Аккинени Нагесвара Рао (1923—2014) — индийский актёр и продюсер, наиболее влиятельная ...

а DDG, который типа как "не шпионит за вами" и того разнообразнее

Urban Dictionary: ANR/ABF
www.urbandictionary.com/define.php?term=ANR/ABF
ANR/ABF stands for: A Nursing Relationship/Adult Breast Feeding. ANR/ABF refers to a relationship involving sucking milk from the female breast as an expression of close intimacy. Adult Nursing Relationships depend on a stable and long term relationship of the couple, otherwise it is nearly impossible to maintain a steady milk flow.
Dreams of Milk | ABF ANR - Adult Nursing Relationships
dreamsofmilk.com
Dreams of Milk is a community devoted to couples and singles alike that wish to experience the benefits and intimacy of the ANR/ABF lifestyle.
ANR - What does ANR stand for? The Free Dictionary
acronyms.thefreedictionary.com/ANR
UC ANR leadership also supported the establishment of a climate change program team in 2015, with the primary goal of building capacity within UC Cooperative Extension to better serve the public in addressing climate change impacts and adaptation challenges.
Home | Agency of Natural Resources
anr.vermont.gov
To preserve, enhance, restore and conserve Vermont's natural resources and protect human health for the benefit of this and future generations.
...
Рейтинг: 0 / 0
FMX, android, вращающийся кружок "ожидания"
    #39790104
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Василий 2плавности анимации, можно и от обратного пойти - крутить ее в отдельном треде

а её вообще надо крутить???

нельзя просто сделать animated PNG или GIF ?
...
Рейтинг: 0 / 0
FMX, android, вращающийся кружок "ожидания"
    #39790175
Василий 2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ariochа её вообще надо крутить???

нельзя просто сделать animated PNG или GIF ?
А animated PNG или GIF, по-твоему, Пушкин крутит? Те же самые вторичные потоки либо таймер в главном
...
Рейтинг: 0 / 0
FMX, android, вращающийся кружок "ожидания"
    #39790225
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Василий 2,

Ну так это уже ОС будет с теми потоками разбираться с вторичными, нет?

чем самому велосипедить втёмную - использовтаь готовые?
...
Рейтинг: 0 / 0
FMX, android, вращающийся кружок "ожидания"
    #39790254
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Отказаться от использования Synchronize.

Пусть основной поток крутит кружек, ожидая поступления информации от расчетного.
...
Рейтинг: 0 / 0
FMX, android, вращающийся кружок "ожидания"
    #39790810
Василий 2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AriochВасилий 2,

Ну так это уже ОС будет с теми потоками разбираться с вторичными, нет?

чем самому велосипедить втёмную - использовтаь готовые?
Разве что в Андроиде есть готовый компонент/функция "семицветика"... На виндах, емнип, анимации крутились из главного потока
...
Рейтинг: 0 / 0
FMX, android, вращающийся кружок "ожидания"
    #39791042
Devillio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В общем, если кому потребуется:
Лучше использовать ListView, чем ListBox
ListView забайндить с ClientDataSet. Последний без ошибок заполняется из потока.
Делаем DisableControls, EnableControls (эти через Synchronize). А между ними - заполняем.
Работает намного быстрее, кружок крутится плавно :)
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / FMX, android, вращающийся кружок "ожидания"
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]