Windows Phone中使用Storyboard做类似 IOS 屏幕小白点的效果
windows phone中做动画其实很方便的,可以使用Blend拖来拖去就做出一个简单的动画,下面做了一个 ios屏幕小白点的拖动效果,包括速度判断移动
使用Blend生成以下代码
<Storyboard x:Name="HandFunGTLSb"><!-- 向左滑动时动画 -->
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateX)" Storyboard.TargetName="gridHandFun">
<EasingDoubleKeyFrame KeyTime="" Value="-170"/>
<EasingDoubleKeyFrame KeyTime="0:0:0.1" Value="-288"/>
<EasingDoubleKeyFrame KeyTime="0:0:0.2" Value="-360"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
<Storyboard x:Name="HandFunGTRSb"><!-- 向右滑动时动画 -->
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateX)" Storyboard.TargetName="gridHandFun">
<EasingDoubleKeyFrame KeyTime="" Value="-170"/>
<EasingDoubleKeyFrame KeyTime="0:0:0.1" Value="-100"/>
<EasingDoubleKeyFrame KeyTime="0:0:0.2" Value=""/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
被拖动的控件:
<Grid Width="64" Height="444" Name="gridHandFun"
HorizontalAlignment="Right" Canvas.ZIndex="100"
Margin="0,0,30,0"
RenderTransformOrigin="0.5,0.5"
ManipulationDelta="gridHandFun_ManipulationDelta"
ManipulationCompleted="gridHandFun_ManipulationCompleted">
<!-- ManipulationDelta 处理拖动事件 -->
<!-- ManipulationCompleted 处理拖动完成事件 -->
<Grid.RenderTransform>
<CompositeTransform/>
</Grid.RenderTransform> <!-- 手(以下换成自己的控件) -->
<local:ToggleButton x:Name="tglbtnHand" Grid.Row=""
Tap="tglbtnHand_Tap" Tag="" RenderTransformOrigin="0.5,0.5">
<local:ToggleButton.RenderTransform>
<CompositeTransform/>
</local:ToggleButton.RenderTransform> <Image Source="/Assets/HandFun/hand.png"/> <local:ToggleButton.TappedContent>
<Image Source="/Assets/HandFun/hand1.png"/>
</local:ToggleButton.TappedContent>
</local:ToggleButton> </Grid>
前台写完了,我们来处理后台事件:
//处理拖动事件
private void gridHandFun_ManipulationDelta(object sender, System.Windows.Input.ManipulationDeltaEventArgs e)
{
Grid grid = sender as Grid;
CompositeTransform compTrans = grid.RenderTransform as CompositeTransform; compTrans.TranslateX += e.DeltaManipulation.Translation.X;
compTrans.TranslateY += e.DeltaManipulation.Translation.Y; System.Diagnostics.Debug.WriteLine("X的值:{0},Y的值:{1}", compTrans.TranslateX, compTrans.TranslateY); }
//处理拖动完成事件
private void gridHandFun_ManipulationCompleted(object sender, System.Windows.Input.ManipulationCompletedEventArgs e)
{
CompositeTransform compTrans = gridHandFun.RenderTransform as CompositeTransform;
double dCurrTranX = compTrans.TranslateX;
double dCurrTranY = compTrans.TranslateY;
//获得手指滑动速度 x为水平滑动速度 y为垂直滑动速度
Point pSpleed = e.FinalVelocities.LinearVelocity;
System.Diagnostics.Debug.WriteLine("速度:X的值:{0},Y的值:{1}", pSpleed.X, pSpleed.Y); //当向左滑行的速度小于-700时,把控件向左滑,播放向左的动画 -700可以自己调整,我测试了一上,这个速度都可以达到
if (pSpleed.X < -)
{
HandFunGTLSb.Begin();
return;
} //与上面相反
if (pSpleed.X > )
{
HandFunGTRSb.Begin();
return;
} //本次总运动距离
double dTranX = e.TotalManipulation.Translation.X;
double dTranY = e.TotalManipulation.Translation.Y; System.Diagnostics.Debug.WriteLine("当前控件的CompositeTransform的X值:{0},Y的值:{1}", dCurrTranX, dCurrTranY);
System.Diagnostics.Debug.WriteLine("Completed中X的值为:{0},Y的值为:{1}", dTranX, dTranY); if (dCurrTranX <= -)
{//往左
var vTimeLines = HandFunGTLSb.Children;
DoubleAnimationUsingKeyFrames daukf = ((DoubleAnimationUsingKeyFrames)vTimeLines[]);
daukf.KeyFrames[].Value = dCurrTranX; //播放动画启动位置 int idiff = (int)( - -dCurrTranX);
if (idiff < )
{
daukf.KeyFrames[].Value = (- + (idiff / ));
}
else if (idiff == )
{
return;
}
else if (idiff > )
{
daukf.KeyFrames[].Value = (dCurrTranX + -idiff / );
} HandFunGTLSb.Begin();
}
else if (dCurrTranX > -)
{//往右
var vTimeLines = HandFunGTRSb.Children;
DoubleAnimationUsingKeyFrames daukf = ((DoubleAnimationUsingKeyFrames)vTimeLines[]);
daukf.KeyFrames[].Value = dCurrTranX; if (dCurrTranX == )
return;
else
daukf.KeyFrames[].Value = (dCurrTranX / ); HandFunGTRSb.Begin();
}
}
这样就可以出现那种效果了
Windows Phone中使用Storyboard做类似 IOS 屏幕小白点的效果的更多相关文章
- 蓝松短视频SDK支持AE模板, 可做类似微商视频, 小柿饼的效果等
AE模板: 是指设计师用Adobe After Effect做好各种视频动画,比如炫酷视频,文艺/搞笑的场景,相册效果等,根据我们的指导文件导出.蓝松SDK会解析导出的文件,自动还原成AE设计时的动画 ...
- <转>如何在iOS 7中设置barTintColor实现类似网易和 Facebook 的 navigationBar 效果
转自:i‘m Allen的博客 先给代码:https://github.com/allenhsu/CRNavigationController 1. 问题的表现 相信很多人在 iOS 7 的适配过程中 ...
- 在asp.net中使用jQuery实现类似QQ网站的图片切割效果
今天要给大家介绍一个asp.net结合jQuery来切割图片的小程序,原理很简单,大致流程是: 加载原图 --> 用矩形框在原图上选取区域并将选取的顶点坐标和矩形尺寸发送至服务器 --> ...
- 将WCF寄宿在托管的Windows服务中
在我之前的一篇博客中我介绍了如何发布WCF服务并将该服务寄宿于IIS上,今天我再来介绍一种方式,就是将WCF服务寄宿在Windows服务中,这样做有什么好处呢?当然可以省去部署IIS等一系列的问题,能 ...
- 【spring】在spring cloud项目中使用@ControllerAdvice做自定义异常拦截,无效 解决原因
之前在spring boot服务中使用@ControllerAdvice做自定义异常拦截,完全没有问题!!! GitHub源码地址: 但是现在在spring cloud中使用@ControllerAd ...
- Android 4.3实现类似iOS在音乐播放过程中如果有来电则音乐声音渐小铃声渐大的效果
目前Android的实现是:有来电时,音乐声音直接停止,铃声直接直接使用设置的铃声音量进行铃声播放. Android 4.3实现类似iOS在音乐播放过程中如果有来电则音乐声音渐小铃声渐大的效果. 如果 ...
- 在iOS 7中使用storyboard(part 1)
原文:Storyboards Tutorial in iOS 7: Part 1 感谢翻译小组成员heartasice热心翻译.如果您有不错的原创或译文,欢迎提交给我们,更欢迎其他朋友加 ...
- 详解 UWP (通用 Windows 平台) 中的两种 HttpClient API
UWP (通用 Windows 平台) 应用开发者在构建通过 HTTP 与 Web 服务或服务器断点交互的应用时,有多种 API 可以选择.要在一个托管 UWP 应用中实现 HTTP 客户端角色,最常 ...
- 如何托管ASP.NET Core应用到Windows Service中
(此文章同时发表在本人微信公众号"dotNET开发经验谈",欢迎右边二维码来关注.) 题记:正在构思一个中间件的设计,考虑是否既可以使用最新的技术,也可以兼顾传统的部署模式.所以有 ...
随机推荐
- Poetize6: Acting Cute
3042: Acting Cute Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 59 Solved: 36[Submit][Status] Des ...
- 如果在安装32位oracle 客户端组件时的情况下以64位模式运行,将出现问题
今天要写个程序,环境是win7+ vs2008+ oracle.首先得保证能连接到数据库.确认代码是没有问题的,但是拿过来直接.报错: “尝试加载 Oracle 客户端库时引发 BadImageFor ...
- HDOJ 2073 无限的路
Problem Description 甜甜从小就喜欢画图画,最近他买了一支智能画笔,由于刚刚接触,所以甜甜只会用它来画直线,于是他就在平面直角坐标系中画出如下的图形: 甜甜的好朋友蜜蜜发现上面的图还 ...
- POJ 3187 穷举
题意:已知有N个数分别为1-N,如下图为4个数.相邻两两相加直至只剩下一个数,下图的结果就是16. 3 1 2 4 4 3 6 7 9 16 现在反过来看,告诉你数的个数N和最终结果,问这 ...
- <离散数学>学习笔记1--逻辑和证明
今天开始离散数学的自学旅程. 主题:逻辑和证明 逻辑规则给出数学语句的准确含义.逻辑对计算机科学有着重要作用.为了理解数学,我么必须理解正确的数学论证是由什么组成的.只要证明一个数学语句是真的,我们就 ...
- 使用python进行接口测试
最近在做接口测试,之前公司的方案是使用postman进行接口测试.但是伟大的墙导致我们只能用离线版postman..然后一个很长很长的接口列表,一个接一个的访问.我的天哪..所以萌生了一个想法,使用p ...
- poj 1961 Period【求前缀的长度,以及其中最小循环节的循环次数】
Period Time Limit: 3000MS Memory Limit: 30000K Total Submissions: 14653 Accepted: 6965 Descripti ...
- Servlet的一些细节(1)
1. Servlet程序必须映射到一个URL地址 由于客户端是通过URL访问web服务器资源,所以Servlet程序必须映射到一个URL地址.这个工作在web.xml文件中使用<servlet ...
- Appium移动自动化测试(四)--one demo(转)
Appium移动自动化测试(四)--one demo 2015-06-15 20:41 by 虫师, 40514 阅读, 34 评论, 收藏, 编辑 继续更新. ------------------- ...
- javascript 函数 方法
函数 1.函数的定义 (1)function 函数名(x){ 函数执行体; } (2)var 函数名=function(x){ 函数执行体; }; 这种方法说明,在javascript中,函数就是一种 ...