出现RecyclerView动画(整个视图)。动画冻结

时间:2018-07-11 10:36:26

标签: android performance android-recyclerview kotlin android-animation

我想为片段的onViewCreated()之后的回收者视图设置动画。 为此,我使用以下代码:

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    super.onViewCreated(view, savedInstanceState)

    recyclerView.post{
        recyclerView.translationY = recyclerView.height.toFloat()
        recyclerView.animate()
                .translationY(0F)
                .alpha(1F)
                .setInterpolator(DecelerateInterpolator())
                .setDuration(1000)
                .start() 
    }
}

还有我的RecyclerView.Adapter:

override fun onBindViewHolder(holder: ViewHolder, position: Int) {
    val currentItem = items[position]
    with(holder.itemView) {

        txtFirstName.text = currentItem.firstName
        txtLastName.text = currentItem.lastName

        doAsync {
            val drawable = ResourcesCompat.getDrawable(context.resources, currentItem.avatarId, null)
            uiThread {
                ivAvatar.setImageDrawable(drawable)
            }
        }
    }
}

问题::当Adapter完成对前12个项目的调用onBindViewHolder()时,动画将冻结。所以我的动画开始,然后冻结约300ms,然后继续。

问题:是否可以在其他线程上运行该动画,或者我的操作有问题?

我认为没有更多的事情可以提高RecyclerView的性能(我已经实现了adapter.sethasStableIds(true)getItemId(),而我的onBindViewHolder()也很简单)

UPD::我已经尝试使用xml动画(带有AnimationUtils.loadAnimation()),带有View.animate()的运行时动画,ValueAnimator,ObjectAnimator以及FragmentTransaction.setCustomAnimations()。一切似乎都有相同的结果

0 个答案:

没有答案