WP7 Page Transition 1st Step

Posted 18/08/2010 00:02 by pandula

จากที่ผมเขียนไว้ครั้งก่อนเรื่องของ 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 ด้วยวิธีนี้ จึงขอแนะนำให้ใช้กับโปรแกรมที่มีขนาดเล็ก จึงจะเหมาะครับ :)

About pandula

iPandula.net iPandula : Dev, is mind.

ร่วมให้กำลังใจนักเขียน

อ่านแล้วชอบใจ อยากให้กำลังใจกับผู้แต่งบทความนี้ ขอเชิญร่วมให้กำลังใจผ่าน Paysbuy/Paypal นะครับ ปลอดภัยเพราะทำงานผ่าน SSL และไม่มีค่าใช้จ่ายเพิ่มเติมครับ เว็บเราให้นักเขียน 100% ครับ

Comment ระบบเก่า

 

Aef_ said:

ขอบคุงคับ

ลองมั่วๆเอา ห้า ห้า wp7 แต่ละอันได้ใช้ในโปรเจคหมดเลย

^^

August 18, 2010 2:44 AM
 

Varavut said:

ขอบคุณครัีบ

August 18, 2010 8:40 AM
 

legokung said:

Link Download ที่นี่ กดไปขึ้น We are sorry, the page you requested cannot be found. ครับ

ขอบคุณครับ

September 28, 2010 3:19 PM
(required)  
(optional)
(required)  
Add

DisQUS Comment (ยังเอ๋อๆ อยู่)

blog comments powered by Disqus