DHJJ [Hatsune's Journal Japan] blog

Hatsune's Journal Japan blog

目次

Blog 利用状況

ニュース

最新ツイート

運営サイト

Hatsune's Journal Japan
DHJJ

著作など

資格など

OCP
MCP

書庫

日記カテゴリ

わんくま同盟

[WP入門]Windows Phone 7アプリを作成してみよう(その4)

その1:Windows Phone 7アプリを作成してみよう(その1)

その2:Windows Phone 7アプリを作成してみよう(その2)

その3:Windows Phone 7アプリを作成してみよう(その3)

画面操作で動きを変えてみよう

.NETを使ったプログラミングでは画面はコントロールと呼ばれる部品で作成されています。例えば、ButtonコントロールであるとListBoxコントロールなどです。

そして、例えばボタンをタップすれば、ButtonコントロールのClickイベントが発生するなど、画面での操作によってコントロールに対するイベントが検出され、そのイベントに割り当てたプロシージャの呼出しが行われます。

Windows Phone 7でもその仕組みは変わらず、画面操作ごとに発生するイベントを処理する事で画面操作に応じた動きをプログラミングできます。

Windows Phone 7で規定されている画面操作には次のようなものがあります。

  • タップ
    1本指でスクリーンをトンッと触り、すぐ指を離します。
  • ダブルタップ
    素早く2回タップします。
  • パン
    1本指でスクリーンを触ったまま動かして最後に指をスクリーンから離します。
  • フリック
    1本指でスクリーンを触り、任意の方向へその指をシュッと跳ね上げます。
  • ピンチ
    2本指でスクリーンを触り、スクリーンを触ったまま2本の指の間隔を狭くします。
  • ストレッチ
    2本指でスクリーンを触り、スクリーンを触ったまま2本の指の間隔を広くします。
  • タッチアンドホールド
    1本指でスクリーンを触り、そのまま動かさずにしばらく待ちます。

しかし、Windows Phone Developer Toolsに同封されているコントロールには「タップ」を検出するClickイベントなどはありますが、その他の操作に対するイベントの扱いは必ずしも容易ではありません。

そこで必要になってくるのが、Silverlight for Windows Phone ToolkitのGestureService/GestureListenerです。

ボタンコントロールをGestureService/GestureListenerで拡張してみる

それでは、GestureService/GestureListenerを使ってボタンコントロールにダブルタップなどボタンコントロールにないイベント検出を実装してみましょう。

XAMLへの記述はの中にを埋め込む形で記述します。

そしてその中にとして操作に対するイベントプロシージャ名を記述していきます。

なお、ページの先頭にある先頭ののところに「xmlns:toolkit="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit"」を忘れずに追記してください。



    
    
        
            
            
            
        

        
        
            
            
        

        
        
            
        
        
            
        
    

GestureListenerで指定できるイベントは、
  • Tap
  • DoubleTap
  • DragStarted
  • DragDelta
  • DragComlested
  • Flick
  • PinchStarted
  • PinchDelta
  • PinchCompleted
  • Hold

になります。これらのイベントを使ってWindows Phone 7で規定されている操作をどのように検出していくかを1つづつ確認してみましょう。

タップ

タップイベントは、ボタンコントロールのClickイベントでも検出できますし、GestureListenerでTapイベントでも検出できます。

image

両方のイベントでタップしたときに実行するプロシージャを指定してしまうとタップしたときにプロシージャを合計2回呼んでしまう事になるので注意してください。

ダブルタップ

ダブルタップは2回づつけてタップする操作になります。

image

ボタンコントロールのClickイベントはダブルタップそれぞれを別々のタップとして処理します。また、GestureListenerでは1つめのタップでTapイベント、2つめのタップでDoubleTapイベントとして認識します。

もし、タップとダブルタップを同時に実現するのであれば、タップして選択してもう1度タップしたときの動作=ダブルタップのときの動作として設計しボタンのClickイベントは使わずGestureListenerのTapイベントとDoubleTapイベントを使うようにしましょう。

例えば、1度タップすれば選択、もう一度タップしたら選択したアイテムを編集のような操作性であれば、Tapイベントでは選択したときの処理、DoubleTapイベントでは編集処理を行うプロシージャを呼び出すようにコードを記述します。

パン

パン操作を行うとまずDragStartedイベントを検出、その後、指の動きに合わせてDragDeltaイベント、指を離したタイミングでDragCompletedイベントを検出します。

image

DragDeltaイベントでは指の移動量がe.VerticalChangeとe.HorizontalChangeで取得できるので、その値をつかってコントロールを移動させたり線を引いたりなどの機能を実現できます。

Private Sub OnDragDelta(sender As System.Object,
                        e As Microsoft.Phone.Controls.DragDeltaGestureEventArgs)
    Call SetResult(String.Format("OnDragDelta {0} {1}",
                                 e.HorizontalChange,
                                 e.VerticalChange))
End Sub
フリック

フリック操作はパン操作と似ています。最後に指を跳ね上げるかどうかです。そのため、パン操作のイベントにプラスして、この指の跳ね上げをFlickイベントとして検出します。

image

フリック操作の結果を取得する場合、Flickイベントを処理するプロシージャでe.Directionで上下と左右のどちらかを判定し、上下であればe.VerticalVelocity、左右であればe.HorizontalVelocityで方向を判定します。具体的には次のようなコードになります。

このコードでの上下左右判定は指方向ではなくそのフリック操作により画面がスクロールする方向を判定しています。

Private Sub OnFlick(sender As System.Object,
                    e As Microsoft.Phone.Controls.FlickGestureEventArgs)
    Dim angle As String
    If e.Direction = Controls.Orientation.Vertical Then
        If e.VerticalVelocity < 0 Then
            angle = "下"
        Else
            angle = "上"
        End If
    Else
        If e.HorizontalVelocity < 0 Then
            angle = "右"
        Else
            angle = "左"
        End If
    End If
    Dim value As String = String.Format("angle={0},hv={1},vv={2},d={3}",
                                        CType(e.Angle, Long).ToString,
                                        CType(e.HorizontalVelocity, Long).ToString,
                                        CType(e.VerticalVelocity, Long).ToString,
                                        e.Direction.ToString)
    Call SetResult("フリック " & angle)
End Sub
ピンチとストレッチ

2本指で操作を行うとまずPinchStartedイベントを検出、その後、2本の指の動きに合わせてPinchDeltaイベント、指をスクリーンから話したタイミングでPinchCompletedイベントを検出します。

Windows Phone 7エミュレータでピンチやストレッチを行うためにはマルチタッチスクリーンが必要になります。また、OSもWindows 7を用意するのがベストでしょう。

Private Sub OnPinchDelta(sender As System.Object,
                         e As Microsoft.Phone.Controls.PinchGestureEventArgs)
    Call SetResult(String.Format("OnPinchDelta {0} {1}",
                                 e.DistanceRatio,
                                 e.TotalAngleDelta))
End Sub

e.DistanceRatioはPinchStartedイベント発生時点からの2本の指の間の距離の比率を表しています。1.0より小さければピンチであり大きければストレッチということになります。

e.TotalAngleDeltaはPinchStartedイベント発生時点からの回転角度になります。

タッチアンドホールド

タッチアンドホールドは、指をスクリーンに少し長めにおいておく操作です。そのため、Clickイベントは発生しませんが、Holdイベントを検出したあとに指を離したことをTapイベントとして検出します。

image

もし、タップとタッチアンドホールドを両方実装したいときは、タップの検出はClickイベントを使うのがいいでしょう。

投稿日時 : 2011年3月26日 22:30

Feedback

# jCgOZwpzaKkeI 2011/12/29 20:59 http://www.healthinter.org/health/page/lumigan.php

See it for the first time!!...

# iEpdzYIgLTKdZT 2011/12/31 7:44 http://www.domesticbin.com

I read and feel at home. Thanks the creators for a good resource..!

# ybVAiqFPWAKKTf 2012/01/07 9:30 http://www.luckyvitamin.com/m-200-new-chapter

However, the author created a cool thing..!

# beats by dre prix 2012/11/17 15:50 http://www.beatsbydrepascherfrsoldes.com/

Around the world could very well be anyone, although to one specific could very well be everybody.
beats by dre prix http://www.beatsbydrepascherfrsoldes.com/

# beats by dre cheap 2012/11/17 15:50 http://www.beatsbydrestudio2013.com/

Don‘h trash the time for the human being/sweetheart,what people isn‘h prepared trash their whole point in time upon you.
beats by dre cheap http://www.beatsbydrestudio2013.com/

# mulberry handbags 2012/11/17 15:50 http://www.mulberryoutletsalehandbags.co.uk/

Relationships previous when each one coworker thinks about fresh hook brilliance throughout the different.
mulberry handbags http://www.mulberryoutletsalehandbags.co.uk/

# nike schuhe reduziert 2012/11/17 15:51 http://www.nikeschuheherrende.com/

Anywhere int he planet you will be an individual, on the other hand to 1 woman you will be the.
nike schuhe reduziert http://www.nikeschuheherrende.com/

# nike hallenschuhe 2012/11/17 15:51 http://www.nikeschuhedamende.com/

Friendly relationship is going to be Coptis trifolia groenlandica which usually scarves the exact hearts skin color planet.
nike hallenschuhe http://www.nikeschuhedamende.com/

# Nike Schuhe 2012/11/18 19:32 http://www.nikefree3runschuhe.com/

Adoration might be the lively requirement to your time also , the expansion of whatever they fancy.
Nike Schuhe http://www.nikefree3runschuhe.com/

# monster beats by dr. dre solo 2012/11/18 19:32 http://www.monsterbeatsbydrdresolode.com/

In order a fantastic sales of your own deserving of, marks friends and family.
monster beats by dr. dre solo http://www.monsterbeatsbydrdresolode.com/

# nike free 3.0 2012/11/18 19:33 http://www.nikefreerunherrenfrauen.com/

Only because any individual doesn‘l adore you and the choice of desire them which will,doesn‘l result in some people get into‘l adore you enhance they may have already.
nike free 3.0 http://www.nikefreerunherrenfrauen.com/

# louis vuitton diaper bag 2012/11/18 19:33 http://www.louisvuittonoutletdiaperbag.com/

Don't make friends who ? re warm to be with. Socialize that will amount of force consumers to lever your spouse out.
louis vuitton diaper bag http://www.louisvuittonoutletdiaperbag.com/

# louis vuitton backpack 2012/11/18 19:34 http://www.louisvuittonbackpack2013.com/

In the would learn how to top-secret using an opponent, describe to doing it not to ever companion.
louis vuitton backpack http://www.louisvuittonbackpack2013.com/

# Bottes UGG 2012/11/18 19:35 http://www.sarenzauggfrance.com/

I love you do not caused by your identity, on the contrary caused by people who Now i am if i morning you have made.
Bottes UGG http://www.sarenzauggfrance.com/

# Chaussures UGG 2012/11/18 19:36 http://www.botteuggsoldes.com/

Take pleasure in is the basically satisfied and even enough answer to the problem created by individual life.
Chaussures UGG http://www.botteuggsoldes.com/

# beats by dre 2012/11/18 19:36 http://www.beatsbydrebilligsde.com/

Usually do not to understand in which are more comfortable to get along with. Connect with others who'll strain you to prise your family out.
beats by dre http://www.beatsbydrebilligsde.com/

# beats by dre 2012/11/18 19:37 http://www.casquebeatsbydrefr2013.com/

Have a passion for, accord, regard, never link men and women as much as a frequent hatred pertaining to point.
beats by dre http://www.casquebeatsbydrefr2013.com/

# UGG Soldes 2012/11/18 19:37 http://www.bottesuggpascherfrancefr.com/

Prefer is considered the involved dilemma for everyday life also , the expansion of truley what i enjoy.
UGG Soldes http://www.bottesuggpascherfrancefr.com/

# louis vuitton shoes 2012/11/18 19:37 http://www.louisvuittonwallets2013.com/

An absolute coworker is just one who seem to overlooks ones problems and thus tolerates ones successes.
louis vuitton shoes http://www.louisvuittonwallets2013.com/

# monster beats by dr. dre 2012/11/18 19:38 http://www.beatsbydrepascherfr2013.com/

Don‘h waste your time at a person/feminine,who exactly isn‘h happy to waste their instance giving you.
monster beats by dr. dre http://www.beatsbydrepascherfr2013.com/

# louis vuitton handbags 2012/11/18 19:38 http://www.louisvuittonoutletbags2013.com/

Anywhere int he planet you are body, yet to just one someone you are society.
louis vuitton handbags http://www.louisvuittonoutletbags2013.com/

# beats by dre 2012/11/18 19:39 http://www.beatsbydrdrebilligde.com/

True companionship foresees the needs of additional as an alternative to extol the acquire.
beats by dre http://www.beatsbydrdrebilligde.com/

# Pull D&G 2012/11/25 18:23 http://www.fr-marque.com/

It is possible Graven image needs mankind to meet a small number of unsuitable many people previously interacting with a good choice, in order for whenever we ultimately meet the someone, we're going realize how to seem head over heels.
Pull D&G http://www.fr-marque.com/

# jordan 3 2013/03/04 10:49 http://www.nike44.com/

Not look down on, whether you happen to be gloomy, as you are can't predict who is responsible for dropping obsessed about your new smirk. jordan 3 http://www.nike44.com/

# casquette ny 2013/03/14 7:17 http://www.a44.fr/

An important brother very likely are not a friend, although a friend can be an important brother. casquette ny http://www.a44.fr/

# casquette supreme 2013/03/15 20:46 http://www.b44.fr/

Anywhere int he planet may possibly anyone, on the contrary one one may possibly globally. casquette supreme http://www.b44.fr/

# destock sport et mode 2013/03/18 20:10 http://www.ruenike.com/sac-c-19.html/

Put on‘to try out so difficult, a great situations take place when you finally least are expecting those to. destock sport et mode http://www.ruenike.com/sac-c-19.html/

# destockmania 2013/03/18 20:12 http://www.ruenike.com/foot-c-10.html/

Be careful not to discuss about it all of your joy to a single much less grateful unlike for yourself. destockmania http://www.ruenike.com/foot-c-10.html/

# michael kors 2013/03/26 7:39 http://sacmichaelkorsmontre.webnode.fr/

Adding this to twitter great info. michael kors http://sacmichaelkorsmontre.webnode.fr/

# rueree.com 2013/04/06 9:10 http://rueree.com/

In case you probably would sustain your top secret starting from an opponent, teach the software be unable to an associate. rueree.com http://rueree.com/

# ruenee.com 2013/04/07 4:57 http://ruenee.com/

Wherever there will be partnership with no cherish, there are cherish with no partnership. ruenee.com http://ruenee.com/

タイトル
名前
Url
コメント