Animasyonlara giriş

Oluşturma 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.

Animasyonlar, kullanıcıları uygulamanızda neler olduğu konusunda bilgilendiren görsel ipuçları ekleyebilir. Özellikle kullanıcı arayüzü durumu değiştiğinde (ör. yeni içerik yüklendiğinde veya yeni işlemler kullanıma sunulduğunda) kullanışlıdır. Animasyonlar, uygulamanıza daha kaliteli bir görünüm ve his vererek şık bir görünüm de kazandırır.

Android, istediğiniz animasyon türüne bağlı olarak farklı animasyon API'leri içerir. Bu dokümanda, kullanıcı arayüzünüze hareket ekleyebileceğiniz farklı yöntemlere genel bir bakış sunulmaktadır.

Animasyonları ne zaman kullanmanız gerektiğini daha iyi anlamak için Hareketle ilgili Material Design kılavuzunu da inceleyin.

Bit eşlemelere animasyon ekleme

Şekil 1. Animasyonlu bir çizilebilir öğe.

Simge veya illüstrasyon gibi bir bitmap grafiğini animasyonlu hale getirmek için çizilebilir animasyon API'lerini kullanın. Bu animasyonlar genellikle bir çizilebilir kaynakla statik olarak tanımlanır ancak animasyon davranışını çalışma zamanında da tanımlayabilirsiniz.

Örneğin, kullanıcıya iki işlemin birbiriyle ilgili olduğunu bildirmenin iyi bir yolu, dokunduğunda duraklat düğmesine dönüşen bir oynatma düğmesine animasyon eklemektir.

Daha fazla bilgi için Çekilebilir grafikleri canlandırma başlıklı makaleyi okuyun.

Kullanıcı arayüzü görünürlüğünü ve hareketini animasyonlu hale getirme

Şekil 2. İletişim kutusu göründüğünde ve kaybolduğunda gösterilen ince bir animasyon, kullanıcı arayüzü değişikliğini daha az rahatsız edici hale getirir.

Düzeninizdeki görünümlerin görünürlüğünü veya konumunu değiştirmeniz gerektiğinde, kullanıcının kullanıcı arayüzünün nasıl değiştiğini anlamasına yardımcı olmak için incelikli animasyonlar eklemek en iyi seçenektir.

Mevcut düzendeki görünümleri taşımak, göstermek veya gizlemek için Android 3.0 (API düzeyi 11) ve sonraki sürümlerde bulunan android.animation paketi tarafından sağlanan mülk animasyon sistemini kullanabilirsiniz. Bu API'ler, View nesnelerinizin özelliklerini belirli bir süre içinde güncelleyerek özellikler değiştikçe görünümü sürekli olarak yeniden çizer. Örneğin, konum özelliklerini değiştirdiğinizde, görünüm ekran boyunca hareket eder. Alfa özelliğini değiştirdiğinizde görünüm kararır.

Bu animasyonları oluşturmanın en basit yolu, bir görünümün görünürlüğünü değiştirdiğinizde otomatik olarak bir animasyon uygulanacak şekilde düzeninizde animasyonları etkinleştirmektir. Daha fazla bilgi için Düzen güncellemelerini otomatik olarak canlandırma bölümüne bakın.

Mülk animasyon sistemini kullanarak nasıl animasyon oluşturacağınızı öğrenmek için Mülk animasyonuna genel bakış başlıklı makaleyi okuyun. Sık kullanılan animasyonlar oluşturmak için aşağıdaki sayfaları da görebilirsiniz:

Fiziğe dayalı hareket

Şekil 3. ObjectAnimator ile oluşturulan animasyon.

Şekil 4. Fiziğe dayalı API'lerle oluşturulmuş animasyon.

Mümkün olduğunda animasyonlarınıza gerçekçi fizik kuralları uygulayarak doğal bir görünüm elde edin. Örneğin, hedefleri değiştiğinde momentumu korumalı ve değişiklikler sırasında sorunsuz geçişler yapmalıdır.

Bu davranışları sağlamak için Android Destek kitaplığı, animasyonlarınızın nasıl çalışacağını kontrol etmek için fizik yasalarına dayanan fiziğe dayalı animasyon API'leri içerir.

Fizik tabanlı animasyonlara örnek olarak aşağıdakiler verilebilir:

Fiziğe dayalı olmayan animasyonlar (ör. ObjectAnimator API'leriyle oluşturulanlar) oldukça statiktir ve belirli bir süresi vardır. Hedef değer değişirse animasyonu hedef değer değişikliği sırasında iptal etmeniz, animasyonu yeni başlangıç değeri olarak yeni bir değerle yeniden yapılandırmanız ve yeni hedef değeri eklemeniz gerekir. Bu işlem, görsel olarak animasyonda ani bir durma ve ardından Şekil 3'te gösterildiği gibi kopuk bir hareket oluşturur.

DynamicAnimation gibi fizik tabanlı animasyon API'leri kullanılarak oluşturulan animasyonlar kuvvetle yönlendirilir. Hedef değerdeki değişiklik, kuvvette değişikliğe neden olur. Yeni kuvvet, mevcut hıza uygulanır ve yeni hedefe sürekli bir geçiş yapar. Bu işlem, Şekil 4'te gösterildiği gibi daha doğal görünen bir animasyonla sonuçlanır.

Düzen değişikliklerini canlandırma

Şekil 5. Düzen değiştirerek veya yeni bir etkinlik başlatarak daha fazla ayrıntı gösteren bir animasyon elde edilebilir.

Android 4.4 (API düzeyi 19) ve sonraki sürümlerde, mevcut etkinlik veya parçadaki düzeni değiştirirken animasyon oluşturmak için geçiş çerçevesini kullanabilirsiniz. Tek yapmanız gereken başlangıç ve bitiş düzenini ve kullanmak istediğiniz animasyon türünü belirtmektir. Ardından sistem, iki düzen arasında bir animasyon oluşturur ve yürütür. Bu özelliği, kullanıcı arayüzünün tamamını değiştirmek veya yalnızca bazı görünümleri taşımak ya da değiştirmek için kullanabilirsiniz.

Örneğin, kullanıcı daha fazla bilgi görmek için bir öğeye dokunduğunda, Şekil 5'te gösterilen gibi bir geçiş uygulayarak düzeni öğe ayrıntılarıyla değiştirebilirsiniz.

Başlangıç ve bitiş düzeninin her biri Scene içinde depolanır. Bununla birlikte, başlangıç sahnesi genellikle geçerli düzene göre otomatik olarak belirlenir. Sisteme istediğiniz animasyon türünü bildirmek için bir Transition oluşturursunuz, ardından TransitionManager.go() işlevini çağırırsınız. Sistem, düzenleri değiştirmek için animasyonu çalıştırır.

Daha fazla bilgi için Geçiş kullanarak düzen değişikliklerini canlandırma başlıklı makaleyi okuyun. Örnek kod için BasicTransition'a göz atın.

Etkinlikler arasında animasyonlu geçiş yapma

Android 5.0 (API düzeyi 21) ve sonraki sürümlerde, etkinlikleriniz arasında geçiş yapan animasyonlar da oluşturabilirsiniz. Bu işlem, önceki bölümde açıklanan geçiş çerçevesine dayanır ancak ayrı etkinliklerde düzenler arasında animasyonlar oluşturmanıza olanak tanır.

Yeni etkinliği yandan kaydırarak veya yavaşça açarak gösterme gibi basit animasyonlar uygulayabilir, ancak her etkinlikte paylaşılan görünümler arasında geçiş yapan animasyonlar da oluşturabilirsiniz. Örneğin, kullanıcı daha fazla bilgi görmek için bir öğeye dokunduğunda, bu öğeyi ekranı dolduracak şekilde sorunsuz bir şekilde büyüten bir animasyonla yeni bir etkinliğe geçiş yapabilirsiniz (Şekil 5'te gösterilen animasyon gibi).

Her zamanki gibi startActivity() işlevini çağırırsınız ancak bu işleve ActivityOptions.makeSceneTransitionAnimation() tarafından sağlanan bir seçenek grubunu iletirsiniz. Bu seçenek paketi, etkinlikler arasında hangi görünümlerin paylaşıldığını içerebilir. Böylece geçiş çerçevesi, animasyon sırasında bunları birbirine bağlayabilir.

Ek kaynaklar için şu makalelere bakın: