給Android ListView列表添加數據展示動畫
給ListView的數據展示 做點動畫效果,數據較多時,手指往上拉動數據時,下面的數據感覺是往上推的,直接上關鍵代碼:
---------------------動畫文件res/anim:---------------------------------
up_from_bottom.xml:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="@android:anim/decelerate_interpolator">
<translate
android:fromXDelta="0%" android:toXDelta="0%"
android:fromYDelta="100%" android:toYDelta="0%"
android:duration="300" />
</set>
down_from_top.xml:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="@android:anim/decelerate_interpolator">
<translate
android:fromXDelta="0%" android:toXDelta="0%"
android:fromYDelta="-100%" android:toYDelta="0%"
android:duration="300" />
</set>
------------在ListView的Adapter中使用------------
public class MyAnimAdapter extends BaseAdapter {
private int lastPosition = -1;
.........................
public BeforeRecordAdapter(Context context) {
super(context);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder;
if (null == convertView) {
viewHolder = new ViewHolder();
convertView = mInflater.inflate(R.layout.item_my_anim, null);
viewHolder.winnerTv = (TextView) convertView.findViewById(R.id.period_record_winner_name_tv);
viewHolder.ipTv = (TextView) convertView.findViewById(R.id.period_record_ip_tv);
viewHolder.userIdTv = (TextView) convertView.findViewById(R.id.period_record_winner_id_tv);
convertView.setTag(viewHolder);
}
else {
viewHolder = (ViewHolder) convertView.getTag();
}
setBeforeItemData(viewHolder, position);
.................//設置數據
if (position > lastPosition) {//這里就是動畫的應用
Animation animation = AnimationUtils.loadAnimation(mContext, (position > lastPosition) ? R.anim.up_from_bottom : R.anim.down_from_top);
convertView.startAnimation(animation);
lastPosition = position;
}
return convertView;
}
private static class ViewHolder {
private TextView winnerTv;
private TextView ipTv;
private TextView userIdTv;
public int rp;
}
}