package com.dingmouren.dingdingmap.widgets; import android.content.Context; import android.support.annotation.Nullable; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.util.AttributeSet; import android.view.View; import android.view.ViewGroup; import android.view.animation.AlphaAnimation; import android.view.animation.LayoutAnimationController; /** * Created by dingmouren on 2017/3/8. */ public class CustomRecyclerView extends RecyclerView { public CustomRecyclerView(Context context) { super(context); } public CustomRecyclerView(Context context, @Nullable AttributeSet attrs) { super(context, attrs); } public CustomRecyclerView(Context context, @Nullable AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } @Override public void setLayoutManager(LayoutManager layout) { // if (layout instanceof LinearLayoutManager) { super.setLayoutManager(layout); // }else { // throw new ClassCastException("请使用LinearLayoutManager"); // } } @Override protected void attachLayoutAnimationParameters(View child, ViewGroup.LayoutParams params, int index, int count) { if (getAdapter() != null /*&& getLayoutManager() instanceof LinearLayoutManager*/){ LayoutAnimationController.AnimationParameters animationParameters = ( LayoutAnimationController.AnimationParameters)params.layoutAnimationParameters; if (animationParameters == null){ AlphaAnimation alphaAnimation = new AlphaAnimation(0,1); alphaAnimation.setDuration(1000); animationParameters = new LayoutAnimationController.AnimationParameters(); params.layoutAnimationParameters = animationParameters; } animationParameters.count = count; animationParameters.index = index; }else { super.attachLayoutAnimationParameters(child, params, index, count); } } }