对RecyclerView Item做动画

对RecyclerView Item做动画

对RecyclerView Item做动画,刚刚开始研究的时候一些坑,在这里把一些设计思路分享出去

添加动态位移,静态位移,缩放等动画,保证了动画状态的平滑衔接

效果图:





我的Github,Demo下载

RecyclerView,ListView这些具有Item复用性的View,想要对其Item做动画,需要注意以下几点:

1,如果要一点击,让所有Item做动画的效果。例如,上图的编辑和取消,这样的动态动画。可以对所有ViewHolder中的View直接做动画。
但是需要在onBindViewHolder方法中对复用的item做静态动画,保证动画状态的平滑衔接。



2,每一个Item的特有属性,例如,上图checkbox的选中状态,都需要把状态字段放到对应的Java bean中, 并在onBindViewHolder方法从java bean取出状态值,设置到view里。


首先,对一些细节进行分析:

如何设计一个自定义View,来让他可以自己移动,做动画起来?



1,首先,创建一个View,他是RecyclerView Item的根布局:


        public class SlideRelativeLayout extends RelativeLayout {
   
            public static final String TAG = SlideRelativeLayout.class.getSimpleName();
            private CheckBox mCheckBox;
            private RelativeLayout mContentSlide;
            private int mOffset;

        public SlideRelativeLayout(Context context) {
            super(context);
        }

        public SlideRelativeLayout(Context context, AttributeSet attrs) {
            super(context, attrs);
        }

        public SlideRelativeLayout(Context context, AttributeSet attrs, int defStyleAttr) {
            super(context, attrs, defStyleAttr);
        }

        @Override
        protected void onFinishInflate() {
            super.onFinishInflate();
            mCheckBox = (CheckBox) findViewById(R.id.item_checkbox);
            mContentSlide = (RelativeLayout) findViewById(R.id.item_content_rl);
            setOffset(35);
        }

        public void setOffset(int offset) {
            mOffset = (int) (getContext().getResources().getDisplayMetrics().density * offset + 0.5f);
        }

        @TargetApi(Build.VERSION_CODES.HONEYCOMB)
        public void openAnimation() {
            ValueAnimator valueAnimator = new ValueAnimator();
            valueAnimator.setIntValues(0, 1);
            valueAnimator.setDuration(
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值