給Android ListView列表添加數據展示動畫

fydxdk 10年前發布 | 32K 次閱讀 Android Android開發 移動開發

給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;

}
}

 本文由用戶 fydxdk 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!