待机界面如何高仿NOKIA N73
如何仿N73的经典界面【图片】见附件 1.1 状态栏 状态栏包含电池电量指示,信号指示,日期时间显示,运营商名字和各个状态图标显示。 电池电量显示: 图标ID为STATUS_ICON_BATTERY_STRENGTH 位于MainLCD/IdleScreen/Statusicons/battery 注意的是图标保证5帧。关于电量显示的控制位于 文件PoweronCharger.c 函数BatteryStatusIndication 根据当前的电量值设置显示的帧数。 该图标在状态栏的坐标 Wgui_status_icons.c---函数arrange_status_icons() MMI_status_icons[STATUS_ICON_BATTERY_STRENGTH].y = 0; MMI_status_icons[STATUS_ICON_BATTERY_STRENGTH].x=220; 信号指示图标: 图标ID 为 STATUS_ICON_SIGNAL_STRENGTH 位于MainLCD/IdleScreen/Statusicons/signal 文件 NetWorkFunctions.c 函数ChangeStatusIconLevel根据当前的信号值设置显示的图片帧数。 该图标在待机界面的坐标: 文件Wgui_status_icons.c---函数arrange_status_icons() MMI_status_icons[STATUS_ICON_SIGNAL_STRENGTH].y = 0; MMI_status_icons[STATUS_ICON_SIGNAL_STRENGTH].x=3; 时间和日期: 文件:Wgui_datetime.c 函数:show_main_LCD_date_time.设置日期,星期,时间的显示坐标。 注意的是:在函数hide_main_LCD_date_time中需要根据前面各个对象的坐标重新设置刷新区域的坐标。并且修改Wgui_categories_idlescreen.c下面的三个函数的注册函数(之前屏蔽的) set_main_LCD_dt_date_hide_function(cat33_hide_date_display); set_main_LCD_dt_time_hide_function(cat33_hide_time_display); set_main_LCD_day_hide_function(cat33_hide_day_string_display); 为了正确的显示时间格式(用户选择12小时制,会增加AM/PM两个字母),在函数show_main_LCD_date_time. 时间显示的clip的地方增加格式判断 PhnsetGetTimeFormat()。根据所返回的时间格式,设定clip区域。 网络运营商 文件:Wgui_categories_idlescreen.c 函数idle_screen_show_network_details() 调整网络运营商的名字坐标 状态图标 状态图标包括消息接受提示,情景模式,外部电池等。图标的排列位于: 文件:Wgui_status_icons.c 函数:arrange_status_icons() 位于代码段: x-=MMI_status_icons[k].width+STATUS_ICON_X_GAP; 实现图标自右向左的排列。每当有新的状态产生,图标就向左移动排列。 1.2 快捷键 设置待机界面上各个快捷方式的坐标以及响应函数 文件Wgui_categories_idlescreen.c 函数setup_touch_idle_screen_shortcut。通过该函数设置各个快捷键图标的坐标以及各自的响应函数。 文件 Shortcuts.c 修改如下函数: ShctExecuteUpKey 功能修改为按键上移,高亮快捷键第一个图标或者动态列表项 ShctExecuteDownKey功能修改为按键下移,高亮快捷键第一个图标或者动态列表项 ShctExecuteLeftKey功能修改为按键左移,高亮左边模块,如果已经是第一个,则高亮最后一个 ShctExecuteRightKey功能修改为按键右移,高亮右边模块,如果已经是最后个,则高亮第一个 函数ShctExecuteOKKey 根据高亮的快捷键,进入对应的模块。 文件MMI_features_GuiPLUTO.h MMI_features_GUI.h 可以打开或关闭是否显示shortcut的宏 __MMI_TOUCH_IDLESCREEN_SHORTCUTS__。 为了同时显示快捷键和屏幕下方的左右按键。需要在函数ShowCategory33Screen中 屏蔽dm_data.s32flags |= DM_NO_SOFTKEY; 1.3 日历项以及音乐播放提示 为了实现日历项和音乐播放曲目的正确显示,需要在待机界面增加动态列表 文件Wgui_categories_idlescreen.c 函数ShowCategory33Screen() 添加动态列表: create_fixed_icontext_menuitems(); MMI_current_menu_type=LIST_MENU; associate_fixed_icontext_list(); 设置列表中各个项的标题和图标: init_dynamic_item_buffer(ItemsOfCat33,Cat33GetItemCallback,NULL,UI_dummy_function); ItemsOfCat33:动态列表中项的个数。由当前系统运行的程序决定。 Cat33GetItemCallback:该回调函数注册各个项的标题和图标。 在上述函数中,首先对日历项的存储区进行判断是否有内容,如果有内容,继续判断该日历项的日期是否在当日,如果是,将该字符串显示在项中。如果今日有多个项,则显示在日历项序列中最早的一个。如果日历项的日期不是今日,则显示“今天无日历项”。 文件Todolist.c 函数:TDLDeleteAllTask () 该函数的作用是删除全部的备忘录日历项。因此,需要清空记录缓冲区的记录,防止在待机界面的日历项仍然显示。 memset(&g_tdl_cntx.NoteBuff,0,MAX_TODO_LIST_NOTE); 2 综合 2.1修改每个新版本的默认日期: 文件:Custom_hw_default.c 数字代表基准年份的偏移。8代表2008。月份和天同理 const kal_uint8 DEFAULT_HARDWARE_YEAR = 8; const kal_uint8 DEFAULT_HARDWARE_MON = 1; const kal_uint8 DEFAULT_HARDWARE_DAY = 1; 2.2 通话 文件:CallManagementIncoming.c 当有外部来电的时候,进入函数 EntryScrIncomingCallEvent 文件:Wgui_categories_CM.c 函数 ShowMOMTCallScreen 很多通话事件的屏幕都需要进入该函数。可以通过该函数,查找到各个通话事件的流程。可以对已有的屏幕做界面修改。 3.3 拨号盘 文件:IdleApp.c 函数:IdleDisableLongPress 由于长按键之后,需要重新注册和清楚一些按键。而原函数为了达到这一效果,又重新调用了函数IdleScreenDigitHandler,虽然达到了目的,但是会造成第一次按键反应慢,因此,在IdleDisableLongPress函数内部禁止调用前一个函数,将函数中注册和清除的按键写在IdleDisableLongPress中。 |