我尝试使用以下代码在我的ListView项目中实现(类似Google+)动画的幻灯片底部。
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if(convertView == null) {
LayoutInflater inflater = (LayoutInflater)context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.row_layout, null);
}
convertView.setVisibility(View.INVISIBLE);
//Setting values to list items.
convertView.startAnimation(AnimationUtils.loadAnimation(context, R.anim.abc_slide_in_bottom));
convertView.setVisibility(View.VISIBLE);
return convertView;
}
动画正在运行,列表项从底部推送。但问题是,当我向下滚动时,顶部已有的项目重复动画,看起来很奇怪。当我向上滚动时,动画再次重复。我很确定这不是实现这个动画的正确方法。有没有办法在不使用任何库的情况下实现它?
编辑:我从BaseAdapter扩展到实现适配器。
答案 0 :(得分:2)
如果您只希望动画仅在向下滚动时起作用,则需要检测是否向下滚动列表视图并启动动画。
<强>样品:强>
在 BaseAdapter
中创建全局lastPosition
实例
int lastPosition;
使用lastPosition后检测你是否向下或向上滚动
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if(convertView == null) {
LayoutInflater inflater = (LayoutInflater)context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.row_layout, null);
}
//if scroll down then play animation
if(position <= lastPosition)
convertView.startAnimation(AnimationUtils.loadAnimation(context, R.anim.abc_slide_in_bottom));
convertView.setVisibility(View.INVISIBLE);
convertView.setVisibility(View.VISIBLE);
lastPosition = position;
return convertView;
}