Animasyonlara giriş

Oluşturma yöntemini deneyin
Android için önerilen kullanıcı arayüzü araç seti Jetpack Compose'dur. Oluşturma bölümünde animasyon özelliğini 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 alakalı olduğunu bildirmenin güzel bir yolu, dokunulduğunda duraklatma düğmesine dönüşen bir oynatma düğmesinin animasyonunu kullanmaktır.

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 ince animasyonlar eklemeniz önerilir.

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 zaman 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 ekranda hareket eder. Alfa mülkünü değiştirdiğinizde görünüm yavaşça görünür veya kaybolur.

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 başlıklı makaleyi inceleyin.

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 sayfalara da göz atabilirsiniz:

Fiziğe dayalı hareket

Şekil 3. ObjectAnimator ile oluşturulan animasyon.

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

Mümkün olduğunda animasyonlarınıza gerçek dünya fiziğini uygulayarak doğal görünmelerini sağlayın. Örneğin, hedefleri değiştiğinde momentumu korumalı ve değişiklikler sırasında sorunsuz geçişler yapmalıdır.

Android Destek kitaplığı, bu davranışları sağlamak için animasyonlarınızın nasıl gerçekleşeceğini kontrol etmek üzere fizik yasalarını kullanan, fiziğe dayalı animasyon API'leri içerir.

Fizik tabanlı animasyonlara örnek olarak şunlar verilebilir:

Fiziğe dayalı olmayan animasyonlar (ör. ObjectAnimator API'leriyle oluşturulanlar) oldukça statiktir ve sabit bir süreye sahiptir. 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 bir 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ünümlü bir animasyonla sonuçlanır.

Düzen değişikliklerini canlandırma

Şekil 5. Düzen değiştirilerek 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 bir Scene içinde depolanır. Ancak başlangıç sahnesi genellikle geçerli düzenden 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 Düzen değişikliklerini geçiş kullanarak canlandırma başlıklı makaleyi inceleyin. Ö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, önceki bölümde açıklanan aynı geçiş çerçevesine dayanır ancak ayrı etkinliklerdeki düzenler arasında animasyonlar oluşturmanıza olanak tanır.

Yeni etkinliği yandan kaydırarak veya yavaşça belirginleştirerek 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, animasyon sırasında geçiş çerçevesinin bunları bağlayabilmesi için etkinlikler arasında hangi görünümlerin paylaşıldığını içerebilir.

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