前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >豆瓣电台WP7客户端 开发记录5

豆瓣电台WP7客户端 开发记录5

作者头像
MJ.Zhou
发布2022-05-07 16:05:56
4100
发布2022-05-07 16:05:56
举报
文章被收录于专栏:.NET开发那点事

今天的关键词是手势。在专辑封面上往右滑一下就切换下一首。

 废话不多说,上代码:

首先在主界面的构造函数里放上:

表示监听水平手势 

代码语言:javascript
复制
 TouchPanel.EnabledGestures = GestureType.HorizontalDrag; 

你可以这样多监听几个手势

代码语言:javascript
复制
 TouchPanel.EnabledGestures = GestureType.HorizontalDrag|GestureType.VerticalDrag|GestureType.Hold; 

XAML:

代码语言:javascript
复制
<StackPanel x:Name="AlubmImage_Double" Margin="0,1,0,0" ManipulationCompleted="AlubmImage_Double_ManipulationCompleted" ManipulationStarted="AlubmImage_Double_ManipulationStarted" >

手势起始事件,取得起始位置。

代码语言:javascript
复制
   private void AlubmImage_Double_ManipulationStarted(object sender, ManipulationStartedEventArgs e)
        {
            pFirst = e.ManipulationOrigin;
        }

手势完成事件:

代码语言:javascript
复制
 private void AlubmImage_Double_ManipulationCompleted(object sender, ManipulationCompletedEventArgs e)          
 {  pSecond = e.ManipulationOrigin;             
 bool IsDo = false;
 while (TouchPanel.IsGestureAvailable)             
 {                 
 GestureSample gesture = TouchPanel.ReadGesture();                 
 //如果是水平手势 起始点的X>结束点的X                 
 if (gesture.GestureType == GestureType.HorizontalDrag && pFirst.X < pSecond.X&&!IsDo)
 {                     IsDo = true;                     this.btn_n_Click(null, null);
 }
 }
 }

说明:

当你作出一个手势的时候,比如水平滑动一下,这其实会触发一连串的手势,注意是一连串,不是一个。因为你水平滑动一下,不可能是绝对的水平的,还可能带着其他的动作,比如VerticalDrag垂直滑动。而且也不是一个水平滑动跟一个其他活动。都可能有好几个。所以我上面的代码严格来说是不严谨的,因为可能垂直滑动中有那么一个水平滑动就够触发下一首的事件了,不过我在开始的时候就只是指定监听HorizontalDrag。这个时候能进循环其实就已经说明是水平滑动了。如果你多监听几个手势,你会发现垂直滑动事件也会触发了。所以你一次

ManipulationCompleted一定要循环 TouchPanel.ReadGesture()了直到读完所有手势。不然下次触发 

ManipulationCompleted的时候你读到的手势还是上一次的。当读完后TouchPanel.IsGestureAvailable变成false,这个是不是跟Ado.net里的datareader差不多呢。所以一般都用while循环。

pFirst.X < pSecond.X 比较起始位置跟结束位置的X值,就能知道是向左滑动还是向右了。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2011-09-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档