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开发经验谈",欢迎右边二维码来关注.) 题记:正在构思一个中间件的设计,考虑是否既可以使用最新的技术,也可以兼顾传统的部署模式.所以有 ...
随机推荐
- 【POJ】2418 Hardwood Species
简单字典树. #include <cstdio> #include <cstring> #include <cstdlib> #define MAXN 128 ty ...
- bzoj2427
一开始读错题导致各种不会做,无奈其实是一道水题,缩点反向建图树形dp即可 type link=^point; point=record po:longint; next:link; end; ..] ...
- wpa_cli和wpa_supplicant使用,配置无线AP名和密码,静态ip地址
配置静态ip方法分享:通过串口命令行输入如下命令: 1. 添加无线网络接入点(AP) 及其 密码:# wpa_cli -p /data/misc/wpa_supplicantwpa_cli v0.5. ...
- Delphi调用webservice总结
Delphi调用webservice总结 Delphi调用C#写的webservice 用delphi的THTTPRIO控件调用了c#写的webservice. 下面是我调试时遇到的一些问题: ...
- ZOJ 3675 Trim the Nails
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4918 DP+状态压缩. http://www.cnblogs.com/dgsr ...
- Pet
Problem Description One day, Lin Ji wake up in the morning and found that his pethamster escaped. He ...
- hdoj 2085 核反应堆【水】
核反应堆 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- Windows下svn客户端和服务器的安装使用
svn,全称subversion, 是目前用的较多的开源的版本管理工具.相信有些经历的程序员应该都听说过它. 通常的svn服务器是搭建在Linux中,不过如果作为个人或者单个小组使用的话,就可以把sv ...
- 【repost】如何学好编程 (精挑细选编程教程,帮助现在在校学生学好编程,让你门找到编程的方向)四个方法总有一个学好编程的方法适合你
方法(一)编了这么久的程序,一直想找机会总结下其中的心得和方法,但回想我这段编程道路,又很难说清楚,如果按照我走过的所有路来说,显然是不可能的!当我看完了云风的<游戏之旅--编程感悟>和梁 ...
- ViewPager切换大量Fragment不刷新的问题
PagerAdapter,需要重写instantiateItem()加载视图,onDestroy()销毁视图FragmentPagerAdapter,每一个生成的Fargment都保存在内存中,也就是 ...