MTK MMI一些總結

2021-04-25 14:20:34 字數 3451 閱讀 9363

1 繪製字串

宣告標頭檔案「gui.h」

設定字型:

void (*pixtel_ui_set_font)(ui_font_type f)=null;

引數f 為需要使用的字型,可以使用系統已經有的字型如:mmi_sublcd_font. 也可以自己定義字型。使用 stfontattribute ***x 定義自己需要的字型。

在 解密mtk文件/mmi/176x220gprs.pdf中有關於中文字型的一些定義

設定文字顯示位置:

void (*pixtel_ui_move_text_cursor)(s32 x,s32 y)=null;

引數 x,y為將要顯示字串的左上角座標。

設定文字顏色:

void (*pixtel_ui_set_text_color)(color c)=null;

color 為乙個結構體。用於定義rgb顏色和alpha通道

typedef struct _color

color;

列印文字:

void (*pixtel_ui_print_text)(ui_string_type_text) = null;

需要注意的是字串前面都需要加l。

2 繪製

如何製作透明背景:

1 首先利用photoshop設計乙個bmp格式

2 [影象][模式]將其顏色改變為索引色

3 [影象][模式]開啟該的顏色表。將第一格的顏色值改為該上沒有用到過的其他顏色。然後確定儲存。

4 將該匯入mtk工程後,該覆蓋在其他上時,背景透明。

mtk不支援png,位於images目錄下的資源檔案不支援jpeg,同樣不支援png。

繪製:void (*pixtel_ui_show_transparent_image)(s32 x,s32 y,ui_image_type i,ui_transparent_color_type t)=null;

該函式以x,y為座標繪製,同時指定顏色t為透明色,即t顏色不顯示,當作透明。

例如在原點位置顯示id為img_global_test的。

pixtel_ui_show_transparent_image(0, 0, get_image(img_global_test), pixtel_ui_transparent_color(255,255,203));

接著,需要設定緩衝區用於顯示在螢幕上,這是必不可少的。

pixtel_ui_blt_double_buffer(0,0,ui_device_width-1, ui_device_height-1);

關於繪製還有很多種方法,

詳細見 解密mtk文件/mmi design doc/pixtel_ui_programmers_manual.pdf

3關於觸控螢幕

1 編寫觸控筆按下時的控制代碼函式,包含使用者所需要的一些響應。例如我們讓觸控筆按下時候,將變數touch_pressed設定為true,同時,pos紀錄了觸控筆落在螢幕上面的座標。

void mmi_pen_down_hdlr(mmi_pen_point_struct pos)

2 呼叫系統函式 mmi_wgui_register_pen_down_handler(mmi_pen_hdlr pen_down_hdlr)

註冊前面的觸控筆按下的控制代碼函式:

mmi_wgui_register_pen_down_handler(mmi_pen_down_hdlr)

然後,觸控筆就可以生效。當我們點下觸控筆時候,touch_pressed為真。

3 對於觸控筆釋放也是一樣的道理,也需要設定釋放的函式mmi_pen_up_hdlr,然後呼叫

mmi_wgui_register_pen_up_handler(mmi_pen_up_hdlr)註冊前面的釋放函式。

在這兩個系統函式中的引數中,mmi_pen_hdlr為函式指標。利用函式指標可以實現乙個通用的函式來實現各種專用的功能。

typedef void (*mmi_pen_hdlr)(mmi_pen_point_struct pos);

4 關於按鍵

類似於觸控筆操作,首先編寫乙個按鍵函式,裡面實現使用者所期望的功能。例如

void key_2_press(void)

然後呼叫系統函式

setkeyhandler(key_2_press,key_2,key_event_down);註冊該函式,並將2號鍵,事件型別與該函式繫結。

作了上面工作,2號鍵就能夠在mtk裡起作用。

5 關於categoryscreen()

在mtk中有各種型別的螢幕顯示。它們彼此的結構一樣,區別就在於之間的標題,按鍵,以及螢幕上面的一些控制項是否相同。

showcategoryxscreen(argument list)

經常用到的這個函式,由應用程式呼叫。引數列表裡面指明了該螢幕中左軟鍵和右軟鍵,標題顯示等等。還可以指明一些特殊的元素如文字輸入框,列表項。

以下面的函式為例:

void showcategory221screen(        u16                        title,

u16                        title_icon,

u16                        left_softkey,

u16                        left_softkey_icon,

u16                        right_softkey,

u16                        right_softkey_icon,

gdi_color        background_color,

funcptr                redraw_content_callback        )

title 用於指明該螢幕上的標題欄的名稱。

title_icon 該標題欄所用到的圖示

left_softkey 左軟鍵的字串id

left_softkey_icon 左軟鍵的圖示id

right_softkey右軟鍵的字串id

right_softkey_icon 右軟鍵的圖示id

background_color 背景顏色

redraw_content_callback 用於重畫的**函式指標,一般在主題更新時候由框架呼叫,一般設定為0

6 關於timer和迴圈

在mtk中也可以實現類似於j2me中的迴圈。

首先編寫乙個函式,用於規定的延遲時間到期時候的呼叫。例如

cyclic_timer();

然後呼叫函式 pixtel_ui_start_timer(500,cyclic_timer);

需要注意的是,我們需要將pixtel_ui_start_timer(500,cyclic_timer);寫入到cyclic_timer()中,這樣,每當500毫秒到期時候,函式將呼叫自身,再次進入到該函式,從而實現迴圈,我們在裡面可以新增條件判斷,來實現跳出迴圈等工作。

vmware一些總結

1,用pe在vmware上裝完系統,無法從硬碟啟動,修復mbr引導也沒用。其實是沒有把c盤設定成活動分割槽,用任意工具把c盤設定成活動分割槽即可。俺選了diskgenius。2,vmware進入bios不太容易,主要原因是啟動太快,沒時間按f2。解決辦法 開啟windows xp professio...

CSS一些總結

1.display block 塊元素,預設寬度為100 可以設定元素的寬高,預設佔滿一行。塊元素包括div,h1 h6,form,table,ul,ol等 inline 行內元素,預設寬度為內容的寬度,width和height對inline元素無效,margin top和bottom對行內元素無效...

一些的總結

大學的教育模式是先教你原理,在教你怎麼用工具 而缺少樂趣,一般大牛 的思維模式都是這樣 先知道原理 在用工具 其實對於普通人來講,一般都是 知道原來還有這種利用方式?到 我要用工具來提高效率 廣用效率還不行 我要知道原理 誒好像現在工具滿足不了我的需要了,我要自己新增規則 新增的規則 以及滿足不了我...