Native Tizen - 如何删除图像?
Native Tizen - How to remove image?
添加新的 window 并根据 Tizen 开发人员文档 tutorial 弹出它。但是当我在第二个 window 上添加图像时,弹出它后,图像并没有消失。
这是第二个 window 上添加了图片的代码:
static void list_item_doubleclicked_cb(void *data, Evas_Object *obj, void *event_info){
Evas_Object *navi_button;
Evas_Object *nf = data;
Elm_Object_Item *nf_it;
Evas_Object *image = elm_image_add(nf);
evas_object_move(image, 0, 0);
evas_object_resize(image, 400, 300);
evas_object_show(image);
char img_path[128];
char *res_path = app_get_resource_path();
snprintf(img_path, sizeof(img_path), "%s%s%s", res_path, "images/","myImage.png");
elm_image_file_set(image, img_path, NULL);
navi_button = elm_button_add(nf);
elm_object_text_set(navi_button, "Prev");
elm_object_style_set(navi_button, "bottom");
evas_object_smart_callback_add(navi_button, "clicked",
prev_btn_clicked_cb, nf);
nf_it = elm_naviframe_item_push(nf, "Second view", NULL,
NULL, navi_button, NULL);
}
这里的 pop 函数可以清除按钮和第二个 window 标题,但不会清除图像。
所有其他代码与链接教程类似。图像停留在屏幕上。我需要删除它,我该怎么办?
里法特。
基本上Evas 对象不属于任何智能对象父对象。它的生命周期和基本行为独立工作,不受管理。因此,您需要手动控制它。但是,如果将图像对象添加到特定的智能对象父对象,则图像实例可以由其父对象管理。意思是,如果父项被删除,其子项也将被删除。大多数情况下 *Container widget 作为智能对象的父对象。
您创建了一个图像对象 correctly.But 您没有将它放入任何容器中。
Naviframe 被设计为具有容器视图,例如 elm_layout、elm_box、网格、table 等。
您可以在将子项放入容器中时使用其中之一组成视图。因此,当发生 naviframe 弹出时,布局将被 naviframe 删除,并且它的子项(包括您的图像)也将被删除,因为它是容器的子项。
否则,您应该通过显式调用 evas_object_del() 来删除图像对象;
当视图弹出时。或在进一步查看时调用 evas_object_hide() 隐藏它。
希望您能理解我的描述。谢谢
添加新的 window 并根据 Tizen 开发人员文档 tutorial 弹出它。但是当我在第二个 window 上添加图像时,弹出它后,图像并没有消失。
这是第二个 window 上添加了图片的代码:
static void list_item_doubleclicked_cb(void *data, Evas_Object *obj, void *event_info){
Evas_Object *navi_button;
Evas_Object *nf = data;
Elm_Object_Item *nf_it;
Evas_Object *image = elm_image_add(nf);
evas_object_move(image, 0, 0);
evas_object_resize(image, 400, 300);
evas_object_show(image);
char img_path[128];
char *res_path = app_get_resource_path();
snprintf(img_path, sizeof(img_path), "%s%s%s", res_path, "images/","myImage.png");
elm_image_file_set(image, img_path, NULL);
navi_button = elm_button_add(nf);
elm_object_text_set(navi_button, "Prev");
elm_object_style_set(navi_button, "bottom");
evas_object_smart_callback_add(navi_button, "clicked",
prev_btn_clicked_cb, nf);
nf_it = elm_naviframe_item_push(nf, "Second view", NULL,
NULL, navi_button, NULL);
}
这里的 pop 函数可以清除按钮和第二个 window 标题,但不会清除图像。
所有其他代码与链接教程类似。图像停留在屏幕上。我需要删除它,我该怎么办?
里法特。
基本上Evas 对象不属于任何智能对象父对象。它的生命周期和基本行为独立工作,不受管理。因此,您需要手动控制它。但是,如果将图像对象添加到特定的智能对象父对象,则图像实例可以由其父对象管理。意思是,如果父项被删除,其子项也将被删除。大多数情况下 *Container widget 作为智能对象的父对象。
您创建了一个图像对象 correctly.But 您没有将它放入任何容器中。 Naviframe 被设计为具有容器视图,例如 elm_layout、elm_box、网格、table 等。 您可以在将子项放入容器中时使用其中之一组成视图。因此,当发生 naviframe 弹出时,布局将被 naviframe 删除,并且它的子项(包括您的图像)也将被删除,因为它是容器的子项。
否则,您应该通过显式调用 evas_object_del() 来删除图像对象; 当视图弹出时。或在进一步查看时调用 evas_object_hide() 隐藏它。
希望您能理解我的描述。谢谢