ภาพเคลื่อนไหวที่อิงตามการดีดใช้แรงเสียดทานซึ่งสอดคล้องกับความเร็วของออบเจ็กต์ ใช้เพื่อสร้างภาพเคลื่อนไหวของพร็อพเพอร์ตี้ของออบเจ็กต์และ เพื่อสิ้นสุดภาพเคลื่อนไหวอย่างค่อยเป็นค่อยไป โดยจะมีความเร็วเริ่มต้นซึ่ง ส่วนใหญ่มาจากความเร็วของท่าทางสัมผัส และจะค่อยๆ ช้าลง ภาพเคลื่อนไหวจะสิ้นสุดลงเมื่อความเร็วของภาพเคลื่อนไหวต่ำพอ จนไม่มีการเปลี่ยนแปลงที่มองเห็นได้บนหน้าจออุปกรณ์
 
    หากต้องการดูข้อมูลเกี่ยวกับหัวข้อที่เกี่ยวข้อง โปรดอ่านคำแนะนำต่อไปนี้
เพิ่มไลบรารี AndroidX
หากต้องการใช้ภาพเคลื่อนไหวตามหลักฟิสิกส์ คุณต้องเพิ่มไลบรารี AndroidX ลงในโปรเจ็กต์ ดังนี้
- เปิดไฟล์ build.gradleสำหรับโมดูลแอป
- เพิ่มไลบรารี AndroidX ลงในส่วน dependenciesGroovydependencies { implementation 'androidx.dynamicanimation:dynamicanimation:1.0.0' } Kotlindependencies { implementation("androidx.dynamicanimation:dynamicanimation:1.0.0") } 
สร้างภาพเคลื่อนไหวแบบสะบัด
    คลาส FlingAnimation ช่วยให้คุณสร้าง
    ภาพเคลื่อนไหวแบบดีดสำหรับออบเจ็กต์ได้ หากต้องการสร้างภาพเคลื่อนไหวแบบดีด ให้สร้างอินสแตนซ์ของคลาส FlingAnimation และระบุออบเจ็กต์และพร็อพเพอร์ตี้ของออบเจ็กต์ที่ต้องการสร้างภาพเคลื่อนไหว
  
Kotlin
val fling = FlingAnimation(view, DynamicAnimation.SCROLL_X)
Java
FlingAnimation fling = new FlingAnimation(view, DynamicAnimation.SCROLL_X);
ตั้งค่าความเร็ว
ความเร็วเริ่มต้นจะกำหนดความเร็วที่พร็อพเพอร์ตี้ภาพเคลื่อนไหว เปลี่ยนที่จุดเริ่มต้นของภาพเคลื่อนไหว ความเร็วเริ่มต้นเริ่มต้นจะ ตั้งค่าเป็น 0 พิกเซลต่อวินาที ดังนั้นคุณต้องกำหนดความเร็วเริ่มต้น เพื่อให้แน่ใจว่าภาพเคลื่อนไหวจะไม่สิ้นสุดในทันที
คุณสามารถใช้ค่าคงที่เป็นความเร็วเริ่มต้น หรือจะอิงตาม ความเร็วของท่าทางสัมผัสก็ได้ หากเลือกที่จะระบุค่าคงที่ คุณควรกำหนดค่าในหน่วย dp ต่อวินาที แล้วแปลงเป็นพิกเซล ต่อวินาที การกำหนดค่าในหน่วย dp ต่อวินาทีจะช่วยให้ความเร็วเป็นอิสระจากความหนาแน่นและรูปแบบของอุปกรณ์ ดูข้อมูลเพิ่มเติมเกี่ยวกับ การแปลงความเร็วเริ่มต้นเป็นพิกเซลต่อวินาทีได้ที่ส่วนการแปลง dp ต่อวินาทีเป็นพิกเซลต่อวินาทีใน Spring Animation
    หากต้องการตั้งค่าความเร็ว ให้เรียกใช้เมธอด setStartVelocity() และส่งความเร็วเป็นพิกเซลต่อวินาที เมธอดจะแสดงผลออบเจ็กต์การปัด
    ซึ่งมีการตั้งค่าความเร็ว
  
หมายเหตุ: ใช้คลาส
    GestureDetector.OnGestureListener และ
    VelocityTracker เพื่อดึงข้อมูลและคำนวณ
    ความเร็วของท่าทางสัมผัสตามลำดับ
  
กำหนดช่วงค่าภาพเคลื่อนไหว
คุณสามารถตั้งค่าแอนิเมชันต่ำสุดและสูงสุดได้เมื่อต้องการ จำกัดค่าพร็อพเพอร์ตี้ให้อยู่ในช่วงที่กำหนด การควบคุมช่วงนี้มีประโยชน์อย่างยิ่งเมื่อคุณเคลื่อนไหวพร็อพเพอร์ตี้ที่มีช่วงโดยธรรมชาติ เช่น อัลฟ่า (จาก 0 ถึง 1)
หมายเหตุ: เมื่อค่าของภาพเคลื่อนไหวแบบดีดถึงค่าต่ำสุดหรือสูงสุด ภาพเคลื่อนไหวจะสิ้นสุดลง
    หากต้องการตั้งค่าต่ำสุดและสูงสุด ให้เรียกใช้เมธอด setMinValue()
    และ setMaxValue() ตามลำดับ
    ทั้ง 2 วิธีจะแสดงผลออบเจ็กต์ภาพเคลื่อนไหวที่คุณตั้งค่าไว้
  
ตั้งค่าแรงเสียดทาน
    setFriction() วิธีนี้ช่วยให้คุณเปลี่ยนแรงเสียดทานของภาพเคลื่อนไหวได้
 ซึ่งกำหนดว่าความเร็วจะลดลงในภาพเคลื่อนไหวเร็วเพียงใด
หมายเหตุ: หากไม่ได้ตั้งค่าแรงเสียดทานที่จุดเริ่มต้นของ ภาพเคลื่อนไหว ภาพเคลื่อนไหวจะใช้ค่าแรงเสียดทานเริ่มต้นเป็น 1
เมธอดจะแสดงออบเจ็กต์ที่มีภาพเคลื่อนไหวซึ่งใช้ค่าแรงเสียดทานที่คุณระบุ
โค้ดตัวอย่าง
    ตัวอย่างด้านล่างแสดงการปัดแนวนอน ความเร็วที่บันทึกจาก
    เครื่องมือติดตามความเร็วคือ velocityX และขอบเขตการเลื่อน
    จะตั้งค่าเป็น 0 และ
    maxScroll แรงเสียดทานตั้งค่าเป็น 1.1
  
Kotlin
FlingAnimation(view, DynamicAnimation.SCROLL_X).apply { setStartVelocity(-velocityX) setMinValue(0f) setMaxValue(maxScroll) friction = 1.1f start() }
Java
FlingAnimation fling = new FlingAnimation(view, DynamicAnimation.SCROLL_X); fling.setStartVelocity(-velocityX) .setMinValue(0) .setMaxValue(maxScroll) .setFriction(1.1f) .start();
ตั้งค่าการเปลี่ยนแปลงที่มองเห็นได้ขั้นต่ำ
เมื่อสร้างภาพเคลื่อนไหวให้กับพร็อพเพอร์ตี้ที่กำหนดเองซึ่งไม่ได้กำหนดเป็นพิกเซล คุณควรตั้งค่า การเปลี่ยนแปลงค่าภาพเคลื่อนไหวขั้นต่ำที่ผู้ใช้มองเห็น ซึ่ง กำหนดเกณฑ์ที่สมเหตุสมผลสำหรับการสิ้นสุดภาพเคลื่อนไหว
ไม่จำเป็นต้องเรียกใช้เมธอดนี้เมื่อทำการเคลื่อนไหว
    DynamicAnimation.ViewProperty เนื่องจาก
    การเปลี่ยนแปลงที่มองเห็นได้ขั้นต่ำได้มาจากพร็อพเพอร์ตี้ เช่น
  
- ค่าการเปลี่ยนแปลงที่มองเห็นได้ขั้นต่ำเริ่มต้นคือ 1 พิกเซลสำหรับพร็อพเพอร์ตี้ของมุมมอง เช่น TRANSLATION_X,TRANSLATION_Y,TRANSLATION_Z,SCROLL_XและSCROLL_Y
- สำหรับภาพเคลื่อนไหวที่ใช้การหมุน เช่น ROTATION,ROTATION_XและROTATION_Yการเปลี่ยนแปลงที่มองเห็นได้ขั้นต่ำ คือMIN_VISIBLE_CHANGE_ROTATION_DEGREESหรือ 1/10 พิกเซล
- สำหรับภาพเคลื่อนไหวที่ใช้ความทึบ การเปลี่ยนแปลงที่มองเห็นได้ขั้นต่ำคือ
      MIN_VISIBLE_CHANGE_ALPHAหรือ 1/256
    หากต้องการตั้งค่าการเปลี่ยนแปลงที่มองเห็นได้ขั้นต่ำสําหรับภาพเคลื่อนไหว ให้เรียกใช้เมธอด setMinimumVisibleChange() และส่งค่าคงที่ที่มองเห็นได้ขั้นต่ำค่าใดค่าหนึ่ง หรือค่าที่คุณต้องคํานวณสําหรับพร็อพเพอร์ตี้ที่กําหนดเอง ดูข้อมูลเพิ่มเติมเกี่ยวกับการคำนวณค่านี้ได้ที่ส่วนการคำนวณค่าการเปลี่ยนแปลงที่มองเห็นได้ขั้นต่ำ
  
Kotlin
anim.minimumVisibleChange = DynamicAnimation.MIN_VISIBLE_CHANGE_SCALE
Java
anim.setMinimumVisibleChange(DynamicAnimation.MIN_VISIBLE_CHANGE_SCALE);
หมายเหตุ: คุณต้องส่งค่าเมื่อเคลื่อนไหวพร็อพเพอร์ตี้ที่กำหนดเองซึ่งไม่ได้กำหนดเป็นพิกเซลเท่านั้น
การคำนวณค่าการเปลี่ยนแปลงที่มองเห็นได้ขั้นต่ำ
หากต้องการคำนวณค่าการเปลี่ยนแปลงที่มองเห็นได้ขั้นต่ำสำหรับพร็อพเพอร์ตี้ที่กำหนดเอง ให้ใช้สูตรต่อไปนี้
การเปลี่ยนแปลงที่มองเห็นได้ขั้นต่ำ = ช่วงของค่าพร็อพเพอร์ตี้ที่กำหนดเอง / ช่วงของ ภาพเคลื่อนไหวในหน่วยพิกเซล
เช่น พร็อพเพอร์ตี้ที่คุณต้องการเคลื่อนไหวจะเพิ่มขึ้นจาก 0 เป็น 100 ซึ่งสอดคล้องกับการเปลี่ยนแปลง 200 พิกเซล ตามสูตร ค่าการเปลี่ยนแปลงที่มองเห็นได้ขั้นต่ำ คือ 100 / 200 ซึ่งเท่ากับ 0.5 พิกเซล
 
  