使ItemDecoration随动画移动

10

我在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);
}

你找到解决方案了吗? - ernazm
很抱歉,不行。 - planetastro
1
你是否正在使用RV项目动画器?在这种情况下,请查看此帖子:https://dev59.com/Hl4b5IYBdhLWcg3wfhuR - Mimmo Grottoli
@MimmoGrottoli 非常有帮助,谢谢! - planetastro
你应该提供一些代码,帮助我们了解你是如何执行动画的。是在整个RecyclerView上还是在其项上执行的? - Beloo
@Beloo 已添加,你有没有找到解决方法? - planetastro
2个回答

3

-3

您可以阅读文档

或者如果需要动画装饰,您可以尝试这个:

https://github.com/slidenerd/materialtest

谢谢,如果您从中没有得到解决方案,请问我,我会尽最大努力为您提供更好的解决方案。:)


谢谢提供链接,但是文档并没有明确说明如何执行“延迟”装饰。你还有其他的方法吗? - planetastro
延迟装饰是什么意思?你是指惰性加载吗?还是其他什么? - Jamil Hasnine Tamim
我的意思是延迟装饰,就像在动画之后或与动画一起出现,就像我的原始问题。 - planetastro

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接