使用Android的Animator对控件添加一个动画效果
项目中遇到需要对一个文本TextView控件添加一个淡入淡出的动画效果,使其配合引导页的GIF图成为动态显示,这里引申出了我解决这个问题的办法。
一、 需要涉及到的类和相关方法
- AlphaAnimation类:淡入淡出的动画
- TranslateAnimation类:控件移动的动画
- AnimationSet类:统一处理多种动画执行的类
在以上的三个方法中,最简单的做法是:构造一个新的该类对象都需要在初始化的时候填入对应的参数,例如:
//示例代码
AlphaAnimation aa = new AlphaAnimation(0,1); //透明度从 0 到 1
aa.setDuration(1000); //持续时间1000ms
TranslateAnimation ta = new TranslateAnimation(0,0,200,0);
//这四个参数分别表示:动画开始的X轴位置,动画结束后的X轴位置,动画开始的Y轴位置,动画结束的Y轴位置。 0表示控件的当前在xml中布局的位置。
ta.setDuration(1000);
ta.setFillAfter(true);//是否保持动画结束时的状态
AnimationSet as =new AnimationSet(true);
as.addAnimation(aa);//添加动画
as.addAnimation(ta);
view.findViewById(R.id.tvTitle).startAnimation(as);//绑定控件
通过上面的示例代码不难发现,通过代码就可以实现简单的动画控制,上面这个动画的效果就是实现了一个控件从初始位置200dp的地方在1s内缓缓上升,同时从透明慢慢变为可见的过程。
二、 实际使用控制
通常使用AndoridAnimator的情况一般都是在无法使用Gif的时候,因为很多时候使用Gif会导致屏幕适配的问题不好解决,所以才手动绘制动画。
需要注意的是,在使用多个动画的时候,如果几个动画的时间和其他需求不好匹配的时候,可以通过使用Handler延迟来配合使用,例如:
getHandler().postDelayed(new Runnable() {
@Override
public void run() {
view.findViewById(R.id.tv_guide_title).setVisibility(View.VISIBLE);
showAnimator();
}
},2500); //延迟2500ms
后续可能会有更新