Posted on 2009-12-19 10:32
~William~ 閱讀(478)
評(píng)論(0) 編輯 收藏 引用 所屬分類(lèi):
MTK_MMI
待機(jī)界面如何高仿NOKIA N73
如何仿N73的經(jīng)典界面
1.1 狀態(tài)欄
狀態(tài)欄包含電池電量指示,信號(hào)指示,日期時(shí)間顯示,運(yùn)營(yíng)商名字和各個(gè)狀態(tài)圖標(biāo)顯示。
電池電量顯示:
圖標(biāo)ID為STATUS_ICON_BATTERY_STRENGTH
位于MainLCD\IdleScreen\Statusicons\battery 注意的是圖標(biāo)保證5幀。關(guān)于電量顯示的控制位于
文件PoweronCharger.c
函數(shù)BatteryStatusIndication 根據(jù)當(dāng)前的電量值設(shè)置顯示的幀數(shù)。
該圖標(biāo)在狀態(tài)欄的坐標(biāo)
Wgui_status_icons.c---函數(shù)arrange_status_icons()
MMI_status_icons[STATUS_ICON_BATTERY_STRENGTH].y = 0;
MMI_status_icons[STATUS_ICON_BATTERY_STRENGTH].x=220;
信號(hào)指示圖標(biāo):
圖標(biāo)ID 為 STATUS_ICON_SIGNAL_STRENGTH
位于MainLCD\IdleScreen\Statusicons\signal
文件 NetWorkFunctions.c
函數(shù)ChangeStatusIconLevel根據(jù)當(dāng)前的信號(hào)值設(shè)置顯示的圖片幀數(shù)。
該圖標(biāo)在待機(jī)界面的坐標(biāo):
文件Wgui_status_icons.c---函數(shù)arrange_status_icons()
MMI_status_icons[STATUS_ICON_SIGNAL_STRENGTH].y = 0;
MMI_status_icons[STATUS_ICON_SIGNAL_STRENGTH].x=3;
時(shí)間和日期:
文件:Wgui_datetime.c
函數(shù):show_main_LCD_date_time.設(shè)置日期,星期,時(shí)間的顯示坐標(biāo)。
注意的是:在函數(shù)hide_main_LCD_date_time中需要根據(jù)前面各個(gè)對(duì)象的坐標(biāo)重新設(shè)置刷新區(qū)域的坐標(biāo)。并且修改Wgui_categories_idlescreen.c下面的三個(gè)函數(shù)的注冊(cè)函數(shù)(之前屏蔽的)
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);
為了正確的顯示時(shí)間格式(用戶(hù)選擇12小時(shí)制,會(huì)增加AM/PM兩個(gè)字母),在函數(shù)show_main_LCD_date_time. 時(shí)間顯示的clip的地方增加格式判斷 PhnsetGetTimeFormat()。根據(jù)所返回的時(shí)間格式,設(shè)定clip區(qū)域。
網(wǎng)絡(luò)運(yùn)營(yíng)商
文件:Wgui_categories_idlescreen.c
函數(shù)idle_screen_show_network_details() 調(diào)整網(wǎng)絡(luò)運(yùn)營(yíng)商的名字坐標(biāo)
狀態(tài)圖標(biāo)
狀態(tài)圖標(biāo)包括消息接受提示,情景模式,外部電池等。圖標(biāo)的排列位于:
文件:Wgui_status_icons.c
函數(shù):arrange_status_icons()
位于代碼段:
x-=MMI_status_icons[k].width+STATUS_ICON_X_GAP;
實(shí)現(xiàn)圖標(biāo)自右向左的排列。每當(dāng)有新的狀態(tài)產(chǎn)生,圖標(biāo)就向左移動(dòng)排列。
1.2 快捷鍵
設(shè)置待機(jī)界面上各個(gè)快捷方式的坐標(biāo)以及響應(yīng)函數(shù)
文件Wgui_categories_idlescreen.c
函數(shù)setup_touch_idle_screen_shortcut。通過(guò)該函數(shù)設(shè)置各個(gè)快捷鍵圖標(biāo)的坐標(biāo)以及各自的響應(yīng)函數(shù)。
文件 Shortcuts.c
修改如下函數(shù):
ShctExecuteUpKey 功能修改為按鍵上移,高亮快捷鍵第一個(gè)圖標(biāo)或者動(dòng)態(tài)列表項(xiàng)
ShctExecuteDownKey功能修改為按鍵下移,高亮快捷鍵第一個(gè)圖標(biāo)或者動(dòng)態(tài)列表項(xiàng)
ShctExecuteLeftKey功能修改為按鍵左移,高亮左邊模塊,如果已經(jīng)是第一個(gè),則高亮最后一個(gè)
ShctExecuteRightKey功能修改為按鍵右移,高亮右邊模塊,如果已經(jīng)是最后個(gè),則高亮第一個(gè)
函數(shù)ShctExecuteOKKey 根據(jù)高亮的快捷鍵,進(jìn)入對(duì)應(yīng)的模塊。
文件MMI_features_GuiPLUTO.h
MMI_features_GUI.h
可以打開(kāi)或關(guān)閉是否顯示shortcut的宏
__MMI_TOUCH_IDLESCREEN_SHORTCUTS__。
為了同時(shí)顯示快捷鍵和屏幕下方的左右按鍵。需要在函數(shù)ShowCategory33Screen中 屏蔽dm_data.s32flags |= DM_NO_SOFTKEY;
1.3 日歷項(xiàng)以及音樂(lè)播放提示
為了實(shí)現(xiàn)日歷項(xiàng)和音樂(lè)播放曲目的正確顯示,需要在待機(jī)界面增加動(dòng)態(tài)列表
文件Wgui_categories_idlescreen.c
函數(shù)ShowCategory33Screen()
添加動(dòng)態(tài)列表:
create_fixed_icontext_menuitems();
MMI_current_menu_type=LIST_MENU;
associate_fixed_icontext_list();
設(shè)置列表中各個(gè)項(xiàng)的標(biāo)題和圖標(biāo):
init_dynamic_item_buffer(ItemsOfCat33,Cat33GetItemCallback,NULL,UI_dummy_function);
ItemsOfCat33:動(dòng)態(tài)列表中項(xiàng)的個(gè)數(shù)。由當(dāng)前系統(tǒng)運(yùn)行的程序決定。
Cat33GetItemCallback:該回調(diào)函數(shù)注冊(cè)各個(gè)項(xiàng)的標(biāo)題和圖標(biāo)。
在上述函數(shù)中,首先對(duì)日歷項(xiàng)的存儲(chǔ)區(qū)進(jìn)行判斷是否有內(nèi)容,如果有內(nèi)容,繼續(xù)判斷該日歷項(xiàng)的日期是否在當(dāng)日,如果是,將該字符串顯示在項(xiàng)中。如果今日有多個(gè)項(xiàng),則顯示在日歷項(xiàng)序列中最早的一個(gè)。如果日歷項(xiàng)的日期不是今日,則顯示“今天無(wú)日歷項(xiàng)”。
文件Todolist.c
函數(shù):TDLDeleteAllTask ()
該函數(shù)的作用是刪除全部的備忘錄日歷項(xiàng)。因此,需要清空記錄緩沖區(qū)的記錄,防止在待機(jī)界面的日歷項(xiàng)仍然顯示。
memset(&g_tdl_cntx.NoteBuff,0,MAX_TODO_LIST_NOTE);
2 綜合
2.1修改每個(gè)新版本的默認(rèn)日期:
文件:Custom_hw_default.c
數(shù)字代表基準(zhǔn)年份的偏移。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
當(dāng)有外部來(lái)電的時(shí)候,進(jìn)入函數(shù)
EntryScrIncomingCallEvent
文件:Wgui_categories_CM.c
函數(shù) ShowMOMTCallScreen 很多通話事件的屏幕都需要進(jìn)入該函數(shù)。可以通過(guò)該函數(shù),查找到各個(gè)通話事件的流程。可以對(duì)已有的屏幕做界面修改。
3.3 撥號(hào)盤(pán)
文件:IdleApp.c
函數(shù):IdleDisableLongPress
由于長(zhǎng)按鍵之后,需要重新注冊(cè)和清楚一些按鍵。而原函數(shù)為了達(dá)到這一效果,又重新調(diào)用了函數(shù)IdleScreenDigitHandler,雖然達(dá)到了目的,但是會(huì)造成第一次按鍵反應(yīng)慢,因此,在IdleDisableLongPress函數(shù)內(nèi)部禁止調(diào)用前一個(gè)函數(shù),將函數(shù)中注冊(cè)和清除的按鍵寫(xiě)在IdleDisableLongPress中。
本文來(lái)自CSDN博客,轉(zhuǎn)載請(qǐng)標(biāo)明出處:http://blog.csdn.net/chenzhp/archive/2009/03/14/3990510.aspx