如何在不使用外部库的情况下在回收器视图上实现拉刷新动画



我有一个简单的例子,其中我有个RecyclerView,当用户拉到列表顶部时,我想刷新它!我使用了滑动刷新布局。但是,当刷新列表时,刷新图标会显示在项目的顶部。我想要一个动画,当图标显示时,列表会向下,当刷新完成时会备份!基本上,我希望它看起来像instagrams刷新动画。我知道这可以使用外部库来完成,但我发现的大多数库已经很长时间没有更新了!

这是一个简单的例子来解释我到目前为止所做的事情:

class MainActivity : AppCompatActivity() {
private lateinit var adapter: PersonListAdapter
private val personList = ArrayList<Person>()
private lateinit var layoutManager: RecyclerView.LayoutManager
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
loadData()
swipe_refresh_layout.setOnRefreshListener {
swipe_refresh_layout.isRefreshing = false
}
}
private fun loadData() {
layoutManager = LinearLayoutManager(this)
adapter = PersonListAdapter(personList, this)
// RecyclerView setup
my_recycler_view.layoutManager = layoutManager
my_recycler_view.adapter = adapter
// Load data
for (i in 0..4) {
personList.add(Person("my name", 20 + i, R.drawable.img1))
personList.add(Person("me", 10 + i, R.drawable.img1))
}
adapter.notifyDataSetChanged()

}
}

这是我的XML:

<android.support.v4.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/swipe_refresh_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ui.MainActivity">
<android.support.v7.widget.RecyclerView
android:id="@+id/my_recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginBottom="8dp"
android:layout_marginEnd="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layoutAnimation="@anim/layout_animation_fall_down"
android:scrollbars="vertical"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</android.support.v4.widget.SwipeRefreshLayout>

您可以创建自己的SwipeRefreshLayout,它应该扩展主SwipeRefreshLayout,然后覆盖方法

试着通过查看开放源代码库来获得帮助

最简单的方法是使用外部库,为什么需要重新创建轮子?如果你想学习一些新的东西并提高你的编码技能,我建议你用滑动来刷新实现,并通过自己的更改深入了解实现细节。https://github.com/search?l=Java&q=滑动+到+刷新+安卓&type=存储库

最新更新