• เริ่มต้นเขียนโปรแกรมบน Windows Phone 7 : มาเรียนรู้ด้วยการสร้าง Twitter Client อย่างง่ายๆ
  • เขียนโปรแกรมแบบเทพด้วย Silverlight : เริ่มต้นขั้นเทพกับ Binding Data บน Silverlight
  • Panoramic App on Windows Phone 7 : อยากทำแอพแบบ panoramic เป็นไหม ถ้าใช่รีบเลย !

WP7 Page Transition 1st Step

by iPandula 18. August 2010 09:04

จากที่ผมเขียนไว้ครั้งก่อนเรื่องของ Application bar จะเห็นได้ว่าโปรแกรมของเรา มีการเรียก page ต่างๆ ขึ้นมาหลายหน้า เช่น about, contact, photo, help ดังที่มีในตัวอย่าง เมื่อเรากด menu About โปรแกรมก็จะทำการเปลี่ยน page ให้กับเราแต่ก็เป็นการเปลี่ยน page ที่ไม่มี animation ใดๆ เลย ดูแข็งทื่อไม่เหมาะกับการเป็น WP7 ในอุดมคติของเราจริงไหมครับ ดังนั้นวันนี้จะมาแนะนำวิธีทำ Page Transition แบบง่ายๆ ให้ดูกัน

image

อุปกรณ์ที่ใช้ในวันนี้

  • Visual Studio 2010 Express for Windows Phone Beta
  • Windows Phone Emulator Beta
  • Silverlight for Windows Phone Beta
  • Microsoft Expression Blend for Windows Phone Beta
  • XNA Game Studio 4.0 Beta

Download ได้ที่นี่

การสร้าง Page Transition ในครั้งนี้ ผมจะสร้าง Animation ที่จะใช้ในการเปลี่ยน page ด้วย Explession Blend 4 for Windows Phone แล้วเราจะไปเรียกใช้งาน Animation นั้นในช่วงที่เรากดปุ่มเปลี่ยน page นั่นเอง

โครงสร้างของโปรแกรม

ผมสร้าง Page ไว้ 2 หน้าชื่อ MainPage.xaml และ NewPage1.xaml

image 

ในหน้า MainPage ผมจะสร้าง Menu ไว้ 1 ตัว และสร้าง Event Click ไว้ เพื่อให้เปิดหน้า NewPage1 ขึ้นมา

image

 

เมื่อเตรียมโครงสร้างแล้ว เรามาเริ่มต้นกันที่ Blend4

ก่อนอื่นเรามาเริ่มต้นสร้าง animation กันที่ blend 4 ครับ โดยเราจะสร้าง animation ต่างๆ ดังนี้

1. StoryboardMainPageOut สำหรับ MainPage หมุน และค่อยๆ เลือนหายไป

2. StoryboardNewPageIn สำหรับ NewPage1 ค่อยๆ แสดงขึ้นมา

ไปที่หน้า MainPage สร้าง Storyboard ขึ้นมา

image

จากนั้น เราจะทำการสร้าง Animation ลงไปที่ LayoutRoot ของเรา เพื่อให้มันทำการหมุน โดยผมจะปรับค่า Projection ของแกน Y เป็น 180

image

image

(ภาพซ้ายมือคือ Projection Y = 0 ขวามือคือ Y = 180)

                    image ------> image 

และเพื่อให้ LayoutRoot ของหน้า MainPage หายไปโดยสิ้นเชิง ผมจึงใช้วิธีปรับ opacity ให้เหลือ 0 ที่ Timeline ที่ 1 sec

image

เท่านี้ เราจะได้ MainPage ที่หมุนแล้วหายไปมาแล้ว ต่อไปเราก็สร้าง Storyboard ของหน้า NewPage1 ขึ้นมาครับ

ในหน้านี้ เราก็ Create Storyboard ขึ้นมาเช่นเดียวกัน โดยผมตั้งชื่อว่า StoryboardNewPageIn จากนั้น ผมใส่ animation ให้ดังนี้

timeline ที่ 0 sec ให้ LayoutRoot มี Opacity = 0

timeline ที่ 1 sec ให้ LayoutRoot มี Opacity = 100

image image image

จบขึ้นตอนนี้ เราจะมี Storyboard 2 ตัว ชื่อว่า StoryboardMainPageOut และ StoryboardNewPageIn

เริ่มใช้งาน

ที่ MainPage สร้าง Event Handler จาก menuitem ใน application bar ขึ้นมา

image

เมื่อกด menu เพื่อไปยังหน้า NewPage เราจะสั่งให้ Storyboard เริ่มทำงานด้วย .Begin() และจากนั้น เมื่อ Storyboard เล่นจนจบ Completed event  ก็จะทำการเรียกหน้า NewPage ขึ้นมาแสดง ด้วย NavigateService

image 

ต่อไป ไปที่ NewPage1 และทำการ override เมธอด OnNavigatedTo ขึ้นมาครับ เราจะใช้เจ้านี่ในการรับ event ว่ามีการ navigate มายังหน้านี้

image

จากนั้นก็ให้เมธอดนี้เรียก Storyboard ให้เริ่มทำงาน

image

เมื่อทำทุกขึ้นตอนเรียบร้อย ก็รันดูผลกัน


และแล้วก็ได้ Page Transition ออกมา จะเห็นว่าวิธีนี้ simple และไม่ยากเลยครับ ซึ่งเราก็สามารถนำไปใช้กับ Application ของเราได้ แต่การใช้วิธีนี้ในการสร้าง Page Transition ถ้าหากโปรแกรม WP7 ของเรามีขนาดใหญ่ จำนวน page เยอะมาก เราก็จะเสียเวลาในการไปแก้ไปโค้ด ในแต่ละ page ดังนั้น การสร้าง Page Transition ด้วยวิธีนี้ จึงขอแนะนำให้ใช้กับโปรแกรมที่มีขนาดเล็ก จึงจะเหมาะครับ :)

Tags:
Categories: