注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

ADSOM

 
 
 

日志

 
 

MTK矩阵菜单用法  

2011-10-12 10:31:57|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

有次一个客户需要设计一个六宫的矩阵菜单,简单看了一下菜单API,发现也十分简单,使用矩阵菜单使用前要先调用 wgui_fixed_matrix_create_menu初始化,然后调用wgui_fixed_matrix_begin_add_one_item给菜单添加菜单项,使用FOR调用wgui_fixed_matrix_add_one_item添加,再使用configure_fixed_matrix设置每项菜单个数大小.最后使用wgui_fixed_matrix_end_add_one_item结束矩阵菜单设置.剩下就是根据需要对菜单属性设置了.MMI_fixed_icontext_menuitem.flags和MMI_fixed_matrix_menu.flags

void ShowCategory14NewScreen(
        U16 title,
        U16 title_icon,
        U16 left_softkey,
        U16 left_softkey_icon,
        U16 right_softkey,
        U16 right_softkey_icon,
        S32 number_of_items,
        U16 *list_of_items,
        U16 *list_of_icons,
        S32 flags,
        S32 highlighted_item,
        U8 *history_buffer)
{
 /*----------------------------------------------------------------*/
 /* Local Variables                                                */
 /*----------------------------------------------------------------*/
 dm_data_struct dm_data;
 S32 i, ixsize, iysize;

 /*----------------------------------------------------------------*/
 /* Code Body                                                      */
 /*----------------------------------------------------------------*/
 gdi_layer_lock_frame_buffer();
 //没有标题和标题图片

 dm_add_softkey(get_string(left_softkey), get_image(left_softkey_icon), 
get_string(right_softkey), get_image(right_softkey_icon));

// 画背景
     
 wgui_set_wallpaper_on_bottom(MMI_TRUE);


 dm_set_scr_bg_image(MATRIX_MAIN_MENU_1, NULL, -1, -1, 255);
 wgui_fixed_matrix_create_menu(number_of_items, highlighted_item, 0, 
MMI_CATEGORY15_MATRIX_ID, history_buffer);


 wgui_fixed_matrix_begin_add_one_item();
 for (i = 0; i < number_of_items; i++)
 {
  wgui_fixed_matrix_add_one_item(i, (U8*)get_string(list_of_items[i]), 
get_image(list_of_icons[i]));

 }

        #ifdef __MMI_MATRIX_MAIN_MENU_OPTIMIZE__
            /* allocate matrix highlight buffer from SCR ASM */      
            MMI_fixed_matrix_menu.buffer.buf_ptr = (U8*)
applib_mem_screen_alloc(MMI_MAIN_MENU_MATRIX_HIGHLIGHTED_BUF_SIZE);

            MMI_ASSERT(MMI_fixed_matrix_menu.buffer.buf_ptr != NULL);
        #endif /* __MMI_MATRIX_MAIN_MENU_OPTIMIZE__ */

 MMI_fixed_matrix_menu.flags |= UI_MATRIX_MENU_LOOP;

 wgui_fixed_matrix_override_highlight_handler(my_matrix_highlight_handler);

 if (number_of_items > 6)
 {
  ixsize = (MMI_content_width - MMI_fixed_matrix_menu.vbar.width - 6) / 2;
 }
 else
 {
  ixsize = (MMI_content_width - 6) / 2;
 }
 iysize = (MMI_content_height - 6) / 3;

#if 0 //没有图片,不显示图片
 gui_measure_image(get_image(list_of_icons[0]), &ixsize, &iysize);
#endif  

 configure_fixed_matrix(ixsize, iysize, 2, 0);
 wgui_fixed_matrix_end_add_one_item();
 //不显示文本,图片带字串
 MMI_fixed_icontext_menuitem.flags |= UI_MENUITEM_DISABLE_TEXT_DISPLAY;
       MMI_fixed_matrix_menu.flags |= UI_MATRIX_MENU_FOR_MAINMENU;
 gdi_layer_unlock_frame_buffer();

 ExitCategoryFunction = ExitCategory14NewScreen;
 RedrawCategoryFunction = dm_redraw_category_screen;
 GetCategoryHistory = dm_get_category_history;
 GetCategoryHistorySize = dm_get_category_history_size;
 dm_data.s32ScrId = (S32) GetActiveScreenId();
 dm_data.s32CatId = MMI_CATEGORY14_NEW_MATRIX_ID;
 register_fixed_matrix_loop_keys();
 dm_data.s32flags = 0;
 dm_setup_data(&dm_data);
 dm_redraw_category_screen();

}

  评论这张
 
阅读(138)| 评论(2)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017