MTK 状态栏总结
来源:互联网 发布:天津广电网络宽带 编辑:程序博客网 时间:2024/05/21 11:23
状态栏上所有显示的东西都在Wgui_status_icons.c文件中
Typedef struct _MMI_status_icon
{
S32 x,y; //在状态栏中显示的位置
S32 width,height; //用于快速查找
MMI_ID_TYPE icon_ID; //图标ID
U32 flag; //用于控制状态栏图标显示的属性(显示1/不显示0/动画/闪烁)
U8 states; //对动画有效
U8 group_ID; //这个优先级有啥用?
U8 priority; //优先级,1,2,3..高优先级到低优先级
PU8 icon_data; //
S16 n_frames; //
S16 current_frame; //动画图标
}MMI_status_icon;
MMI_status_icon_icon MMI_status_icons[MAX_STATUS_ICONS]; //状态栏中所有要显示的图标都在次数组中定义
Typedef struct _MMI_status_icon_bar
{
S32 x,y;
U32 flags;
S32 x1,y1,x2,y2;
U8 group_ID;
S16 n_icons; //记录状态栏显示图片的数量
S16 *icon_list; //此指针指向待显示的图片
Bitmap *graphics_context;
U8 *layer_buffer;
GDI_HANDLE layer_handle;
MMI_BOOL rotate_flag_for_wap;
----------------------------------------
}MMI_status_icon_bar;
MMI_status_icon_bars MMI_status_icon_bars[3]; //分别代表水平、垂直、SubLCD 的状态栏的初始坐标
Const S16 MMI_status_icons_pool1; //Main LCD图标ID,里面的值与MMI_status_icons[]中的内容有对应关系
Const S16 MMI_status_icons_pool2;
S16 MMI_status_icons_list1[MMI_N_STATUS_ICONS_LIST1]; //存放当前状态栏要显示的图片
S16 MMI_status_icons_list2[MMI_N_STATUS_ICONS_LIST2]; //存储Main LCD中垂直状态栏的图标ID
S16 MMI_status_icons_list3[MMI_N_STATUS_ICONS_LIST3]; //存储Sub LCD中水平状态栏的图标ID
MMI_status_icon_bar MMI_status_icon_bars[MAX_STATUS_ICON_BARS]; //可定制的状态栏列表
在画完信号条、电池后,在进入else流程(画电池的分子)中判断,如果不是话电池,则画出动态图标
void IdleSetStatusIcon()
{
ShowStatusIcon(STATUS_ICON_RING);
UpdateStatusIcons();
}
Void wgui_status_icon_show_status_icons() //有状态改变的时候,显示相应图标的流程
{
if(STATUS_ICON_SLAVE_SIGNAL_STRENGTH )
{
绘制SIM2卡图标和显示信息
}
else if (STATUS_ICON_SIGNAL_STRING)
{
绘制SIM1卡图标和显示文字
}
else
{
绘制电池图标--
绘制动态显示图标(闹钟、耳塞)--
}
}
状态栏包含电池电量指示,信号指示,日期时间显示,运营商名字和各个状态图标显示。
网络运营商
文件:Wgui_categories_idlescreen.c
函数idle_screen_show_network_details() 调整网络运营商的名字坐标
电池电量显示:
图标ID为STATUS_ICON_BATTERY_STRENGTH
位于MainLCD\IdleScreen\Statusicons\battery 注意的是图标保证5帧。关于电量显示的控制位于文件PoweronCharger.c
函数BatteryStatusIndication 根据当前的电量值设置显示的帧数。
信号指示图标:
图标ID 为 STATUS_ICON_SIGNAL_STRENGTH
位于MainLCD\IdleScreen\Statusicons\signal
文件 NetWorkFunctions.c
函数ChangeStatusIconLevel根据当前的信号值设置显示的图片帧数。
时间和日期:
文件:wgui_datetime.c
函数:show_main_LCD_date_time.设置日期,星期,时间的显示坐标。
注意的是:在函数hide_main_LCD_date_time中需要根据前面各个对象的坐标重新设置刷新区域的坐标。并且修改Wgui_categories_idlescreen.c下面的三个函数的注册函数(之前屏蔽的)
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);
为了正确的显示时间格式(用户选择12小时制,会增加AM/PM两个字母),在函数show_main_LCD_date_time. 时间显示的clip的地方增加格式判断 PhnsetGetTimeFormat()。根据所返回的时间格式,设定clip区域。
常用函数:
Gui_show_scrolling_text() //此函数用来显示状态栏中滚动的字符串
Wgui_status_icon_arrange_status_icons(); //此函数当状态栏上显示的图片有变动时,才调用此函数。用来重新排序显示图片
根据传进来的icon_ID来计算出图片显示的位置
wgui_status_icon_show_status_icon(); //次函数根据传进来的icon_ID,将MMI_status_icons[icon_ID].flags设置为显示状态
wgui_status_icon_translate_pen_event(); //状态栏图标事件检测函数
wgui_status_icon_translate_pen_position(); //状态栏图标触笔位置检测函数
wgui_status_icon_hide_status_icon(); //隐藏状态栏图标 – 将状态栏刷黑或刷透明
mmi_bootup_is_uim_removed() //UIM卡是否被拆下,如拆下返回true
GetUIMCardIsOpenFlag() //UIM卡是否被打开,如打开返回1
changeStatusIconImage() //
- MTK 状态栏总结
- MTK 状态栏相关(转)
- MTK 状态栏相关
- MTK状态栏相关资料
- MTK状态栏相关资料
- MTK 状态栏相关(转)
- MTK状态栏相关(转载)
- MTK MMI一些总结
- MTK技术总结1
- MTK总结-------------CATEGORYSCREENHISTORY
- MTK驱动总结
- MTK总结-------------CATEGORYSCREENHISTORY
- MTK总结(一)
- MTK总结(二)
- MTK总结(三)
- MTK NVRAM 总结
- MTK相关问题总结
- mtk 调试方法总结
- C++静态成员详解
- 圆角背景的ListView
- js解决乱码的问题
- Android编译中m、mm、mmm的区别
- 高级碰撞检测技术
- MTK 状态栏总结
- LayerDrawable层叠样式layer-list
- joj 1131: Intersection (判断直线与矩形是否有交点)
- 2k11 空接
- android 切换anctivity
- exit()和_exit()
- 浏览器对javascript“定义式”函数、“赋值式”函数解析顺序
- 设置Squid Cache_mem大小
- Tomcat部署的3种方法