Hızla kaydırma animasyonu kullanarak görünümleri taşıma

"Oluştur" yöntemini deneyin
Jetpack Compose, Android için önerilen kullanıcı arayüzü araç setidir. Oluşturma'da Animasyonları nasıl kullanacağınızı öğrenin.

Kayışa dayalı animasyonda, 30/50 ile orantılı bir sürtünme kuvveti hareket etmesi gerekir. Bunu, bir nesnenin özelliğini animasyon oluşturmak ve animasyonu kademeli olarak sonlandırmak için. Başlangıçtaki hareketliliği çoğunlukla hareket hızından alınır ve yavaş yavaş yavaşlar. İlgili içeriği oluşturmak için kullanılan Animasyonun hızı yeterince düşük olduğunda animasyon sona erer cihaz ekranında görünür hiçbir değişiklik yapmadığından emin olun.

Şekil 1. Hızlı kaydırma animasyonu
'nı inceleyin.

İlgili konular hakkında bilgi edinmek için aşağıdaki kılavuzları okuyun:

AndroidX kitaplığını ekleme

Fiziğe dayalı animasyonları kullanmak için projenize AndroidX kitaplığını eklemeniz gerekir şu şekilde:

  1. Uygulama modülünüz için build.gradle dosyasını açın.
  2. AndroidX kitaplığını dependencies bölümüne ekleyin.

    Eski

            dependencies {
                implementation 'androidx.dynamicanimation:dynamicanimation:1.0.0'
            }
            

    Kotlin

            dependencies {
                implementation("androidx.dynamicanimation:dynamicanimation:1.0.0")
            }
            

Hızlı kaydırma animasyonu oluştur

FlingAnimation sınıfıyla içerik oluşturabilirsiniz. hızlıca kaydırma animasyonu oluşturabilirsiniz. Kısa süreli animasyon oluşturmak için FlingAnimation sınıfının ve canlandırmak istediğiniz bir nesneyi ve nesnenin özelliğini sağlayın.

Kotlin

val fling = FlingAnimation(view, DynamicAnimation.SCROLL_X)

Java

FlingAnimation fling = new FlingAnimation(view, DynamicAnimation.SCROLL_X);

Hızı ayarlayın

Başlangıç hızı, bir animasyon özelliğinin hangi hızda ne olur? Varsayılan başlangıç hızı: saniyede sıfır piksel olarak ayarlanır. Bu nedenle, başlangıç hızını animasyonun hemen sona ermemesini sağlamak için.

Başlangıç hızı olarak sabit bir değer kullanabilir ya da başlangıç hızı olarak bir dokunma hareketinin hızıyla ilgili fikir sunar. Sabit bir değer sağlamayı seçerseniz değeri saniye başına dp olarak tanımlamalı ve ardından piksele dönüştürmelisiniz / saniye başına Değeri saniye başına dp olarak tanımlamak, hızın ve form faktörlerinden bağımsızdır. Daha fazla bilgi için başlangıç hızını saniyedeki piksele dönüştürmek için Dönüştürülüyor dp - saniyedeki piksel sayısı bölümü İlkbahar Animasyonu.

Hızı ayarlamak için setStartVelocity() yöntemini çağırın ve hızı piksel/saniye cinsinden belirtmektedir. Yöntem, hızlı bir şekilde kaydırma nesnesini Sprint değerini alır.

Not: GestureDetector.OnGestureListener ve Alınacak ve hesaplanacak VelocityTracker sınıf sırasıyla dokunma hareketlerinin hızı.

Animasyon değer aralığı ayarlama

İstediğiniz zaman minimum ve maksimum animasyon değerlerini belirleyebilirsiniz. özellik değerini belirli bir aralıkla sınırlayın. Bu aralık denetimi özellikle içsel bir yöne sahip özellikleri , alfa gibi bir aralık (0'dan 1'e).

Not: Bir fling animasyonunun değeri minimum veya maksimum değere döndüğünde animasyon sona erer.

Minimum ve maksimum değerleri ayarlamak için setMinValue() işlevini çağırın ve setMaxValue() yöntemlerini çağırın. Her iki yöntem de değerini ayarladığınız animasyon nesnesini döndürür.

Zorlukları ayarlayın

setFriction() yöntemi, animasyonun sorun. Bir animasyonda hızın ne kadar hızlı düştüğünü tanımlar.

Not: Fırsatın başlangıcında herhangi bir çakışmayı animasyonda, 1'lik bir varsayılan sürtünme değeri kullanılır.

Yöntem, animasyonunda belirttiğiniz sürtünme değerini kullanan nesneyi döndürür sağlar.

Örnek kod

Aşağıdaki örnekte yatay bir kaydırma gösterilmektedir. Bu Sprint’te yakalanan hız izleyici velocityX ve kaydırma sınırları ve 0 olarak ayarlanmış maxKaydırma Çakışma, 1,1 olarak ayarlanmıştır.

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();

Minimum görünür değişikliği belirleme

Piksel cinsinden tanımlanmayan bir özel özelliği canlandırdığınızda, Kullanıcıların görebildiği animasyon değerinde minimum değişiklik. Google animasyonu sonlandırmak için makul bir eşik belirler.

Animasyon sırasında bu yöntemi çağırmak gerekmez DynamicAnimation.ViewProperty, çünkü minimum görünür değişiklik mülkten elde edilir. Örnek:

  • Varsayılan minimum görünür değişiklik değeri, görüntüleme için 1 pikseldir TRANSLATION_X, TRANSLATION_Y, TRANSLATION_Z, SCROLL_X ve SCROLL_Y.
  • ROTATION gibi döndürmeyi kullanan animasyonlar için ROTATION_X ve ROTATION_Y, minimum görünürlük değişim MIN_VISIBLE_CHANGE_ROTATION_DEGREES veya 1/10 pikseldir.
  • Opaklık kullanan animasyonlar için görüntülenebilir minimum değişiklik MIN_VISIBLE_CHANGE_ALPHA veya 1/256.

Bir animasyona ilişkin görünür minimum değişikliği ayarlamak için setMinimumVisibleChange() yöntemini kullanın ve görünür minimum sabit değerlerden biri veya hesaplamanız gereken bir değer için de geçerli. Bu değeri hesaplama hakkında daha fazla bilgi için bu sayfaya Minimum görünür değişiklik değerini hesaplama bölümüne bakın.

Kotlin

anim.minimumVisibleChange = DynamicAnimation.MIN_VISIBLE_CHANGE_SCALE

Java

anim.setMinimumVisibleChange(DynamicAnimation.MIN_VISIBLE_CHANGE_SCALE);

Not: Yalnızca bir piksel cinsinden tanımlanmayan özel özellik.

Minimum görünür değişiklik değerini hesaplama

Bir özel mülkün minimum görünür değişiklik değerini hesaplamak için şu formülle başlayalım:

Minimum görünür değişiklik = Özel mülk değerinin aralığı / Şu değer aralığı: piksel cinsinden animasyon

Örneğin, animasyon eklemek istediğiniz özellik 0'dan 100. Bu, 200 piksellik bir değişime karşılık gelir. Formüle göre, minimum görünür değişiklik değeri 100 / 200, 0,5 piksele eşittir.