- Notifications
You must be signed in to change notification settings - Fork2k
An Android Animation library which easily add itemanimator to RecyclerView items.
License
wasabeef/recyclerview-animators
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
RecyclerView Animators is an Android library that allows developers to easily create RecyclerView with animations.
Please feel free to use this.
- Animate addition and removal of
ItemAnimator
- Appearance animations for items in
RecyclerView.Adapter
On your module'sbuild.gradle
file add this implementation statement to thedependencies
section:
dependencies {// Kotlin implementation'jp.wasabeef:recyclerview-animators:4.0.2'}
Also make sure that therepositories
section includes not only"mavenCentral()"
but also amaven
section with the"google()"
endpoint.
repositories { google() mavenCentral() jcenter()}
Set RecyclerView ItemAnimator.
val recyclerView= findViewById<RecyclerView>(R.id.list)recyclerView.itemAnimator=SlideInLeftAnimator()
val recyclerView= findViewById<RecyclerView>(R.id.list)recyclerView.itemAnimator=SlideInUpAnimator(OvershootInterpolator(1f))
Please use the followingnotifyItemChanged(int)
notifyItemInserted(int)
notifyItemRemoved(int)
notifyItemRangeChanged(int, int)
notifyItemRangeInserted(int, int)
notifyItemRangeRemoved(int, int)
If you want your animations to work, do not rely on calling
notifyDataSetChanged()
;as it is the RecyclerView's default behavior, animations are not triggered to start inside this method.
funremove(position:Int) { dataSet.removeAt(position) notifyItemRemoved(position)}funadd(text:String,position:Int) { dataSet.add(position, text) notifyItemInserted(position)}
You can change the durations.
recyclerView.itemAnimator?.apply { addDuration=1000 removeDuration=100 moveDuration=1000 changeDuration=100}
Change the interpolator.
recyclerView.itemAnimator=SlideInLeftAnimator().apply { setInterpolator(OvershootInterpolator())}
By implementing AnimateViewHolder, you can override preset animation.So, custom animation can be set depending on view holder.
classMyViewHolder(itemView:View) : RecyclerView.ViewHolder(itemView), AnimateViewHolder {overridefunpreAnimateRemoveImpl(holder:RecyclerView.ViewHolder) {// do something }overridefunanimateRemoveImpl(holder:RecyclerView.ViewHolder,listener:ViewPropertyAnimatorListener) { itemView.animate().apply { translationY(-itemView.height*0.3f) alpha(0f) duration=300 setListener(listener) }.start() }overridefunpreAnimateAddImpl(holder:RecyclerView.ViewHolder) { itemView.setTranslationY(-itemView.height*0.3f) itemView.setAlpha(0f) }overridefunanimateAddImpl(holder:RecyclerView.ViewHolder,listener:ViewPropertyAnimatorListener) { itemView.animate().apply { translationY(0f) alpha(1f) duration=300 setListener(listener) }.start() }}
LandingAnimator
ScaleInAnimator
,ScaleInTopAnimator
,ScaleInBottomAnimator
ScaleInLeftAnimator
,ScaleInRightAnimator
FadeInAnimator
,FadeInDownAnimator
,FadeInUpAnimator
FadeInLeftAnimator
,FadeInRightAnimator
FlipInTopXAnimator
,FlipInBottomXAnimator
FlipInLeftYAnimator
,FlipInRightYAnimator
SlideInLeftAnimator
,SlideInRightAnimator
,OvershootInLeftAnimator
,OvershootInRightAnimator
SlideInUpAnimator
,SlideInDownAnimator
Set RecyclerView ItemAnimator.
val recyclerView= findViewById<RecyclerView>(R.id.list)recyclerView.adapter=AlphaInAnimationAdapter(MyAdapter())
RecyclerViewrecyclerView =findViewById(R.id.list);recyclerView.setAdapter(newAlphaInAnimationAdapter(MyAdapter());
recyclerView.adapter=AlphaInAnimationAdapter(MyAdapter()).apply {// Change the durations. setDuration(1000)// Change the interpolator. setInterpolator(vershootInterpolator())// Disable the first scroll mode. setFirstOnly(false)}
AlphaInAnimationAdapteralphaInAnimationAdapter =newAlphaInAnimationAdapter(newMyAdapter());alphaInAnimationAdapter.setDuration(1000);alphaInAnimationAdapter.setInterpolator(newOvershootInterpolator());alphaInAnimationAdapter.setFirstOnly(false);
Multiple Animations
val alphaAdapter=AlphaInAnimationAdapter(MyAdapter())recyclerView.adapter=ScaleInAnimationAdapter(alphaAdapter)
recyclerView.setAdapter(newScaleInAnimationAdapter(alphaInAnimationAdapter));
AlphaInAnimationAdapter
ScaleInAnimationAdapter
SlideInBottomAnimationAdapter
SlideInRightAnimationAdapter
,SlideInLeftAnimationAdapter
Pleaseping me or send a pull request if you would like to be added here.
Icon | Application |
---|---|
Ameba Ownd | |
QuitNow! | |
AbemaTV | |
CL |
Daichi Furiya (Wasabeef) -dadadada.chop@gmail.com

Any contributions are welcome!
- Inspired by
AndroidViewAnimations
indaimajia.
Copyright 2020 Daichi Furiya / WasabeefLicensed under the Apache License, Version 2.0 (the "License");you may not use this file except in compliance with the License.You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0Unless required by applicable law or agreed to in writing, softwaredistributed under the License is distributed on an "AS IS" BASIS,WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.See the License for the specific language governing permissions andlimitations under the License.
About
An Android Animation library which easily add itemanimator to RecyclerView items.