我有一个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;
}
感谢您的帮助。
答案 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;
}