[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-7174":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":17,"stars30d":17,"stars90d":16,"forks30d":16,"starsTrendScore":18,"compositeScore":19,"rankGlobal":10,"rankLanguage":10,"license":20,"archived":21,"fork":21,"defaultBranch":22,"hasWiki":23,"hasPages":21,"topics":24,"createdAt":10,"pushedAt":10,"updatedAt":31,"readmeContent":32,"aiSummary":33,"trendingCount":16,"starSnapshotCount":16,"syncStatus":34,"lastSyncTime":35,"discoverSource":36},7174,"recyclerview-animators","wasabeef\u002Frecyclerview-animators","wasabeef","An Android Animation library which easily add itemanimator to RecyclerView items.","",null,"Kotlin",11544,1959,301,105,0,1,3,72.48,"Apache License 2.0",false,"master",true,[25,26,27,28,29,30],"android","android-library","animation","java","kotlin","recyclerview","2026-06-12 04:00:32","RecyclerView Animators\n======================\n\u003Cp align=\"center\">\n  \u003Cimg src=\"art\u002Flogo.jpg\" width=\"80%\">\n\u003C\u002Fp>\n\n[![Android Arsenal](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FAndroid%20Arsenal-recyclerview--animators-brightgreen.svg?style=flat)](https:\u002F\u002Fandroid-arsenal.com\u002Fdetails\u002F1\u002F1327)\n[![License](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-Apache%202-blue.svg)](https:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0)\n[![Maven Central](https:\u002F\u002Fmaven-badges.herokuapp.com\u002Fmaven-central\u002Fjp.wasabeef\u002Frecyclerview-animators\u002Fbadge.svg)](https:\u002F\u002Fsearch.maven.org\u002Fartifact\u002Fjp.wasabeef\u002Frecyclerview-animators)\n\nRecyclerView Animators is an Android library that allows developers to easily create RecyclerView with animations.\n\nPlease feel free to use this.\n\n# Features\n\n* Animate addition and removal of [`ItemAnimator`](#itemanimator-1)\n* Appearance animations for items in [`RecyclerView.Adapter`](#recyclerviewadapter)\n\n# Demo\n\n### ItemAnimator\n\u003Cimg src=\"art\u002Fdemo.gif\" width=\"32%\"> \u003Cimg src=\"art\u002Fdemo2.gif\" width=\"32%\"> \u003Cimg src=\"art\u002Fdemo3.gif\" width=\"32%\">\n\n### Adapters\n\u003Cimg src=\"art\u002Fdemo4.gif\" width=\"32%\"> \u003Cimg src=\"art\u002Fdemo5.gif\" width=\"32%\">\n\n# How do I use it?\n\n## Setup\n\n#### Gradle\n\nOn your module's `build.gradle` file add this implementation statement to the `dependencies` section:\n\n```groovy\ndependencies {\n  \u002F\u002F Kotlin\n  implementation 'jp.wasabeef:recyclerview-animators:4.0.2'\n}\n```\n\nAlso make sure that the `repositories` section includes not only `\"mavenCentral()\"` but also a `maven` section with the `\"google()\"` endpoint. \n\n```\nrepositories {\n  google()\n  mavenCentral()\n  jcenter()\n}\n```\n\n## ItemAnimator\n### Step 1\n\nSet RecyclerView ItemAnimator.\n\n```kotlin\nval recyclerView = findViewById\u003CRecyclerView>(R.id.list)\nrecyclerView.itemAnimator = SlideInLeftAnimator()\n```\n\n```kotlin\nval recyclerView = findViewById\u003CRecyclerView>(R.id.list)\nrecyclerView.itemAnimator = SlideInUpAnimator(OvershootInterpolator(1f))\n```\n\n## Step 2\nPlease use the following  \n`notifyItemChanged(int)`  \n`notifyItemInserted(int)`  \n`notifyItemRemoved(int)`  \n`notifyItemRangeChanged(int, int)`  \n`notifyItemRangeInserted(int, int)`  \n`notifyItemRangeRemoved(int, int)`  \n\n> If you want your animations to work, do not rely on calling `notifyDataSetChanged()`; \n> as it is the RecyclerView's default behavior, animations are not triggered to start inside this method.\n\n```kotlin\nfun remove(position: Int) {\n  dataSet.removeAt(position)\n  notifyItemRemoved(position)\n}\n\nfun add(text: String, position: Int) {\n  dataSet.add(position, text)\n  notifyItemInserted(position)\n}\n```\n\n### Advanced Step 3\n\nYou can change the durations.\n\n```kotlin\nrecyclerView.itemAnimator?.apply {\n  addDuration = 1000\n  removeDuration = 100\n  moveDuration = 1000\n  changeDuration = 100\n}\n```\n\n### Advanced Step 4\n\nChange the interpolator.\n\n```kotlin\nrecyclerView.itemAnimator = SlideInLeftAnimator().apply {\n  setInterpolator(OvershootInterpolator())\n}\n```\n\n### Advanced Step 5\n\nBy implementing AnimateViewHolder, you can override preset animation.\nSo, custom animation can be set depending on view holder.\n\n```kotlin\nclass MyViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView), AnimateViewHolder {\n\n  override fun preAnimateRemoveImpl(holder: RecyclerView.ViewHolder) {\n    \u002F\u002F do something\n  }\n\n  override fun animateRemoveImpl(holder: RecyclerView.ViewHolder, listener: ViewPropertyAnimatorListener) {\n    itemView.animate().apply {\n      translationY(-itemView.height * 0.3f)\n      alpha(0f)\n      duration = 300\n      setListener(listener)\n    }.start()\n  }\n\n  override fun preAnimateAddImpl(holder: RecyclerView.ViewHolder) {\n    itemView.setTranslationY(-itemView.height * 0.3f)\n    itemView.setAlpha(0f)\n  }\n\n  override fun animateAddImpl(holder: RecyclerView.ViewHolder, listener: ViewPropertyAnimatorListener) {\n    itemView.animate().apply {\n      translationY(0f)\n      alpha(1f)\n      duration = 300\n      setListener(listener)\n    }.start()\n  }\n}\n```\n\n### Animators\n\n#### Cool\n`LandingAnimator`\n\n##### Scale\n`ScaleInAnimator`, `ScaleInTopAnimator`, `ScaleInBottomAnimator`  \n`ScaleInLeftAnimator`, `ScaleInRightAnimator`\n\n\n##### Fade\n`FadeInAnimator`, `FadeInDownAnimator`, `FadeInUpAnimator`  \n`FadeInLeftAnimator`, `FadeInRightAnimator`\n\n##### Flip\n`FlipInTopXAnimator`, `FlipInBottomXAnimator`  \n`FlipInLeftYAnimator`, `FlipInRightYAnimator`\n\n##### Slide\n`SlideInLeftAnimator`, `SlideInRightAnimator`, `OvershootInLeftAnimator`, `OvershootInRightAnimator`  \n`SlideInUpAnimator`, `SlideInDownAnimator`\n\n## RecyclerView.Adapter\n### Step 1\n\nSet RecyclerView ItemAnimator.\n\n```kotlin\nval recyclerView = findViewById\u003CRecyclerView>(R.id.list)\nrecyclerView.adapter = AlphaInAnimationAdapter(MyAdapter())\n```\n\n#### Java\n```java\nRecyclerView recyclerView = findViewById(R.id.list);\nrecyclerView.setAdapter(new AlphaInAnimationAdapter(MyAdapter());\n```\n\n### Advanced Step 2\n\n```kotlin\nrecyclerView.adapter = AlphaInAnimationAdapter(MyAdapter()).apply {\n  \u002F\u002F Change the durations.\n  setDuration(1000)\n  \u002F\u002F Change the interpolator.\n  setInterpolator(vershootInterpolator())\n  \u002F\u002F Disable the first scroll mode.\n  setFirstOnly(false)\n}\n```\n\n#### Java\n```java\nAlphaInAnimationAdapter alphaInAnimationAdapter = new AlphaInAnimationAdapter(new MyAdapter());\nalphaInAnimationAdapter.setDuration(1000);\nalphaInAnimationAdapter.setInterpolator(new OvershootInterpolator());\nalphaInAnimationAdapter.setFirstOnly(false);\n```\n\n### Advanced Step 3\n\nMultiple Animations\n\n```kotlin\nval alphaAdapter = AlphaInAnimationAdapter(MyAdapter())\nrecyclerView.adapter = ScaleInAnimationAdapter(alphaAdapter)\n```\n\n#### Java\n```java\nrecyclerView.setAdapter(new ScaleInAnimationAdapter(alphaInAnimationAdapter));\n```\n\n### Adapters\n\n#### Alpha\n`AlphaInAnimationAdapter`\n\n#### Scale\n`ScaleInAnimationAdapter`\n\n#### Slide\n`SlideInBottomAnimationAdapter`  \n`SlideInRightAnimationAdapter`, `SlideInLeftAnimationAdapter`\n\nApplications using RecyclerView Animators\n---\n\nPlease [ping](mailto:dadadada.chop@gmail.com) me or send a pull request if you would like to be added here.\n\nIcon | Application\n------------ | -------------\n\u003Cimg src=\"https:\u002F\u002Fplay-lh.googleusercontent.com\u002F6zKH_uQY1bxCwXL4DLo_uoFEOXdShi3BgmN6XRHlaJ-oA1svmq6y1PZkmO50nWQn2Lg=s180-rw\" width=\"48\" height=\"48\" \u002F> | [Ameba Ownd](https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=jp.co.cyberagent.madrid)\n\u003Cimg src=\"https:\u002F\u002Flh3.googleusercontent.com\u002FDHtrq5MZQ6aYGbmUSB8WNiOv-Oz9R4TyMCnzzYSjIqT3earlej7eq5DUudnN0bhSOeg=s180-rw\" width=\"48\" height=\"48\" \u002F> | [QuitNow!](https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=com.EAGINsoftware.dejaloYa)\n\u003Cimg src=\"https:\u002F\u002Flh3.googleusercontent.com\u002FyFhps2nQ3q7QcpqZhMWYP5_ltMWJekX2eOiE0oWORUsP8CiwWkRtRlxVgiRtCZXUdQ=s180-rw\" width=\"48\" height=\"48\" \u002F> | [AbemaTV](https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=tv.abema)\n\u003Cimg src=\"https:\u002F\u002Flh3.googleusercontent.com\u002FS8r0TL8pJ8PGWh_IOkULOHY3MhWvv1LSAOZ3uWJXwpfRq7icS79cPrqH8R5MeXWgAOo=s180-rw\" width=\"48\" height=\"48\" \u002F> | [CL](https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=com.cllive)\n\nDeveloped By\n-------\nDaichi Furiya (Wasabeef) - \u003Cdadadada.chop@gmail.com>\n\n\u003Ca href=\"https:\u002F\u002Ftwitter.com\u002Fwasabeef_jp\">\n\u003Cimg alt=\"Follow me on Twitter\"\nsrc=\"https:\u002F\u002Fraw.githubusercontent.com\u002Fwasabeef\u002Fart\u002Fmaster\u002Ftwitter.png\" width=\"75\"\u002F>\n\u003C\u002Fa>\n\nContributions\n-------\n\nAny contributions are welcome!\n\nContributers\n-------\n\n* [craya1982](https:\u002F\u002Fgithub.com\u002Fcraya1982)\n\nThanks\n-------\n\n* Inspired by `AndroidViewAnimations` in [daimajia](https:\u002F\u002Fgithub.com\u002Fdaimajia).\n\nLicense\n-------\n\n    Copyright 2020 Daichi Furiya \u002F Wasabeef\n\n    Licensed under the Apache License, Version 2.0 (the \"License\");\n    you may not use this file except in compliance with the License.\n    You may obtain a copy of the License at\n\n       http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\n\n    Unless required by applicable law or agreed to in writing, software\n    distributed under the License is distributed on an \"AS IS\" BASIS,\n    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n    See the License for the specific language governing permissions and\n    limitations under the License.\n","wasabeef\u002Frecyclerview-animators 是一个 Android 动画库，旨在为 RecyclerView 项目添加动画效果。其核心功能包括支持条目添加和移除时的动画效果，以及针对 RecyclerView.Adapter 中项目的外观动画。该库使用 Kotlin 编写，并且提供了多种预设动画器如 SlideInLeftAnimator 和 SlideInUpAnimator 等，同时允许开发者自定义动画持续时间、插值器等属性以满足不同需求。适用于需要增强用户界面交互体验的应用场景，特别是当应用内有大量列表数据展示并希望通过动画提升用户体验时。",2,"2026-06-11 03:10:57","top_language"]