Bağdaştırıcıya bağlandıklarında geri dönüşüm görünümündeki öğeleri canlandırmak en iyi fikir olmayabilir, çünkü geri dönüşüm görünümündeki öğelerin farklı hızlarda canlandırılmasına neden olabilir. Benim durumumda, geri dönüşüm görünümünün sonundaki öğe konumlarına daha hızlı hareket eder, daha sonra üstteki olanlar daha fazla seyahat eder, bu yüzden düzensiz görünmesini sağlar.
Her öğeyi geri dönüşüm görünümüne hareketlendirmek için kullandığım orijinal kodu burada bulabilirsiniz:
http://frogermcs.github.io/Instagram-with-Material-Design-concept-is-getting-real/
Ancak bağlantı kopması durumunda kodu kopyalayıp yapıştıracağım.
ADIM 1: Animasyonun yalnızca bir kez çalışmasını sağlamak için bunu onCreate yönteminizde ayarlayın:
if (savedInstanceState == null) {
pendingIntroAnimation = true;
}
ADIM 2: Bu kodu animasyonu başlatmak istediğiniz yönteme koymanız gerekir:
if (pendingIntroAnimation) {
pendingIntroAnimation = false;
startIntroAnimation();
}
Bağlantıda, yazar araç çubuğu simgelerini canlandırıyor, bu yüzden onu bu yöntemin içine koydu:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
inboxMenuItem = menu.findItem(R.id.action_inbox);
inboxMenuItem.setActionView(R.layout.menu_item_view);
if (pendingIntroAnimation) {
pendingIntroAnimation = false;
startIntroAnimation();
}
return true;
}
ADIM 3: Şimdi startIntroAnimation () mantığını yazın:
private static final int ANIM_DURATION_TOOLBAR = 300;
private void startIntroAnimation() {
btnCreate.setTranslationY(2 * getResources().getDimensionPixelOffset(R.dimen.btn_fab_size));
int actionbarSize = Utils.dpToPx(56);
toolbar.setTranslationY(-actionbarSize);
ivLogo.setTranslationY(-actionbarSize);
inboxMenuItem.getActionView().setTranslationY(-actionbarSize);
toolbar.animate()
.translationY(0)
.setDuration(ANIM_DURATION_TOOLBAR)
.setStartDelay(300);
ivLogo.animate()
.translationY(0)
.setDuration(ANIM_DURATION_TOOLBAR)
.setStartDelay(400);
inboxMenuItem.getActionView().animate()
.translationY(0)
.setDuration(ANIM_DURATION_TOOLBAR)
.setStartDelay(500)
.setListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
startContentAnimation();
}
})
.start();
}
Tercih ettiğim alternatif:
Ben recyclerview içindeki öğeler yerine tüm recyclerview animasyon.
ADIM 1 ve 2 aynı kalır.
3. ADIM'da, API çağrınız verilerinizle birlikte gelir gelmez animasyonu başlatacağım.
private void startIntroAnimation() {
recyclerview.setTranslationY(latestPostRecyclerview.getHeight());
recyclerview.setAlpha(0f);
recyclerview.animate()
.translationY(0)
.setDuration(400)
.alpha(1f)
.setInterpolator(new AccelerateDecelerateInterpolator())
.start();
}
Bu, ekranın altından içeri girmesi için tüm geri dönüşüm görünümünüzü canlandırır.