我正在关注 Tizen 开发者网站上的本教程。
我无法理解将正在讨论的代码片段的确切位置。从教程的呈现方式来看,它们并没有真正告诉您哪些代码在哪里。已经做了好几天了。
最终的 .c 文件应该是什么样子?
有人可以帮忙吗?
我正在关注 Tizen 开发者网站上的本教程。
我无法理解将正在讨论的代码片段的确切位置。从教程的呈现方式来看,它们并没有真正告诉您哪些代码在哪里。已经做了好几天了。
最终的 .c 文件应该是什么样子?
有人可以帮忙吗?
请检查以下代码,这将帮助您理解完整的原生 Webview 示例:
#include "webviewexample.h" // EWK Webkit 需要的头文件 #include "EWebKit.h" typedef 结构应用程序数据 { Evas_Object *赢; Evas_Object *符合; Evas_Object *标签; Evas_Object *入口; Evas_Object *web_view; Evas_Object *back_button; Evas_Object *forward_button; } 应用数据_s; 静态空白 win_back_cb(void *data, Evas_Object *obj, void *event_info) { appdata_s *ad = 数据; /* 让窗口进入隐藏状态。*/ elm_win_iconified_set(ad->win, EINA_TRUE); } 静态空白 btn_go_cb(void *data, Evas_Object *obj, void *event_info) { appdata_s* 广告 = 数据; ewk_view_url_set(ad->web_view, elm_object_text_get(ad->entry) ); } 静态空白 btn_prev_cb(void *data, Evas_Object *obj, void *event_info) { appdata_s* 广告 = 数据; 如果(ewk_view_back_possible(广告->web_view)== EINA_TRUE) ewk_view_back( 广告->web_view ); } 静态空白 btn_next_cb(void *data, Evas_Object *obj, void *event_info) { appdata_s* 广告 = 数据; 如果(ewk_view_forward_possible(广告->web_view)== EINA_TRUE) ewk_view_forward(广告->web_view); } 静态空白 view_focus_set(appdata_s *ad, Eina_Bool 焦点) { // 我们从 elm 焦点模型中窃取焦点并开始做事 // 在这里手动,所以 elm 现在不知道发生了什么。告诉榆树它的 // 顶级 UI 组件是不聚焦的,所以 elm 放弃了焦点 elm_object_focus_set(elm_object_top_widget_get(ad->win), EINA_FALSE); evas_object_focus_set(ad->web_view, 焦点); }; 静态空白 on_mouse_down(void *data, Evas *e, Evas_Object *obj, void *event_info) { appdata_s* 广告 = 数据; Evas_Event_Mouse_Down *ev= (Evas_Event_Mouse_Down *)event_info; 如果(ev->按钮== 1) view_focus_set(广告,EINA_TRUE); } 静态空白 my_table_pack(Evas_Object *table, Evas_Object *child, int x, int y, int w, int h) { evas_object_size_hint_align_set(孩子,EVAS_HINT_FILL,EVAS_HINT_FILL); evas_object_size_hint_weight_set(孩子,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND); elm_table_pack(table, child, x, y, w, h); evas_object_show(孩子); } 静态空白 create_base_gui(appdata_s *ad) { /* 设置策略在最后一个窗口关闭时退出 */ elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED); /* 窗户 */ ad->win = elm_win_util_standard_add(PACKAGE, PACKAGE); elm_win_autodel_set(ad->win, EINA_TRUE); int rots[4] = { 0, 90, 180, 270 }; elm_win_wm_rotation_available_rotations_set(ad->win, (const int *)(&rots), 4); eext_object_event_callback_add(ad->win, EEXT_CALLBACK_BACK, win_back_cb, ad); /* 符合 */ /*ad->conform = elm_conformant_add(ad->win); elm_win_indicator_mode_set(ad->win, ELM_WIN_INDICATOR_SHOW); elm_win_indicator_opacity_set(ad->win, ELM_WIN_INDICATOR_OPAQUE); evas_object_size_hint_weight_set(ad->conform, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); elm_win_resize_object_add(ad->win, ad->conform); evas_object_show(ad->conform);*/ /* 标签*/ /*ad->label = elm_label_add(ad->conform); elm_object_text_set(ad->label, "Hello EFL"); evas_object_size_hint_weight_set(广告->标签,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND); elm_object_content_set(ad->conform, ad->label); evas_object_show(ad->label);*/ { /* 放置表格的框,以便我们可以底部对齐表格 * 窗口将拉伸所有调整大小的对象内容以赢得大小 */ Evas_Object *box = elm_box_add(ad->win); evas_object_size_hint_weight_set(框,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND); elm_win_resize_object_add(ad->win, box); evas_object_show(框); /* 桌子 */ Evas_Object *table = elm_table_add(ad->win); /* 使表格同质 - 每个单元格的大小都相同 */ elm_table_homogeneous_set(表,EINA_TRUE); /* 设置 10 像素的填充乘以 UI 的比例因子 */ elm_table_padding_set(table, 5 * elm_config_scale_get(), 10 * elm_config_scale_get()); /* 让表格子分配区域在框内展开 */ evas_object_size_hint_weight_set(表,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND); /* 将表格设置为填充宽度但与框的底部对齐 */ evas_object_size_hint_align_set(表,EVAS_HINT_FILL,EVAS_HINT_FILL); elm_box_pack_end(盒子,桌子); evas_object_show(表); { /* 入口 */ ad->entry = elm_entry_add(ad->win); elm_entry_scrollable_set(ad->entry, EINA_TRUE); eext_entry_selection_back_event_allow_set(ad->entry, EINA_TRUE); elm_object_text_set(ad->entry, "http://www.tizen.org"); my_table_pack(table, ad->entry, 0, 0, 3, 1); /* 按钮 1 */ Evas_Object *btn = elm_button_add(ad->win); elm_object_text_set(btn,“上一个”); evas_object_smart_callback_add(btn, "点击", btn_prev_cb, ad); my_table_pack(table, btn, 0, 1, 1, 1); /* 按钮 2 */ btn = elm_button_add(ad->win); elm_object_text_set(btn,“去”); evas_object_smart_callback_add(btn, "点击", btn_go_cb, ad); my_table_pack(table, btn, 1, 1, 1, 1); /* 按钮 3 */ btn = elm_button_add(ad->win); elm_object_text_set(btn, "下一个"); evas_object_smart_callback_add(btn,“点击”,btn_next_cb,广告); my_table_pack(table, btn, 2, 1, 1, 1); /* 网络视图 */ Evas *evas = evas_object_evas_get(ad->win); 广告->web_view = ewk_view_add(evas); ewk_view_url_set(ad->web_view, elm_object_text_get(ad->entry) ); //处理鼠标事件 evas_object_event_callback_add(ad->web_view, EVAS_CALLBACK_MOUSE_DOWN, on_mouse_down, ad); my_table_pack(table, ad->web_view, 0, 2, 3, 8); } } /* 设置基本 gui 后显示窗口 */ evas_object_show(ad->win); } 静态布尔 应用程序创建(无效*数据) { /* 钩子在主事件循环开始之前采取必要的行动 初始化 UI 资源和应用程序的数据 如果此函数返回 true,则应用程序的主循环开始 如果此函数返回 false,则应用程序终止 */ appdata_s *ad = 数据; create_base_gui(广告); 返回真; } 静态空白 app_control(app_control_h app_control, void *data) { /* 处理启动请求。*/ } 静态空白 app_pause(无效*数据) { /* 当应用程序变得不可见时采取必要的措施。*/ } 静态空白 app_resume(无效*数据) { /* 当应用程序变得可见时采取必要的行动。*/ } 静态空白 app_terminate(无效*数据) { /* 释放所有资源。*/ } 静态空白 ui_app_lang_changed(app_event_info_h event_info, void *user_data) { /*APP_EVENT_LANGUAGE_CHANGED*/ 字符 *locale = NULL; system_settings_get_value_string(SYSTEM_SETTINGS_KEY_LOCALE_LANGUAGE, &locale); elm_language_set(语言环境); 免费(语言环境); 返回; } 整数 主要(int argc,char *argv[]) { appdata_s 广告 = {0,}; memset(&ad, 0x00, sizeof(appdata_s)); int ret = 0; ui_app_lifecycle_callback_s event_callback = {0,}; memset(&event_callback, 0x00, sizeof(ui_app_lifecycle_callback_s)); app_event_handler_h 处理程序[5] = {NULL, }; event_callback.create = app_create; event_callback.terminate = app_terminate; event_callback.pause = app_pause; event_callback.resume = app_resume; event_callback.app_control = app_control; ui_app_add_event_handler(&handlers[APP_EVENT_LANGUAGE_CHANGED], APP_EVENT_LANGUAGE_CHANGED, ui_app_lang_changed, &ad); ret = ui_app_main(argc, argv, &event_callback, &ad); 如果(ret!= APP_ERROR_NONE){ dlog_print(DLOG_ERROR, LOG_TAG, "app_main() 失败。err = %d", ret); } 返回 ret; }
您可以查看链接以了解您的理解: Tizen Mobile 2.3 WebViewer Example
我希望这可以帮助你。