2016-02-04 7 views
1

У меня есть RecyclerView, где каждый элемент представляет собой миниатюру, выполненную в виде фрески DraweeView. В зависимости от размера экрана последний эскиз иногда «обрезается», когда RecyclerView сначала загружается (это нормально).RecyclerView слайд-анимация без обрезки последнего элемента

Я применил анимацию для перехода в RecyclerView справа налево при начальной загрузке. В моей анимации используется OvershootInterpolator, и в этом проблема: в то время как перерегулирование происходит, последний «обрезанный» элемент оставляет край экрана, показывая, что эскиз уже, чем предыдущий (обратите внимание, что обычная прокрутка RecyclerView не имеет Эта проблема).

Вот мой slide_in_animation.xml

<set xmlns:android="http://schemas.android.com/apk/res/android"> 
    <translate 
     android:duration="700" 
     android:fromXDelta="100%" 
     android:toXDelta="0%" /> 
</set> 

Вот часть кода загрузки анимации:

final Animation slideIn = AnimationUtils.loadAnimation(context, 
    R.anim.slide_in_animation); 
// overshoot slightly further than the default tension of 2.0f 
slideIn.setInterpolator(new OvershootInterpolator(2.5f)); 
myRecyclerView.startAnimation(slideIn); 

Есть ли способ, чтобы последний элемент, который только частично виден на экран при начальной загрузке будет полностью виден при анимации с помощью OvershootInterpolator?

Спасибо за помощь!

ответ

0

Это решение, с которым я столкнулся. Надежда другие могут извлечь из этого выгоду:

1) используйте LayoutParams контейнера, в котором RecyclerView настроит ширину контейнера в 1,5 раза по сравнению с текущей шириной.
2) выполнить анимацию в режиме слайд-шоу
3) анимировать, чтобы ширина контейнера была до того, как она была до шага 1 (уменьшите текущую ширину в 1,5 раза).

Смежные вопросы