Панель прогресса не анимируется на реальном устройстве

#tizen #tizen-native-app

#tizen #tizen-native-app

Вопрос:

Я создал неопределенную панель прогресса для Tizen 4.0, используя родной язык C.:

 Evas_Object* progressbar = elm_progressbar_add(parent);
evas_object_size_hint_align_set(progressbar, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(progressbar, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);

elm_object_style_set(progressbar, "process/small");
elm_progressbar_pulse_set(progressbar, EINA_TRUE);
elm_progressbar_pulse(progressbar, EINA_TRUE);

elm_object_part_content_set(parent, "elm.progress", progressbar);
evas_object_show(progressbar);
 

Вот «официальная» документация: https://docs.tizen.org/application/native/guides/ui/efl/wearable/component-progressbar .

Если я выполню приведенный выше код на своем эмуляторе (x86, Tizen 4.0), я получу ожидаемый результат:

введите описание изображения здесь

Однако при запуске на часах он просто не запускается:

введите описание изображения здесь

Что не так с приведенным выше кодом? Я ничего не думаю. Но в их документации снова и снова не хватает информации.

Обновить

Проблема сохраняется, только если вы хотите сделать это из обработчика событий:

 elm_layout_signal_callback_add(layout, "mouse,clicked,1", "elm.*", show_loader_cb, layout);

static void show_loader_cb(void* data, Evas_Object* object, const char* emission, const char* source) { 
  Evas_Object* parent = reinterpret_cast<Evas_Object*>(data);
  //PUT HERE THE CODE ABOVE 
}
 

Ответ №1:

Похоже, с вашим кодом проблем нет.

Но прогресс, который не работает (2-е изображение), является общим состоянием с

elm_progressbar_pulse(obj, EINA_FALSE);

Проверьте этот пункт еще раз.

И я не совсем уверен в ваших намерениях в части обработчика событий.

Вы когда-нибудь хотели добавлять прогресс и работу при нажатии на макет?

Если да, попробуйте это,

evas_object_event_callback_add(layout, EVAS_CALLBACK_MOUSE_DOWN, show_loader_cb, layout);

Я не видел ваш полный код, но я предполагаю, что show_loader_cb не был вызван через обратный вызов.