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开发经验谈",欢迎右边二维码来关注.) 题记:正在构思一个中间件的设计,考虑是否既可以使用最新的技术,也可以兼顾传统的部署模式.所以有 ...
随机推荐
- COJ 0970 WZJ的数据结构(负三十)树分治
WZJ的数据结构(负三十) 难度级别:D: 运行时间限制:1000ms: 运行空间限制:262144KB: 代码长度限制:2000000B 试题描述 给你一棵N个点的无根树,点和边上均有权值.请你设计 ...
- 【动态规划】【最长公共子序列】Vijos P1111 小胖的水果
题目链接: https://vijos.org/p/1111 题目大意: 多组数据,给两个字符串s1,s2,求把s1,s2拆开从前往后合并后最短是多少 apple + peach = appleach ...
- select的使用(二)
多表查询 /*基本连接*/ select a.Name,b.Name from T_Employee a,T_Department b where a.DepartmentId=b.Id /*内连接, ...
- datagridview bindingsource刷新数据
调用bindindsource的ResetBindings() 方法
- [Locked] Flip Game I & II
Flip Game I You are playing the following Flip Game with your friend: Given a string that contains o ...
- tessilstrona
Untitled Document
- iPhone应用中如何避免内存泄露?
如何有效控制iPhone内存管理的对象的所有权与引用计数和以及iPhone内存的自动释放与便捷方法.本文将介绍在iPhone应用中如何避免内存泄露.想了解“在iPhone应用中如何避免内存泄露”就必须 ...
- 一个美国小券商的生存之道Tradestation
转自:证券时报记者 张欣然 桂衍民 中国互联网金融的口号喊了十几年,众多证券公司仍然苦于找不到新的蓝海,研究大西洋彼岸的美国TradeStation公司的业务模式,也许对国内的证券公司会有一些启迪. ...
- JQuery实现悬浮工具条
实现效果如下 html代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http ...
- 在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b
偶然在群里看到这个小题, 就用python做了做. 思路就是建一个够大的列表并初始化,把每个字符的asc码作为下标,存到列表里, 然后该位置的值就存字母的出现次数, 最后再迭代原字符串并判断列表值是否 ...