您的位置:控制工程论坛网论坛 » 教程与手册 » 最简单的MTK平台窗口过渡特效

junhong07

junhong07   |   当前状态:在线

总积分:7915  2024年可用积分:1

注册时间: 2008-01-15

最后登录时间: 2019-06-23

空间 发短消息加为好友

最简单的MTK平台窗口过渡特效

junhong07  发表于 2009/9/26 20:56:15      898 查看 0 回复  [上一主题]  [下一主题]

手机阅读

前几年随着MTK的迅速扩张,加入MTK平台的研发人员也达到了前所未有的水平.这给MTK带来的新的活力.为了提高公司竞争力,许多手机设计公司都是不惜代价的研发上下功夫,以其自己的产品能在市场与众不同.视觉特效正是在这样的情况下应运而生,最早的MTK手机人们一般都是在价格和硬件功能上下功夫,自从有了特效后,软件开始受到极大重视,当然另一方面也是因为手机上的价格与硬件使各个设计公司总裁的手机价格已经所差无几.当然,随着软件工程师对MTK平台的越来越熟悉,随之又引发了高仿机热潮.这是后话.

MTK平台的特效是十分丰富的,实现的方法也五花八门.一般来说,从应用上说,大致可以分为窗口特效和菜单特效两种.还有一些SP开发的花里胡哨的功能.不过不管使用什么技术或者算法,我所见过的,基本都是运用层实现的.要么把数据拷备到层上,先变形处理,再显示,要么直接把数据拷贝到层上,使用一些显示效果如通透,裁剪,移动层等技术实现,原则上都不是甚难.难度在于你能想到什么新花样或者金点子.

这里使用N年前曾经流行的WEB技术,帽子戴的有些高.如果是老网民,应该会记得网络过渡特效.早期的网络速度比慢,每次打开一个网络,总要等待很长时间。于是有一些聪明的家伙,就研制出了网页过渡特效,以减轻某些人在等待打开网页时的焦虑心情。当时基本效果一共有24种,至于哪二十四种,有兴趣的朋友自己研究。当然后来JS兴起时,使用JS做的过渡效果远远不止这个数。这里我们使用在网页中得到的灵感。做一个可以左右滑动过渡的窗口。

static S32 transition_effect_x, transition_effect_y, transition_effect_w, transition_effect_h;

void mmi_transition_effect(void)
{
 if (g_pen_up_pos.x > g_pen_down_pos.x)
 {
  transition_effect_x = 0;
  transition_effect_y = 0;
  transition_effect_w += 16;
  transition_effect_h = 320;
 }
 else
 {
  transition_effect_x -= 16;
  transition_effect_y = 0;
  transition_effect_w = 240;
  transition_effect_h = 320;

 }
 gdi_layer_blt(bg_layer, base_layer, NULL, NULL, transition_effect_x,transition_effect_y,transition_effect_w-1, transition_effect_h - 1);
 if (((transition_effect_w < 240) && (g_pen_up_pos.x > g_pen_down_pos.x))
  || ((transition_effect_x >= 0) && (g_pen_up_pos.x <= g_pen_down_pos.x)))
 {
  gui_start_timer(50, mmi_transition_effect);
 }
 else
 {
  gui_cancel_timer(mmi_transition_effect);
 }
}

这个函数支持左右滑动,有想法的朋友可以自己再深入研究.

该函数用到的API都在我以前的有关层的文章中有介绍,也不再赘述.

 
1楼 0 0 回复