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开发经验谈",欢迎右边二维码来关注.) 题记:正在构思一个中间件的设计,考虑是否既可以使用最新的技术,也可以兼顾传统的部署模式.所以有 ...
随机推荐
- MP3播放器的实现
今天,基本上实现了MP3播放器的基本功能,现在总结一下. 首先,下载服务器端的MP3列表,这里用到了下载技术和解析XML文件技术. 下载参考(http://blog.csdn.net/huim_lin ...
- 完美逆向百度手机助手5.0底部菜单栏 - Android Tabhost 点击动画
先看看百度手机助手5.0的样子: 发现他是用一个CustomTabHost.java来实现底部TabHost点击效果的,很漂亮,点击Tab的时候文字会上跑,图片会从底部跑出来的一个小动画. 下面我用自 ...
- Scrapy:Python的爬虫框架
网络爬虫,是在网上进行数据抓取的程序,使用它能够抓取特定网页的HTML数据.虽然我们利用一些库开发一个爬虫程序,但是使用框架可以大大提高效率,缩短开发时间.Scrapy是一个使用Python编写的,轻 ...
- Java并发编程:线程间通信wait、notify
Java并发编程:线程间协作的两种方式:wait.notify.notifyAll和Condition 在前面我们将了很多关于同步的问题,然而在现实中,需要线程之间的协作.比如说最经典的生产者-消费者 ...
- OpenERP里面继承的用法
最近开发遇到了这样的问题:需要往HR模块里面添加一些查询条件,这些查询条件是HR模型里已经写好的,直接修改HR肯定可以实现,但是HR模块一旦修改就会导致一系列的错误,OE开发中的一项基本原则就是不可修 ...
- 安卓在SQLiteOpenHelper类进行版本升级和降级
一.升级(使用到onUpgrade()方法和onCreate()没有安装过才用到) 简单理一下思路: v1.0 (也就是说第一次使用这软件,没有安装过 所有在onCreate() 方法里写代码) ...
- 适配iOS7uinavigationbar遮挡tableView的问题
//适配iOS7uinavigationbar遮挡tableView的问题 if([[[UIDevice currentDevice]systemVersion]floatValue]>=7.0 ...
- C primer plus 读书笔记第十一章
本章标题是字符串和字符串函数.主要是了解和字符串有关的函数. 1.字符串表示和字符串I/O 主要内容:字符串常量和字符串数组的初始化,对比了指针和字符串. 其中要注意的是,数组初始化是从静态存储区把一 ...
- php做站点购物车 你搞懂了吗?
网上购物现已成为时尚,客户选择一个商品将其放入到购物车,然后返回继续购物或者去收银台,这个功能怎样实现呢?今天capucivar就将使用PHP来实现这个购物车的功能. 首先,做一个简单的首页,从数据库 ...
- [Javascript] Proper use of console.assert in JavaScript
Learn about console.assert, which is syntactic sugar for logging an error the console when a given c ...