MTK主题修改
来源:互联网 发布:中文电子图书数据库有 编辑:程序博客网 时间:2024/05/22 16:50
/*软件版本0852*/
先看Wgui的初始化,在Wgui.c文件wgui_init(void)函数。里面有
set_MMI_theme((MMI_theme*) MMI_themes[0]);
gui_initialize_default_themes();
看set_MMI_theme函数的参数MMI_themes[0],搜索它,找到是在StandaloneRes.c文件里定义的,此文件里有函数InitializeResourceVariables()对其赋值,是个custpack_header的mmi_themes变量,且被强制转换成(CUSTPACK_THEME_HEADER*)这个类型,此类型是个结构,结构里有mmi_themes这个变量,那我们继续搜索CUSTPACK_THEME_HEADER,在ThemeRes.c文件里我们看到一个mtk_theme_header变量,和刚才的custpack_header似乎有点关系,看这个变量的类型CUSTPACK_THEME_HEADER,联系下刚才的赋值。。。,我们看这个变量的初始化,第二个参数mmi_themes的值是mtk_MMI_themes,再看mtk_MMI_themes,是个数组,找到定义,总算找到根了,这个数组值就是一些主题变量。
下面是一些常用主题修改时要修改的一些变量:
UI_filled_area *scrollbar_background_filler;//滚动条背景
UI_filled_area *scrollbar_indicator_filler;//滚动条
UI_filled_area *list_selected_item_filler;//57screen选择框等控件
UI_filled_area *popup_description_background_filler;//list菜单hint框
UI_filled_area *inline_edit_focussed_filler;//57screen编辑框
UI_filled_area *PIN_inputbox_background_filler;//PIN输入框
UI_filled_area *small_list_menu_normal_filler;//级联菜单(pop-up式菜单,即选项菜单)背景
UI_filled_area *small_list_screen_border_filler;//级联菜单(pop-up式菜单,即选项菜单)边框
UI_filled_area *menuitem_single_line_highlight_filler;//2级菜单情景模式屏幕+3级和多级菜单高亮,不包括相册屏幕、弹出式菜单等
UI_filled_area *menuitem_two_line_highlight_filler;//相册、视频播放器等2行菜单高亮
UI_filled_area *menuitem_multirow_highlight_filler;//通话中心、多媒体等二级菜单高亮(不包括情景模式screen)
UI_filled_area *menuitem_thick_highlight_filler;//相册、视频播放器等2行菜单高亮
UI_filled_area *main_menu_bkg_filler;//主菜单背景
UI_filled_area *sub_menu_bkg_filler;//二级及多级菜单背景
PU8 popup_bkg_image;//pop-up屏幕背景图片
color *popup_text_color;//pop-up屏幕文本颜色
UI_filled_area *cascade_menu_highlight_filler;//级联菜单(pop-up式菜单,即选项菜单)高亮
UI_filled_area *softkey_bar_bkg_filler;//softkey bar 背景
还有一些修改颜色的变量,大多都见名知意啦。
菜单高亮:gui_list_effect_slide_draw_highlight_filler----gui_menu_oem.c
参考代码:
#ifdef __MMI_THEMES_V2_SUPPORT__
extern theme_details_struct *MMI_themes;
#else
extern MMI_theme **MMI_themes;
#endif
extern MMI_theme *current_MMI_theme;
color red = {255,0,0,0};
color green = {0,255,0,0};
color black = {0,0,0,100};
UI_filled_area filler = {0};
int i = 0;
#ifndef __MTK_TARGET__
#ifdef __MMI_THEMES_V2_SUPPORT__
memcpy(temp_theme, MMI_themes[0].theme, sizeof(MMI_theme));
#else
memcpy(temp_theme, MMI_themes[0], sizeof(MMI_theme));
#endif
//scroll bar
test_theme.scrollbar_background_filler = &test_scrollbar_bg_filler;
test_theme.scrollbar_indicator_filler = &test_scrollbar_indicator_filler;
//mainmenu&sub menu background
test_theme.main_menu_bkg_filler = /
test_theme.sub_menu_bkg_filler = &idle_main_menu_bkg_filler_test;
//menu highlight
test_theme.menuitem_single_line_highlight_filler = /
test_theme.menuitem_two_line_highlight_filler = /
test_theme.menuitem_multirow_highlight_filler= /
test_theme.cascade_menu_highlight_filler = /
test_theme.menuitem_thick_highlight_filler= &idle_sub_menu_bkg_filler_test;
//级联菜单(pop-up式菜单,即选项菜单)背景&边框
test_theme.small_list_menu_normal_filler = /
test_theme.small_list_screen_border_filler = &idle_main_menu_bkg_filler_test;
//softkey
test_theme.softkey_lsk_down_filler = /
test_theme.softkey_lsk_up_filler = /
test_theme.softkey_rsk_down_filler = /
test_theme.softkey_rsk_up_filler = /
test_theme.popup_softkey_bar_filler = /
test_theme.softkey_bar_bkg_filler = &test_softkey_bkg_filler;
//pop-up
{
color popup_bg = {234,187,228,100};
color popup_border = {255,164,209,100};
test_theme.popup_screen_background_color = &popup_bg;
test_theme.popup_screen_border_color = &popup_border;
test_theme.popup_text_color = &black;
test_theme.popup_bkg_image = (PU8)testpopupbg;
}
#endif
set_MMI_theme(&test_theme);
MMI_apply_current_theme();
其中弹出式屏幕菜单和pop-up屏幕softkey不会变,原因请查看Wgui_softkey_oem.c--show_softkey_background_with_clipping()函数。
下面说下电池电量和信号图标的显示:
MTK会把电池电量icon(路径MainLCD/IdleScreen/Statusicons/battery/SI_BAT)文件夹下的几个icon文件编译成一个资源数据数组__MAINLCD__IDLESCREEN__STATUSICONS__BATTERY__SI_BAT,mtk会在数据前面加相应的头。例如:
0x02, 0x04, 0x00, 0x00, 0x00, 0x11, 0x20, 0x01,
0x08, 0x00, 0x00, 0x00, 0x8A, 0x05, 0x00, 0x00, 0xC8, 0x00, 0x00, 0x00,
0x94, 0x05, 0x00, 0x00, 0x8A, 0x05, 0x00, 0x00, 0xC8, 0x00, 0x00, 0x00,
0x20, 0x0B, 0x00, 0x00, 0x8A, 0x05, 0x00, 0x00, 0xC8, 0x00, 0x00, 0x00,
0xAC, 0x10, 0x00, 0x00, 0x8A, 0x05, 0x00, 0x00, 0xC8, 0x00, 0x00, 0x00,
0x42, 0x4D, 0x8A, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x04, 0x00, 0x00, 0x28, 0x00,…………………
主头:8个字节:1字节为图片标示即类型,gdi_const.h文件中有定义,此为GDI_IMAGE_TYPE_BMP_SEQUENCE(2),则第一个字节为0x02;
2字节为帧数,即几张图片,一张第二个字节为0x01,四张则为0x04;3字节应该为默认播放帧;4和5字节为文件大小,不用,为0x00, 0x00;6、7、8字节为图片宽高,这里是用3个字节即12位表示的。
副头:即为每个图片要加个头,即每个文件的信息,用来读取每个文件的。每个副头12个字节,所以总共是图片数*12。例子中为4张图片,则4行副头。
1-4字节为第一张图片的偏移为8个字节(主头的大小),这里用4个字节表示,所以是0x08, 0x00, 0x00, 0x00
5-8字节为图片大小,4个字节表示,小点表示法。
9-12为图片队列的间距,用意不明确,有图片所在文件夹下的interval.txt文本文件决定,帧数也是从此文件中读出的(根据文件内容有几段数字,此数字即为间距,9-12字节),此数据不影响显示。
每段的副头有以上说明字节组成,1-4偏移量则是上一偏移+文件大小
数据结构就是这样,显示的时候,会根据参数计算出要显示哪一帧。
关于MTK主题大致就这样了,如有错误知错请指出,谢谢!
- MTK主题修改
- android如何把手机的默认主题修改成mtk slicer(纤薄主题)
- MTK主题风格追踪
- MTK主题风格
- MTK主题风格
- MTK主题风格
- MTK主题风格
- mtk修改
- mtk 主题功能学习笔记
- 修改grub2主题修改
- MTK 修改拨号盘
- MTK铃声修改方法
- MTK 铃声修改
- MTK修改默认日期
- mtk一些常见修改
- MTK定制修改笔记
- 修改MTK动画铃声
- MTK修改记事
- VS2010 总结
- 变容二极管
- ext 数据不显示(treegrid和column tree等)
- SSIS: Adding Files To The Miscellaneous Folder
- c# 对象序列化为XML
- MTK主题修改
- windows2008管理员密码
- 表空间的查看
- oracle常用函数
- redhat as4 终端乱码解决
- 编译openmeeting (搭建openmeetings环境)
- 二维三次样条插值
- jQuery 中常用的插件列表
- 【转】GNU-ld链接脚本浅析