`
izuoyan
  • 浏览: 9456813 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

美化MTK的拨号窗口

阅读更多

除待机,主菜单,多媒体窗口外,拨号窗口也许是我们最经常为其动手术的一个窗口了。除了花里胡哨的界面,各种新技术新器件的应用外,最经常修改的大概是拨号窗口的字符显示。许多时候客户都会嫌弃字符过小,即使换成最大字体,有时照样有客户抱怨字符不够大。字库里的大号字已经满足不了有些客户的需求,客户有时需要更漂亮的字体,有时需要更大的字体,频繁的修改字库,有时既满足不了用户需求,客户的需求各不相同,为了满足单个客户的需求,这无疑是个很愚蠢的主意。于是有些人就想到了贴图,其实字在字库也是存储为小图片的点阵信息。这说明这个方法是完全可行的。其实写这篇文章是应一个同学的要求写的,由于一直很忙,没有写,总觉得的欠下一笔债,今天就一并还了。

原理其实是很简单的,要使用贴图替换MTK自己的输出字符函数,并对应用户的按键。首先要解决的问题是找到替换的地方,如果使用自己贴图,光标也要自己绘制。使用模拟器,可以很容易找到替换的地方。

gui_show_dialer_input_box_ext这个函数是MTK绘制拨号窗口EDIT控件的函数,也是我们今天主要动手术的函数。这里我使用宏(__MMI_DIALING_NUM_PICTURE__),首先找到这个函数中初始化字符的宽度的语句,替换,

#if defined(__MMI_DIALING_NUM_PICTURE__)
character_width=get_number_image_width();
#else
character_width = gui_get_character_width(0x31);
#endif
然后找到高度

#if defined(__MMI_DIALING_NUM_PICTURE__)
character_height=get_number_image_hight();
#else
#if( defined(__MMI_TOUCH_DIAL_SCREEN__))
character_height = gui_get_character_height() + 1;
#else
character_height = gui_get_character_height() + 2;
#endif
#endif
找到输出字符的地方

#if defined(__MMI_DIALING_NUM_PICTURE__)
{
U16 image_id;
if(is_dial_number_big_pic())
{
image_id=get_image_id_by_char(current_character,FALSE);
gdi_image_draw_id(text_x,text_y,image_id);
}
else
{
image_id=get_image_id_by_char(current_character,TRUE);
gdi_image_draw_id(text_x,text_y,image_id);
}
}
#else
gui_print_character(current_character);
#endif
另一个地方也要替换

#ifdefined(__MMI_DIALING_NUM_PICTURE__)
{
U16 image_id;
if(is_dial_number_big_pic())
{
image_id=get_image_id_by_char(current_character,FALSE);
gdi_image_draw_id(text_x,text_y,image_id);
}
else
{
image_id=get_image_id_by_char(current_character,TRUE);
gdi_image_draw_id(text_x,text_y,image_id);
}

}
#else
/* use this theme only after 07B*/
gui_set_text_color(*(current_MMI_theme->dialer_inputbox_text_color));
gui_set_text_border_color(*(current_MMI_theme->dialer_inputbox_text_border_color));
gui_print_bordered_character(current_character);
#endif
还有一个地方也要替换

#ifdefined(__MMI_DIALING_NUM_PICTURE__)
{
U16 image_id;
if(is_dial_number_big_pic())
{
image_id=get_image_id_by_char(current_character,FALSE);
gdi_image_draw_id(text_x,text_y,image_id);
}
else
{
image_id=get_image_id_by_char(current_character,TRUE);
gdi_image_draw_id(text_x,text_y,image_id);
}

}
#else
/* use this theme only after 07B*/
gui_set_text_color(*(current_MMI_theme->dialer_inputbox_text_color));
gui_set_text_border_color(*(current_MMI_theme->dialer_inputbox_text_border_color));
gui_print_bordered_character(current_character);
#endif
还有一个函数gui_dialer_input_box_next_line,里面字符的高度宽度也要改成我们自己的,在该函数中,找到字符高度宽度的地方,替换为我们自己的,

再有函数dialer_inputbox_next_line,函数gui_dialer_input_box_prev_line,函数dialer_inputbox_prev_line,同上操作,替为我们自己的。

最后一个函数dialer_input_box_change_callback,也要采有同上的方法修改替换。

大致改的就这些地方的,怎么计划,怎么设计,各人有各人的方法,怎么方便就怎么干,贴的代码是从工程里直接复制出来的,有些乱,懒的改了。呵呵

分享到:
评论

相关推荐

    制作mtk 拨号字库

    制作 MTK 拨号字库 在 MTK 平台上,制作自己的拨号字库是一项复杂的任务,但它对于我们开发自己的应用程序非常重要。在本文中,我们将步骤详细地记录制作自己的拨号字库的过程,以便帮助大家更好地理解和应用。 ...

    关于mtk窗口学习,不错的东西

    MTK窗口学习主要涉及到的是基于联发科(MTK)平台的UI系统开发,尤其是窗体重画机制和模板ID的处理。在这个过程中,开发者需要理解窗体如何被绘制,以及窗体组件和属性如何与模板ID关联。 首先,窗体的重画是由`dm_...

    MTK 窗口函数说明

    根据提供的文档标题、描述、标签以及部分内容,我们可以深入解析与MTK窗口函数相关的知识点。这份文档主要关注的是在Pixtel MMI平台上编写应用程序所使用的API,特别是与屏幕显示相关的API。下面将详细介绍这些API的...

    MTK 深入浅出(笔记整理)

    MTK 层的基础知识笔记/MTK 层的应用/MTK 写窗口/MTK编程起步——常用函数及宏定义/MTK拨号字体大小/mtk常用函数/MTK的DM应用实例/MTK的层和它的一些层函数/MTK的高亮机制/MTK之GPIO设置函数/MTK文件读写相关.....

    MTK消息分发及窗口管理

    ### MTK消息分发及窗口管理 #### 总体结构 MTK平台采用了Pixtel Communications, Inc.的PIXTEL MMI架构作为其基础架构之一。该架构后来被MTK收购并整合到其产品线中,目前作为MTK在印度的研发中心的一部分。MMI...

    彻底解决MTK手机 通话,外放音量 声音小的补丁 MTK手机修改手机音量

    MTK(MediaTek)是一家知名的半导体公司,以其在智能手机芯片组领域的广泛应用而闻名。MTK手机常常因为各种硬件和软件问题受到用户的关注,其中通话和外放音量小是常见的问题之一。针对这一问题,补丁的出现旨在提供...

    MTK消息分发及窗口管理机制

    MTK6261D新的底层框架,介绍了整个平台的消息层,从如何分层,到每一层的消息是如何传递的。作者写的很棒,适合初学MTK的朋友。理解了消息机制,就能掌控6261D平台。写代码,看代码,随心所欲,欲罢不能。

    MTK窗口绘制机制.doc

    MTK(MediaTek)窗口绘制机制是针对MTK平台,如6225、6226、6228等,所采用的一种图形用户界面(GUI)处理方式。在这个机制中,窗体(category screen)的管理和绘制,以及控件和事件响应是核心部分。以下是对这个...

    电脑用PhoneSuite同步连接MTK手机拨号上网教程

    这里说下电脑怎么利用手机的GPRS Modem功能,通过PhoneSuite软件用USB数据线同步连接手机后,用中国移动GPRS China MOBILE拨号方式上网的设置过程!此教程适合联发MTK系列芯片的手机!

    MTK Dialing Screen流程.

    本文旨在深入探讨MTK拨号界面的实现流程,通过对关键函数、变量及其相互作用的分析,帮助读者更好地理解这一复杂的过程。 #### 坐标调整 - wgui.h 在MTK的拨号界面实现过程中,坐标调整是非常重要的一步。这个步骤...

    user下如何打开mtklog1

    在Android系统中,MTKLOG1是MediaTek芯片平台用于日志收集和分析的一个工具,主要服务于开发者和工程师,用于调试和性能优化。这个工具可以帮助我们获取设备运行时的详细信息,包括系统日志、硬件状态、网络活动等。...

    MTK cdc serial 驱动

    2. **ATA测试支持**:在描述中提到的"MTK ATA测试",可能是指对MTK平台上的电话应用进行高级测试,例如拨号、通话质量、短信服务等。MTK CDC Serial驱动确保了这些测试过程中串口通信的稳定性和可靠性。 3. **驱动...

    mtk窗口绘制机制.pdf(控件和窗体绘制机制以及控件、窗体的事件响应机制)

    ### MTK窗口绘制机制与事件响应机制解析 MTK(MediaTek)的控件和窗体绘制机制,以及控件、窗体的事件响应机制,是其操作系统界面管理的核心部分,涉及屏幕显示、用户交互等多个层面。本文将深入探讨MTK窗口绘制...

    MTK-USB-Driver_v1.0821.rar_MTK usb port_MTK USB Drive_MTK USB D

    MTK USB驱动程序是针对MediaTek(MTK)芯片组设计的一款重要软件组件,主要用于连接MTK设备(如智能手机或平板电脑)与个人计算机。在标题"MTK-USB-Driver_v1.0821.rar_MTK usb port_MTK USB Drive_MTK USB D"中,...

    MTK通用驱动_tool_mtk驱动inf_mtk通用驱动_mtk_

    "MTK通用驱动_tool_mtk驱动inf_mtk通用驱动_mtk_"这个标题表明这是一个针对MTK设备的通用驱动工具包,包含了必要的驱动文件,特别是".inf"文件,这是Windows系统用来安装硬件驱动的重要配置文件。 MTK驱动是连接...

    MTK平台国产山寨手机同步电脑共享拨号上网教程.doc

    本文档主要介绍了如何在MTK平台的国产山寨手机上实现与电脑同步共享拨号上网的两种方法。这些方法适用于那些需要在外出差或旅行时,使用笔记本电脑通过手机的GPRS Modem功能接入互联网的用户。 方法一: 1. 首先,...

    MTK WIFI GPIO 配置 MTK5931

    本文将深入探讨标题"MTK WIFI GPIO 配置 MTK5931"所涉及的知识点,这主要针对联发科(MediaTek)的MTK5931芯片在Wi-Fi功能上的GPIO配置。 MTK5931是联发科推出的一款专为Wi-Fi应用设计的芯片,它集成了无线局域网...

    Windows 10 MTK VCOM USB Preloader Drivers.rar_MTK_USB_COM_Driver

    联发科刷机win10驱动, MTK = "laurentiumihet.ro" MTK6218 = "MTK USB Port" MTK_COM = "MTK USB Modem Port" MTK_CAT = "MTK USB Debug Port" MTK_PRELOADER = "...

    MTK_USB_VCOM_mtk驱动_源码

    MTK_USB_VCOM_mtk驱动_源码是一个与MediaTek(MTK)芯片相关的USB虚拟串口(VCOM)驱动程序的源代码包。MediaTek是一家知名的半导体公司,其产品广泛应用于智能手机、电视、路由器等多个领域。USB VCOM驱动是为了...

    mtk-su_r20_mtk_su权限.zip

    MTK CVE-2020-0069 su文件 使用方式翻译和解释 add by https://blog.csdn.net/OneT1me 1.使用adb命令,将文件push到/data/local/tmp 目录下 2.给这个文件云心权限,具体是chmod +x mtk-su 3.运行mtk-su ./mtk-su 4....

Global site tag (gtag.js) - Google Analytics