ตัวอย่าง MotionLayout

ลองใช้วิธีเขียน
Jetpack Compose เป็นชุดเครื่องมือ UI ที่แนะนําสําหรับ Android ดูวิธีใช้ภาพเคลื่อนไหวใน Compose

เอกสารนี้มีตัวอย่างวิธีใช้ MotionLayout แต่ละตัวอย่างจะมีวิดีโอสาธิตการเคลื่อนไหว รวมถึงโค้ดที่สอดคล้องกันสำหรับฉากภาพเคลื่อนไหวและเลย์เอาต์

การเคลื่อนไหวพื้นฐาน

ตัวอย่างนี้มีมุมมองเดียวที่คุณแตะและลากเพื่อย้ายในแนวนอนได้

รูปที่ 1 การลากมุมมอง

แอตทริบิวต์ที่กำหนดเอง - backgroundColor

ตัวอย่างนี้คล้ายกับตัวอย่างการเคลื่อนไหวพื้นฐาน นอกจากการเคลื่อนไหวพื้นฐานแล้ว สีพื้นหลังของมุมมองจะเปลี่ยนไปเมื่อมุมมองเคลื่อนไหว

รูปที่ 2 การลากมุมมองขณะที่สีพื้นหลังของมุมมองนั้นเปลี่ยนแปลง

ImageFilterView - image transition

ตัวอย่างนี้แสดงวิธีเปลี่ยนค่าความอิ่มตัวของ ImageFilterView

รูปที่ 3 การลากรูปภาพขณะที่ความอิ่มตัวของสีมีการเปลี่ยนแปลง

ตำแหน่งคีย์เฟรม

ตัวอย่างนี้ใช้ <KeyFrameSet> เพื่อเปลี่ยนตำแหน่ง Y ของมุมมองระหว่างการเคลื่อนไหว

รูปที่ 4 การลากมุมมองและการเปลี่ยนตำแหน่ง Y

การประมาณค่าคีย์เฟรม

ตัวอย่างนี้ต่อยอดมาจากตัวอย่างตำแหน่งคีย์เฟรม โดยเพิ่มการหมุนและการปรับขนาดให้กับการเปลี่ยนมุมมอง

รูปที่ 5 การลากมุมมองและการเปลี่ยนแปลงตำแหน่ง Y, การหมุน และการปรับขนาด

วงจรคีย์เฟรม

ตัวอย่างนี้เพิ่มองค์ประกอบ <KeyCycle> เพื่อเพิ่มการเคลื่อนไหวแบบคลื่นให้กับมุมมอง

รูปที่ 6 การลากมุมมองด้วยการเคลื่อนไหวแบบคลื่นขณะเปลี่ยนสี

CoordinatorLayout (1/2)

ตัวอย่างนี้เพิ่ม MotionLayout ลงใน AppBarLayout ที่มีอยู่เพื่อเพิ่มการเคลื่อนไหวให้กับแถบแอป ดูตัวอย่างเพิ่มเติมได้ในข้อมูลเบื้องต้นเกี่ยวกับ MotionLayout (ส่วนที่ 3)

รูปที่ 7 การเลื่อนเนื้อหาขณะที่แถบแอปขยายออก

CoordinatorLayout (2/2)

ตัวอย่างนี้เพิ่ม MotionLayout ลงใน AppBarLayout ที่มีอยู่เพื่อเพิ่มการเคลื่อนไหวให้กับแถบแอป

รูปที่ 8 การเลื่อนเนื้อหาขณะที่แถบแอปขยายออกและข้อความเคลื่อนไหวเข้าและออกจากแถบแอป

DrawerLayout (1/2)

ตัวอย่างนี้แสดงวิธีเพิ่มการเคลื่อนไหวให้กับ DrawerLayout ตัวอย่างนี้อธิบายเพิ่มเติมในข้อมูลเบื้องต้นเกี่ยวกับ MotionLayout (ส่วนที่ 3)

รูปที่ 9 การขยาย `DrawerLayout`

DrawerLayout (2/2)

ตัวอย่างนี้แสดงวิธีเพิ่มการเคลื่อนไหวให้กับ DrawerLayout

รูปที่ 10 การขยาย `DrawerLayout` ด้วยข้อความเมนูที่เคลื่อนไหว

แผงด้านข้าง

ตัวอย่างนี้แสดงวิธีแสดงแผงด้านข้างเมื่อลากพื้นที่เนื้อหาหลักไปทางขวา

รูปที่ 11 การแสดงแผงด้านข้างโดยการลากเนื้อหาหลัก

พารัลแลกซ์

ตัวอย่างนี้แสดงพื้นหลังแบบพารัลแลกซ์ที่เลเยอร์พื้นหลังต่างๆ เคลื่อนไหวด้วยความเร็วที่แตกต่างกัน

รูปที่ 12 เอฟเฟกต์พารัลแลกซ์ในรูปภาพส่วนหัว

ViewPager

ตัวอย่างนี้แสดงวิธีเพิ่มการเคลื่อนไหวเมื่อปัดระหว่างแท็บ ViewPager ดูตัวอย่างเพิ่มเติมได้ในข้อมูลเบื้องต้นเกี่ยวกับ MotionLayout (ส่วนที่ 3)

รูปที่ 13 เอฟเฟกต์พารัลแลกซ์ในรูปภาพส่วนหัวขณะปัด "ViewPager"

ViewPager - Lottie

ตัวอย่างนี้แสดงวิธีเพิ่มการเคลื่อนไหวเมื่อปัดระหว่างแท็บ ViewPager

รูปที่ 14 รูปภาพแสดงเอฟเฟกต์ Lottie ในรูปภาพส่วนหัวขณะปัด "ViewPager"

การเคลื่อนไหวที่ซับซ้อน (1/3)

ตัวอย่างนี้รวมองค์ประกอบจากตัวอย่างก่อนหน้านี้เพื่อแสดงการเคลื่อนไหวที่ซับซ้อน

รูปที่ 15 การรวมเอฟเฟกต์เพื่อสร้างการเคลื่อนไหวที่ซับซ้อน

การเคลื่อนไหวที่ซับซ้อน (2/3)

ตัวอย่างนี้รวมองค์ประกอบจากตัวอย่างก่อนหน้านี้เพื่อแสดงการเคลื่อนไหวที่ซับซ้อน

รูปที่ 16 การรวมเอฟเฟกต์เพื่อสร้างการเคลื่อนไหวที่ซับซ้อน

การเคลื่อนไหวที่ซับซ้อน (3/3)

ตัวอย่างนี้รวมองค์ประกอบจากตัวอย่างก่อนหน้านี้เพื่อแสดงการเคลื่อนไหวที่ซับซ้อน

รูปที่ 17 การรวมเอฟเฟกต์เพื่อสร้างการเคลื่อนไหวที่ซับซ้อน

การเปลี่ยนของ Fragment (1/2)

ตัวอย่างนี้แสดงวิธีใช้ MotionLayout เพื่อเปลี่ยนระหว่างกลุ่ม

รูปที่ 18 การเปลี่ยนเฟรม

การเปลี่ยนเฟรม (2/2)

ตัวอย่างนี้แสดงวิธีใช้ MotionLayout เพื่อเปลี่ยนระหว่างข้อมูล

รูปที่ 19 การเปลี่ยนเฟรม

ภาพเคลื่อนไหวแบบ YouTube

ตัวอย่างนี้แสดงการเปลี่ยนระหว่างมุมมองแบบกะทัดรัดกับประสบการณ์การใช้งานแบบเต็มหน้าจอที่มีเนื้อหาเพิ่มเติม

รูปที่ 20 การเปลี่ยนเฟรมคล้ายกับ YouTube

KeyTrigger

ตัวอย่างนี้แสดงวิธีแสดงและซ่อนปุ่มการทำงานแบบลอยเมื่อการเปลี่ยนแปลงผ่านเกณฑ์ความคืบหน้า

รูปที่ 21 แสดงและซ่อนปุ่มการทำงานแบบลอย

หลายรัฐ

ตัวอย่างนี้แสดงวิธีใช้สถานะเพื่อระบุการเคลื่อนไหวที่จะใช้

รูปที่ 22 การเคลื่อนไหวที่แตกต่างกันไปตามสถานะ