Animasyonlar, kullanıcıları uygulamanızda neler olduğu konusunda bilgilendiren görsel ipuçları ekleyebilir. Özellikle kullanıcı arayüzü durum değiştirdiğinde (ör. yeni içerik yüklendiğinde veya yeni işlemler kullanılabilir hale geldiğinde) kullanışlıdır. Animasyonlar, uygulamanıza şık bir görünüm kazandırarak daha kaliteli bir görünüm ve his sağlar.
Android, istediğiniz animasyon türüne bağlı olarak farklı animasyon API'leri içerir. Bu belgede, kullanıcı arayüzünüze hareket eklemenin farklı yollarına genel bir bakış sunulmaktadır.
Animasyonları ne zaman kullanmanız gerektiğini daha iyi anlamak için hareketle ilgili Materyal Tasarım kılavuzuna da göz atın.
Bit eşlemlere animasyon ekleme
Şekil 1. Animasyonlu drawable.
Simge veya illüstrasyon gibi bir bit eşlem grafiğine animasyon eklemek için çizilebilir animasyon API'lerini kullanın. Genellikle bu animasyonlar, çizilebilir bir 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 ilişkili olduğunu anlatmanın iyi bir yolu, oynat düğmesine dokunulduğunda duraklat düğmesine dönüşen bir animasyon kullanmaktır.
Daha fazla bilgi için Çizilebilir grafiklere animasyon ekleme başlıklı makaleyi okuyun.
Kullanıcı arayüzü görünürlüğünü ve hareketini canlandırma
Şekil 2. İletişim kutusu görünüp kaybolurken gösterilen hafif bir animasyon, kullanıcı arayüzü değişikliğinin daha az rahatsız edici olmasını sağlar.
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 hafif animasyonlar eklemek en iyisidir.
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 özellik animasyon sistemini kullanabilirsiniz. Bu API'ler, View nesnelerinizin özelliklerini belirli bir süre boyunca günceller ve ö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 özelliğini değiştirdiğinizde görünüm yavaşça belirir veya kaybolur.
Bu animasyonları oluşturmanın en basit yolu, düzeninizde animasyonları etkinleştirmektir. Böylece, bir görünümün görünürlüğünü değiştirdiğinizde animasyon otomatik olarak uygulanır. Daha fazla bilgi için Düzen güncellemelerini otomatik olarak animasyonlu hale getirme başlıklı makaleyi inceleyin.
Özellik animasyonu sistemini kullanarak animasyon oluşturmayı öğrenmek için Özellik 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 ivmeyi korumalı ve değişiklikler sırasında sorunsuz geçişler yapmalıdırlar.
Android Destek Kitaplığı, bu davranışları sağlamak için animasyonlarınızın nasıl gerçekleşeceğini kontrol etmek amacıyla fizik yasalarını kullanan fizik tabanlı animasyon API'leri içerir.
Fizik kurallarına dayalı iki yaygın animasyon şunlardır:
Fizik kurallarına dayalı olmayan animasyonlar (ör. ObjectAnimator API'leriyle oluşturulanlar) oldukça statiktir ve sabit bir süreye sahiptir. Hedef değer değişirse hedef değerin değiştiği anda animasyonu iptal etmeniz, animasyonu yeni bir değerle yeni başlangıç değeri olarak yeniden yapılandırmanız ve yeni hedef değeri eklemeniz gerekir. Görsel olarak bu işlem, animasyonda ani bir duraklamaya ve ardından Şekil 3'te gösterildiği gibi kopuk bir harekete neden olur.
DynamicAnimation gibi fizik tabanlı animasyon API'leriyle oluşturulan animasyonlar, kuvvet tarafından 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ş sağlar. 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 animasyonlu hale getirme
Şekil 5. Daha fazla ayrıntı gösteren bir animasyon, düzeni değiştirerek veya yeni bir etkinlik başlatarak elde edilebilir.
Android 4.4 (API düzeyi 19) ve sonraki sürümlerde, mevcut etkinlik veya parçadaki düzeni değiştirdiğinizde 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 belirler ve yürütür. Bu yöntemi kullanarak kullanıcı arayüzünün tamamını değiştirebilir veya yalnızca bazı görünümleri taşıyabilir ya da değiştirebilirsiniz.
Örneğin, kullanıcı daha fazla bilgi görmek için bir öğeye dokunduğunda düzeni öğe ayrıntılarıyla değiştirebilir ve Şekil 5'te gösterilene benzer bir geçiş uygulayabilirsiniz.
Başlangıç ve bitiş düzenleri birer Scene içinde depolanır ancak başlangıç sahnesi genellikle mevcut düzenden otomatik olarak belirlenir. Sisteme ne tür bir animasyon istediğinizi söylemek için bir Transition oluşturur, ardından TransitionManager.go() yöntemini ç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 inceleyin. Örnek kod için BasicTransition'a göz atın.
Etkinlikler arasında animasyon ekleme
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 geçiş çerçevesini temel alır ancak ayrı etkinliklerdeki düzenler arasında animasyonlar oluşturmanıza olanak tanır.
Yeni etkinliği yandan kaydırarak veya yavaşça görünür hale getirerek basit animasyonlar uygulayabilirsiniz. Ayrıca 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, Şekil 5'te gösterilen animasyon gibi, bu öğeyi ekranı dolduracak şekilde sorunsuz bir şekilde büyüten bir animasyonla yeni bir etkinliğe geçiş yapabilirsiniz.
Her zamanki gibi startActivity() yöntemini çağırırsınız ancak bu yönteme ActivityOptions.makeSceneTransitionAnimation() tarafından sağlanan bir seçenek paketi iletirsiniz.
Bu seçenekler paketi, geçiş çerçevesinin animasyon sırasında görünümleri birbirine bağlayabilmesi için etkinlikler arasında hangi görünümlerin paylaşıldığını içerebilir.
Ek kaynaklar için şu sayfalara göz atın: