Android动画相关
2016-06-26 23:48
411 查看
1、下滑动画
在adapter中:
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下滑
4、波纹动画
anim/item_animation.xml
<?xml version="1.0" encoding="utf-8"?> <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
相关文章推荐
- [Android] android通过wifi真机调试
- 【Android】多线程
- Android ADB常用命令
- Android使用技巧------LocalBroadcastManager的使用
- Android视图加载到窗体的流程分析
- Android进程管理
- Android 使用Socket实现服务器与手机客户端的长连接三:clientA 发送给clientB,定点发送
- Fragment使用小记
- android开发脚本之awk
- Android 2.3上使用FrameLayout遇到的问题
- android返回键调用
- Android简易实战教程--第四话《最简单的短信发送器》
- Android简易实战教程--第四话《最简单的短信发送器》
- Android Studio体验(二)--创建项目和Genymotion试用
- Android SDK和API Level对照表
- Android权限最佳实践和代码实例分析
- android ContentProvider的使用
- android全屏和去除标题and永远横屏锁定
- Android JNI 中文字符传递
- Android 使用socket 实现简单的客户端和服务器端互相通信