Android动画相关

1、下滑动画

anim/item_animation.xml

<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate  
        android:fromXDelta="0"  
        android:fromYDelta="-100%"  

        android:toXDelta="0"  
        android:toYDelta="0"  

        android:duration="1000"  
        />
set>

在adapter中:

private Animation animation;
animation = AnimationUtils.loadAnimation(context, R.anim.item_animation);
animation.setInterpolator(new LinearInterpolator());//设置匀速
//在getView中,对convertView开启动画
convertView.startAnimation(animation);

2、其他资料
http://www.cnblogs.com/angeldevil/archive/2011/12/02/2271096.html
http://www.360doc.com/content/13/0102/22/6541311_257754535.shtml
动画学习
3、List下滑

两种效果:
    1、如果一次性会更新多个items,那么给前面多个view添加动画,并且向后的动画的开始时间逐个增加,实现淡淡划出的效果
    2、如果一次只更新一个内容,那么只需要给position为0的view添加动画即可
    3、如果通过改变Height来实现动画,那么修改高度,就不能把list对应的xml的高度固定,必须设置为wrap_content,所有组件需要设置为wrap_content
    private int mNextItemStartDelay = 0;
    private static final long ANIMATION_ITEM_DELAY_INC = 30L;//毫秒
    private static final long ANIMATION_ITEM_DELAY_MAX = 1400L;//毫秒
    private static final int ANIMATION_ITEM_DURATION = 500;
    private static final int ANIMATIONVALUE_START_HEIGHT = 1;
    private void addAnim(View convertView) {
        final View animView = convertView;
        animView.measure(0, 0);
        AbsListView.LayoutParams oldLp = (android.widget.AbsListView.LayoutParams) animView.getLayoutParams();
        if (oldLp == null) {
            oldLp = new AbsListView.LayoutParams(LayoutParams.MATCH_PARENT, 1);
        }
        final ViewGroup.LayoutParams lp = oldLp;
        final int originalHeight = animView.getMeasuredHeight();
        lp.height = 1;
        animView.setLayoutParams(lp);

        Animator animator = getAnimatorOfItemView(animView, originalHeight);
        /** 如果这里有多个item要弹出,可以采用延迟开始时间的方式
        animator.setStartDelay(mNextItemStartDelay);
        if (mNextItemStartDelay < ANIMATION_ITEM_DELAY_MAX) {
            mNextItemStartDelay += ANIMATION_ITEM_DELAY_INC;
        }
        **/
        animator.start();
    }
    private Animator getAnimatorOfItemView(final View view, final int originalHeight) {
        final ViewGroup.LayoutParams lp = view.getLayoutParams();
        ValueAnimator animator = ValueAnimator.ofInt(ANIMATIONVALUE_START_HEIGHT, originalHeight);
        animator.setDuration(ANIMATION_ITEM_DURATION);
        animator.setInterpolator(new LinearInterpolator());//线性速度
        animator.addUpdateListener(new AnimatorUpdateListener() {
            @Override
            public void onAnimationUpdate(ValueAnimator valueAnimator) {
                lp.height = (Integer) valueAnimator.getAnimatedValue();
                view.setLayoutParams(lp);
            }
        });
        animator.addListener(new AnimatorListenerAdapter() {
            @Override
            public void onAnimationEnd(Animator animation) {
                if(view.getTag() instanceof ViewHold) {
                    ViewHold holder = (ViewHold) view.getTag();
                    /** 当一次更新多个Item时,这里有用处
                    if (holder.divider != null) {
                        holder.divider.setVisibility(needDivider ? View.VISIBLE : View.GONE);
                    }
                    **/
                }
            }
        });
        return animator;
    }

4、波纹动画

http://www.kancloud.cn/digest/liuguilin/120371

你可能感兴趣的:(学习笔记)