DM模板使用心得

news/2024/6/18 4:32:16 标签: list, mtk, 工作, string, layer, null

MTK平台学习--DM模板使用心得

DM模板的一般使用方法见某牛人所著<<MMI实例培训教程>>,这里仅讨论一些零碎的使用心得

1.   很多ShowCategoryXXXScreen函数都调用ShowListCategoryScreen,使用改函数可简化模板的绘制工作,
     现在分析一下ShowListCategoryScreen到底做了什么工作:
     (1)  设置Title
          将title文本及图标数据-->全局变量MMI_title_string,MMI_title_icon
     (2)  shortcut
     (3)  Softkeys
          实际上是完成了对左右软键的重画
     (4)  List
          编辑菜单样式
          注册方向键
          ......

2.   新建DM模板
Step1.  Wgui_categories_enum.h
        位置: ../plutommi/gui/gui_src/Wgui_categories
        新建一个模板ID: MMI_CATEGORYWTXYZ2_ID
Step2.  CustCoordinates.c
        位置: ../plitommi/customer/custresource/CustCoordinates.c
        A. 在g_categories_controls_map[]中加入:
           {MMI_CATEGORYWTXTZ2_ID,(U8*)categoryWTXYZ2,(S16*)coordinate_setWTXYZ2,NULL}
        B. 创建新模板的控件数组
           const U8 categoryWTXYZ2[]=       
           {
                5,
                DM_BASE_LAYER_START,
                DM_SCR_BG,
                DM_BASE_CONTROL_SET1,
                DM_SINGLELINE_INPUTBOX1,
                DM_LIST1
           };
        C. 创建新模板的属性集
           const S16 coordinate_setWTXYZ2[]=
           {
                DM_FULL_SCREEN_COORDINATE_FLAG,
                DM_CUSTOM_DEFINE_INPUTBOX,      // should be defined
                DM_CUSTOM_DEFINE_LIST           // should be defined
           };
Step3.  Wgui_draw_manager.h
        位置: ../plutommi/gui/gui_inc/Wgui_draw_manager.h
        在mmi_dm_control_ids_enum枚举中定义新的属性: DM_CUSTOM_DEFINE_INPUTBOX, DM_CUSTOM_DEFINE_LIST
Step4.  Wgui_draw_manager.c
        位置: ../plutommi/gui/gui_src/Wgui_draw_manager.c
        更新函数 dm_get_coordinates( )
        在dm_get_coordinates( )增加对新属性的处理:

    else if( *UICtrlAccessPtr_p==DM_CUSTOM_DEFINE_LIST )
    {
        dm_coordinate_info->s16X = (S16)MMI_custom_listbox_x;
        dm_coordinate_info->s16Y = (S16)MMI_custom_listbox_y;
        dm_coordinate_info->s16Width = (S16)MMI_custom_listbox_width;
        dm_coordinate_info->s16Height = (S16)MMI_custom_listbox_height;
        dm_coordinate_info->Flags = DM_NO_FLAGS;
        UICtrlAccessPtr_p ++ ;
     }
     else if( *UICtrlAccessPtr_p==DM_CUSTOM_DEFINE_INPUTBOX )
    {
        dm_coordinate_info->s16X = (S16)MMI_custom_inputbox_x;
        dm_coordinate_info->s16Y = (S16)MMI_custom_inputbox_y;
        dm_coordinate_info->s16Width = (S16)MMI_custom_inputbox_width;
        dm_coordinate_info->s16Height = (S16)MMI_custom_inputbox_height;
        dm_coordinate_info->Flags = DM_SINGLE_LINE_INPUTBOX_SPECIFIC_HEIGHT;
        UICtrlAccessPtr_p ++ ;
     }

Step5.  Wgui.h
        位置: ../plutommi/gui/gui_inc/Wgui.h
        定义新的属性信息: MMI_custom_listbox_x, MMI_custom_listbox_y, ...
Step6.  Wgui_category.c
        位置: ../sw/plutommi/gui/gui_src/Wgui_category.c
        A. 编写模板相关函数
        B. 添加用户事件定义接口(wgui_category.h) 


http://www.niftyadmin.cn/n/1737727.html

相关文章

好的存储模型

好的存储模型&#xff0c;就是尽可能多的做到以下几点: –尽可能走内存 –尽可能将一次要查询到的数据物理的放在一起 –通过合理的数据冗余&#xff0c;减少走网络的次数 –合理并行提升响应时间 –读取数据瓶颈&#xff0c;加slave节点解决 –写瓶颈&#xff0c;用规则进行切…

MTK平台学习--进入和退出屏幕模板程序

MTK平台学习&#xff0d;&#xff0d;进入和退出屏幕模板程序 // 文件名: EntryAndExitFunciton// 描述 : 进入和退出屏幕模板程序 // 函数 : EntryNewMenu// ExitMyAppMenu// ExitNewMenu // 以下是模板中使用的ID// 菜单ID: MENU_ID_MYAPP_NEW// 图…

如何带团队?

曾国藩&#xff1a;“轻财足以聚人&#xff0c;律己足以服人&#xff0c;量宽足以得人&#xff0c;身先足以率人”

对MTK的层简单封装以方便使用

MTK的很多有关图层显示的函数&#xff0c;座标都是采用的相对座标&#xff0c;这一点在对于需要频繁改变座标的场合和一些复杂的界面设计中&#xff0c;使用起来十分的不方便。 我们可以采用一些方法对这些函数进行简单封装&#xff0c;以符合我们的使用习惯。 比如下面的函数…

【如何增加个人气场】

1&#xff0c;要有一个坚定的目标。 2&#xff0c;多交令自己成长的朋友。 3&#xff0c;正面思维。 4&#xff0c;多走路&#xff0c;多静坐。 5&#xff0c;勤奋&#xff0c;坚韧。 6&#xff0c;寡言&#xff0c;每一句话都要有用&#xff0c;有重量。喜怒不形于色&…

MTK 图层701157759

在某些频繁更新的界面中&#xff0c;如果某些显示元素一直没有变化&#xff0c;我们就可以将这些元素提取出来画到一个模拟的屏幕中&#xff0c;而将一些需要更新的元素画到另外的模拟屏幕&#xff0c;而后将两个模拟屏幕合并到真正的屏幕上&#xff0c;这样我们就节省了不变元…

关于研发管理的几点想法

LDI的几点心得&#xff1a; 1&#xff0c;更加深入到产品和业务的商业模式中&#xff0c;积极的参与讨论。 2&#xff0c;对不同的人采取不同的做法&#xff0c;知人善用&#xff0c;用人用在长处上&#xff0c;需要有软硬的两套。 3&#xff0c;激发员工的热情&#xff1b…

DNS解析经验

DNS解析有有个缺陷&#xff0c;每个单独域名里写在最前面的那个ip&#xff0c;它被轮询到的概率要比同组的服务器高10%&#xff0c;而且随着同组服务器的增多&#xff0c;这个差距会变大。所以最解析时候&#xff0c;每个IDC最好把硬件性能最好的服务器ip放在最前面。