一、动画基本四中
Tween Animation 变换动画
从布局 设置
loadAnimation = AnimationUtils.loadAnimation(this, R.anim.alpha);
image.startAnimation(loadAnimation);
代码调用
loadAnimation = AnimationUtils.loadAnimation(this, R.anim.scale);
image.startAnimation(loadAnimation);
位移动画
代码实现、
loadAnimation = AnimationUtils
.loadAnimation(this, R.anim.translate);
image.startAnimation(loadAnimation);
loadAnimation = AnimationUtils.loadAnimation(this, R.anim.rotate);
image.startAnimation(loadAnimation);
布局
两个布局分别加载后串联在一起
代码实现
loadAnimation = AnimationUtils
.loadAnimation(this, R.anim.translate);
image.startAnimation(loadAnimation);
final Animation loadAnimation2 = AnimationUtils.loadAnimation(this,
R.anim.rotate);
//设置动画监听器
loadAnimation.setAnimationListener(new AnimationListener() {
@Override
public void onAnimationStart(Animation arg0) {
// TODO Auto-generated method stub
}
@Override
public void onAnimationRepeat(Animation arg0) {
// TODO Auto-generated method stub
}
@Override
public void onAnimationEnd(Animation arg0) {
// TODO Auto-generated method stub
image.startAnimation(loadAnimation2);
}
});
组合动画二
配置文件配在一起
loadAnimation = AnimationUtils.loadAnimation(this,
R.anim.continue_anim);
image.startAnimation(loadAnimation);
不用配置文件,用代码实现效果
AlphaAnimation alphaAnimation = new AlphaAnimation(0.1f, 1.0f);
alphaAnimation.setDuration(100);
alphaAnimation.setRepeatCount(10);
//倒叙重复REVERSE 正序重复RESTART
alphaAnimation.setRepeatMode(Animation.REVERSE);
image.startAnimation(alphaAnimation);
zoomin.xml布局文件和zoomout.xml布局文件
Intent intent=new Intent(MainActivity.this,MainActivity2.class);
startActivity(intent);
overridePendingTransition(R.anim.zoom_in,R.anim.zoom_out);
案例,listview条目随机显示动画
布局文件
用的上面的
代码实现
listView.setAdapter(adapter);
// 布局动画控制器
LayoutAnimationController lac=new LayoutAnimationController(AnimationUtils.loadAnimation(this, R.anim.zoom_in));
// 设置顺序
lac.setOrder(LayoutAnimationController.ORDER_NORMAL);
listView.setLayoutAnimation(lac);
listView.startLayoutAnimation();
布局文件,是放在drable文件夹下
代码实现
image.setImageResource(R.drawable.anim_list);
ObjectAnimator用法
传动动画是系统不断调用ondraw方法去重绘动画很耗资源。传统的animation动画的监听事件还在原来的位置。而属性动画则是getset方法等实现
ObjectAnimator.offLoat(imageview控件对象,“translationX方向偏移量”,0F起始位置,200F终止位置).setDuration(1000).start()
ObjectAnimator.offLoat(imageview控件对象,“rotation旋转”,0F起始位置,360F终止位置).setDuration(1000).start()
上面连个是同时进行的
PropertyValuesHolder p1=PropertyValuesHolder .offLoat(“rotation旋转”,0F起始位置,360F终止位置)
PropertyValuesHolder p2=PropertyValuesHolder .offLoat(“translationX”,0F起始位置,200F终止位置)
ObjectAnimator.ofPropertyValuesHolder(imageview,p1,p2).setDuration(1000).start()
和上面的效果是一样的,但内部做了优化效率更高
使用动画集来控制
效果和上面的一样,可以调用playSequentially方法是按顺序播放,也可以set.play(animator2).with(animator3);set.play(animator1).with(animator2)先移动后旋转
动画添加事件
也可以添加单个事件
Valueanimator动画
实例
自定义数值
PointF泛型