android - 使用 Animation 使 ItemDecoration 移动

标签 android android-recyclerview

我在我的 RecyclerView 中实现了 ItemDecoration 以及每当加载 RV 时播放的动画。但是,我注意到在动画完成之前装饰已经出现在边界处,我想让装饰与动画同时移动。我该怎么做?

到目前为止,我一直是这样进入动画的:

@Override
    public void onBindViewHolder(final RecyclerVH recyclerVH, final int position) {
    currentNote = data.get(position);
    final String currentTitle = currentNote.getTitle();
    final String currentContent = currentNote.getContent();
    final int currentPosition = currentNote.getPosition();
    String currentAlarmDate = currentNote.getAlarm();

    Log.d("RecyclerView", "onBindVH called: " + currentTitle);
    Log.d("RecyclerView", "Position at: " + currentPosition + " and Adapter Position at: " + recyclerVH.getAdapterPosition());

    // final Info currentObject = data.get(position);
    // Current Info object retrieved for current RecyclerView item - USED FOR DELETE
    recyclerVH.listTitle.setText(currentTitle);
    recyclerVH.listContent.setText(currentContent);
    Log.d("RecyclerAdapter", "currentAlarmDate is: '" + currentAlarmDate + "'");
    if (currentAlarmDate != null && !currentAlarmDate.equals(" ")) {
        Log.d("RecyclerAdapter", "Current Alarm set for: " + currentAlarmDate);
        recyclerVH.alarm.setText(currentAlarmDate);
    } else
        recyclerVH.alarm.setText(R.string.no_alarm);

    /*recyclerVH.listTitle.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // Open new Activity containing note content
            Toast.makeText(this, "Opening: " + currentObject.title, Toast.LENGTH_LONG).show();
        }
    });*/
    runEnterAnimation(recyclerVH.itemView, position);
}


private void runEnterAnimation(View itemView, int position) {
    // Starts Animation

    Animation animation = AnimationUtils.loadAnimation(context,
            position >= lastAnimatedPosition ? R.anim.up_from_bottom : R.anim.down_from_top);
    // If true, up_from_button is loaded
    itemView.startAnimation(animation);
    lastAnimatedPosition = position;
    Log.d("RecyclerAdapter", "lastAnimatedPosition is now: " + lastAnimatedPosition);
}

最佳答案

@Mimmo Grottoli 的回答似乎是最接近解决方案的。查看这篇文章:How to disable RecyclerView item decoration drawing for the duration of item animations

关于android - 使用 Animation 使 ItemDecoration 移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36843322/

相关文章:

android - 编辑文本奇怪的行为

android - 当我滚动 recyclerview 时,recyclerview 项目会发生变化

android - 如何取消适配器通知?

java - 更改单个附加的 TextView 文本对齐方式

Android获取颜色作为字符串值

java - 将单选按钮和复选框值传递给另一个 Activity

android - Recyclerview 中的 Diffutil,如果添加新项目则自动滚动

安卓 : Z-index of a "RecyclerView.ItemDecoration"

java - android.database.CursorIndexOutOfBoundsException...再一次

android - 在 Unity3D 中构建后如何使 IBM Watson VR Speech Sandbox 在 Android 上运行