一个实用的Metro滚屏效果示例

以前在Windows Phone7下开发时,对全景控件Panorama印象深刻,在Metro app中没有对应的控件,于是就尝试借鉴一下这种效果。
如果不熟悉Panorama,可以参见以下两张图片。

其中,我想完成的效果限于两点:
1.将页面中心区域移动到鼠标点击位置所在的控件或内容。
2.当前页面中能够看到右侧部分屏,增加体验效果。

示例内容:
假定一个登录/注册共用界面,左侧为登录,右侧为注册,默认居中显示登录,如果是新用户,则可以滚屏到注册,完成后切换回来继续登录。
为了示范效果,登录和注册的功能均省略(完整的功能还要考虑输入验证、业务逻辑云云),仅以界面布局为主。

最主要的动画效果代码:

private void TransitionAnimation()
{
    DoubleAnimation daRegister = new DoubleAnimation(); 
    daRegister.From = -gMain.Width / 2.0; ;
    daRegister.To = 0.0;
    daRegister.Duration = new Duration(TimeSpan.FromMilliseconds(300));
    daRegister.AutoReverse = false;
    Storyboard.SetTarget(daRegister, gMain);
    Storyboard.SetTargetProperty(daRegister, "(Canvas.Left)");
    sbRegister = new Storyboard();
    sbRegister.Children.Add(daRegister);

    DoubleAnimation daLogin = new DoubleAnimation();
    daLogin.From = 0.0;
    daLogin.To = -gMain.Width / 2.0;
    daLogin.Duration = new Duration(TimeSpan.FromMilliseconds(300));
    daLogin.AutoReverse = false;
    Storyboard.SetTarget(daLogin, gMain);
    Storyboard.SetTargetProperty(daLogin, "(Canvas.Left)");
    sbLogin = new Storyboard();
    sbLogin.Children.Add(daLogin);
}

从代码中可以明白,项目中创建了两个用户控件daLogin和daRegister,有固定宽度,借助动画使得主页面MainPage中的Canvas来回移动达到目标,
以下是执行效果的图片。

其实代码还算简单,如果想更丰富一下,可以通过鼠标和触点事件完成手势滚屏,也可以增加多个图片控件完成一组宣传内容的滚动,类似Metro版的EverNote,原理相同可以自行发挥。

项目源文件:下载

转载于:https://www.cnblogs.com/BeanHsiang/archive/2012/06/28/2567412.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值