如何在页面刷新后暂停动画

时间:2015-11-10 07:07:00

标签: android

我有一个ListView数据的活动,该活动在创建活动时已经过动画处理。动画 - 它将列表行从下到上滑动,就像谷歌动画一样。我也在使用swipeRefreshLayout重新加载页面,当刷新页面时,执行动画效果,即将第一个定位的行从下到上移动。

我希望只有在第一次创建页面时才执行动画效果,这意味着当重新加载页面时,动画效果(即第一行从下到上的移动)不应该是执行。

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

        ...

    mSwipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
                @Override
                public void onRefresh() {
                    refreshContent();
            }
        });
}


...

private int lastPosition = -1;

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View v = convertView;

    Animation animation =
        AnimationUtils.loadAnimation(context, (position > lastPosition)
            ? R.anim.up_from_bottom
            : R.anim.down_from_top);
    v.startAnimation(animation);
    lastPosition = position;

    return v;
}

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

在父级上设置标记以标记您已完成动画并在开始动画之前检查标记 (假设父级没有标记集):

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View v = convertView;

    // check the tag (but don't call "toString()" on a null reference)
    if (parent.getTag() == null || !parent.getTag().toString().equals("X") )
    {
        Animation animation =
            AnimationUtils.loadAnimation(context, (position > lastPosition)
            ? R.anim.up_from_bottom
            : R.anim.down_from_top);

        v.startAnimation(animation);

        parent.setTag("X");
    }
    // not sure whether the next statement has to go into the if-block:
    lastPosition = position;

    return v;
}
相关问题