awtk
awtk copied to clipboard
界面有平滑动画,按键事件需要两次才能触发
问题1:
主界面:widget_on(win , EVT_KEY_DOWN, main_key_event, win); static ret_t main_key_event(void* ctx, event_t* e) { return_val_if_fail(ctx != NULL && e != NULL, RET_FAIL); widget_t* win = WIDGET(ctx); key_event_t* key_evt = (key_event_t*)e; char key = 0;
key = ui_stair_comm_key_to_char(key_evt->key); if(key == ‘1’) { window_open("page1"); }
return RET_OK; }
界面1:widget_on(win , EVT_KEY_DOWN, page1_key_event, win); static ret_t page1_key_event(void* ctx, event_t* e) { return_val_if_fail(ctx != NULL && e != NULL, RET_FAIL); widget_t* win = WIDGET(ctx); key_event_t* key_evt = (key_event_t*)e; char key = 0;
key = ui_stair_comm_key_to_char(key_evt->key); if(key == ‘#’) { window_close(win); }
return RET_OK; }
page1的xml里有anim_hint="htranslate"属性
操作:按下按键“1”,进入界面1,需要按两下“#”才能退出,然后需要按下两次“1”才能进入界面1,之后每次都需要按2次才能进入界面1以及退出,如果不设置动画属性,就没有问题,如果设置成EVT_KEY_UP监听,这种情况会好很多
问题2(待定,不清楚原因,不知道是不是也是动画属性的原因): dialog设置了EVT_KEY_DOWN或者EVT_KEY_UP事件的监听:widget_on(dialog, EVT_KEY_DOWN, dialog_key_event, dialog);,有时候弹窗dialog后,dialog_key_event无法监听到按键事件。
1.自己写一个dialog界面是啥意思,我用的是dialog_open+dialog_modal创建模态对话框的,而且弹框dialog这个很多界面都可以弹出。 2.我把所有界面的按键事件都换成EVT_KEY_UP就可以了,但是唯独dialog弹窗里可能还是需要点击两下
dialog之前也遇到过,给你个建议,不要用系统的diakog,它本身应该是独立于主ui的管理的(或者是阻塞的?忘了),可能会导致焦点异常等情况,我们都是自己写了个dialog界面方便管理,也可以在需要的界面上自己写一组组合控件,不需要dialog的时候就隐藏起来,需要的时候就显示
就是写一个普通界面,显示效果和系统的dialog一致,背景色设置为透明。