需求:有些双模项目,左软件与send2键共用。在idle界面时要求按send2键(即LSK)直接拨号,此时真正左软件的功能只有通过center键来实现。但是LSK的标签仍然显示在屏幕的左下方,引起误解。因此,在拨号界面可以把LSK的标签往中间位置移动。
1.有些screen id,需要同时SHOW LSK and RSK,于是在dm_redraw_category_screen()中获取screen模板ID时,对于LSK/RSK就是DM_BUTTON_BAR1,直接使用一个函数:dm_setup_and_draw_button_bar()就可以SHOW出来了。
2.有些screen id,只需要LSK或者只需要RSK,因此在dm_setup_and_draw_button_bar()中获取模板ID时,可能只有DM_LSK或者DM_RSK,因此只需要调用dm_setup_and_draw_left_softkey()SHOW出左软件,或者dm_setup_and_draw_right_softkey()SHOW出右软件。
3.以全部显示LSK,RSK函数dm_setup_and_draw_button_bar()为例:
在开机后,MMI_softkeys[]中值就是设置好的。在SHOW具体的SCREEN时,共4个步骤:
(1) 从模板的属性集中获取尺寸;
(2) 利用获取的尺寸调用move_softkey()修改MMI_softkeys[]中的X,Y;
(3) resize_softkey()调整MMI_softkeys[]尺寸;
(4) show_softkey()
因此,如果需要移动RSK的标签位置,利用Screen ID作为判断条件,重新move_softkey( ),参数设为自己需要的标签。比如移动到中间位置:
if (YOU_SCREEN_ID == GetActiveScreenId())
move_softkey((UI_DEVICE_WIDTH-MMI_SOFTKEY_WIDTH)/2, 200, MMI_LEFT_SOFTKEY);