ListViewItem 的动画

今天翻看以前下载的demo里有个LIstView的动画,就去学习了一下。

一个开源项目 忘记哪个了。。。




用到了 SingleAnimationAdapter(单一的动画适配器) 这个类。
如果你想给ListView做一些比较简单的效果,可以试一下这个类。

该类自带的常量(我只简单的介绍一下):
DEFAULTANIMATIONDELAYMILLIS  默认延迟100毫秒
DEFAULTANIMATIONDURATIONMILLIS 默认动画持续300毫秒

概要:自定义动画的时候,写个类继承该类 实现一些方法即可,好了废话不多说了。
步骤:
一:必须实现构造方法:
 public MyListViewItemAni(BaseAdapter baseAdapter) {
  super(baseAdapter);
 }
二:必须实现的方法:
//返回每个Item之间的动画间隔几毫秒
protected long getAnimationDelayMillis()
//返回Item的动画时间持续几毫秒
protected long getAnimationDurationMillis() 
//设置单个动画(比如一维平移或者缩放)
protected Animator getAnimator(ViewGroup parent, View view)
三:可以选择是否实现的方法(另外还有,但是我没研究过,所以没给出,有兴趣的可以去看一下)
//设置动画集合(更加复杂的动画)
public Animator[] getAnimators(ViewGroup parent, View view) 
这里的ViewGroup是ListView  而View则是Item 
四:有以上基础之后,我们可以开始设置动画了:
首先我们要知道设置动画的方法:
ObjectAnimator.ofFloat( Object target, String propertyName, float... values)
target : 目标 这里就是view;
propertyName:这里属性名称有:
translationX, 我理解为 x轴平移
translationY,    Y轴平移
scaleX,对X缩放
scaleY   对Y缩放
alpha   透明度 (这个不会用,求指导)
float...values  值 可以一个或则多个 下面会讲解

五:实战,还是举几个例子吧:
1.比如我想做一个从左边移动出来的效果:
ObjectAnimator.ofFloat(view, "translationX", 0 - parent.getWidth(), 0);
解释:设置x平移动画,从-parent.getWidth(),移动到0,
2.从右边移动出来的效果 :
ObjectAnimator.ofFloat(view, "translationX", parent.getWidth(), 0);
解释:设置x平移动画,从parent.getWidth() ,移动到0,
3.同理从上或者下移动出来就是对 translationY进行操作了:
上:ObjectAnimator.ofFloat(view, "translationY", -parent.getHeight(), 0);
下:ObjectAnimator.ofFloat(view, "translationY", parent.getHeight(), 0);
4.如果要缩放,我相信你已经知道怎么做了吧?这次我们利用getAnimators做一个组合效果。
ObjectAnimator scaleX = ObjectAnimator.ofFloat(view, "scaleX", mScaleFrom, 1f);
ObjectAnimator scaleY = ObjectAnimator.ofFloat(view, "scaleY", mScaleFrom, 1f);
return  new ObjectAnimator[] { scaleX, scaleY };
另外我们可以把平移效果加入进来。
5.做组合效果时我们可以通过对不同属性进行处理外,还可以在float...values 上下工夫:
比如在之前从左边移动效果的基础之上,我们稍作修改:
ObjectAnimator.ofFloat(view, "translationX", 0 - parent.getWidth(), 0, 0 - parent.getWidth(), 0);
在原来的基础上又加了 0 - parent.getWidth(), 0,那么该动画就是从左边 到0,再到左边,再回到0;
这下这个float...values 什么意思知道了吧?

六:知道了如何制作动画效果,那么下一步就是运用到我们的ListView上啦!
 通过查看AnimationAdapter类的继承关系,我们可以发现,它间接继承了BaseAdapter。同时我们通过构造方法就可以知道,传入的参数是一个BaseAdapter,算了,不废话了。
假设我写了一个类MyAnimationAdapter extends SingleAnimationAdapter,
在Activity里我们只需要这么几行代码就可以为我们的ListView加上动画了:

MyAnimationAdapter  adapter = new MyAnimationAdapter(baseAdapter);
adapter.setListView(mListView);
mListView.setAdapter(adapter);
可以这么理解,在我们写getView()的baseAdapter适配器的基础上,加了一个动画效果,再给ListView即可,当然不要忘记setListView哦。

好了,本次学习分享就到这里了,感谢各位看官,初次学习,难免有不足之处,还望海涵,如有不正确的地方,请留言指正(喷子自重哦-0-),如果对你有帮助,也可以留言交流,咱们下期再见。









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值