美化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
另一个地方也要替换

    #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
                            /* 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
还有一个地方也要替换

  #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
                        /* 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,也要采有同上的方法修改替换。

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

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值