android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:fromDegrees="0"
android:toDegrees="360"
android:duration="1000"
android:repeatCount="1"
android:repeatMode="restart"/>
其中:
fromDegrees:表示旋转的起始角度
toDegrees:表示旋转的结束角度
repeatCount:旋转的次数 默认值是0 代表旋转1次 如果值是repeatCount=4 旋转5次,值为-1或者infinite时,表示补间动画永不停止
repeatMode 设置重复的模式。默认是restart。当repeatCount的值大于0或者为infinite时才有效。
repeatCount=-1 或者infinite 循环了
还可以设成reverse,表示偶数次显示动画时会做与动画文件定义的方向相反的方向动行。-->
c、alpha_anim.xml(透明度):
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:fromAlpha="1.0"
android:toAlpha="0.1"
android:duration="2000"/>
其中:
fromAlpha :表示起始透明度
toAlpha:表示结束透明度
1.0表示完全不透明
0.0表示完全透明
d、scale_anim.xml:(大小缩放动画)
android:interpolator="@android:anim/accelerate_interpolator"
android:fromXScale="0.2"
android:toXScale="1.5"
android:fromYScale="0.2"
android:toYScale="1.5"
android:pivotX="50%"
android:pivotY="50%"
android:duration="2000"/>
其中
fromXScale:表示沿着x轴缩放的起始比例
toXScale:表示沿着x轴缩放的结束比例
fromYScale:表示沿着y轴缩放的起始比例
toYScale:表示沿着y轴缩放的结束比例
pivotX、pivotY 表示图片大小缩放轴点
2、在布局文件中用ImageView控件作为动画载体来显示动画,同样可设置button按钮来显示不同的动画
3、声明Animation
Animation animation= AnimationUtils.loadAnimation(this,R.anim.translate_anim);;
animation.setRepeatCount(Animation.INFINITE);//循环显示
mImageView.startAnimation(animation);
补充:当然可以将这些动画设置在一起在anim文件夹下创建all_anim.xml使这些动画同时实现
完整代码如下:
public class MainActivity extends AppCompatActivity implementsView.OnClickListener {
private ImageView mImageView;
private Button mBtTranslate,mBtRotate,mBtScale,mBtAlpha,mBtAll;
private Animationanimation;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mImageView= (ImageView) findViewById(R.id.iv);
mBtTranslate= (Button) findViewById(R.id.bt_translate);
mBtRotate= (Button) findViewById(R.id.bt_rotate);
mBtScale= (Button) findViewById(R.id.bt_scale);
mBtAlpha= (Button) findViewById(R.id.bt_alpha);
mBtAll= (Button) findViewById(R.id.bt_all);
mBtTranslate.setOnClickListener(this);
mBtRotate.setOnClickListener(this);
mBtScale.setOnClickListener(this);
mBtAlpha.setOnClickListener(this);
mBtAll.setOnClickListener(this);
}
@Override
public void onClick(View view) {
switch(view.getId()){
caseR.id.bt_translate:
animation= AnimationUtils.loadAnimation(this,R.anim.translate_anim);
break;
caseR.id.bt_rotate:
animation= AnimationUtils.loadAnimation(this,R.anim.rotate_anim);
break;
caseR.id.bt_scale:
animation= AnimationUtils.loadAnimation(this,R.anim.scale_anim);
break;
caseR.id.bt_alpha:
animation= AnimationUtils.loadAnimation(this,R.anim.alpha_anim);
break;
caseR.id.bt_all:
animation= AnimationUtils.loadAnimation(this,R.anim.all_anim);
}
animation.setRepeatCount(Animation.INFINITE);//循环显示
mImageView.startAnimation(animation);
}
}
三、属性动画 :PropertyAnimation
补间动画的增强版
属性动画的两大特点:
1、可以定义任何属性的变化
2、可以对任何对象执行动画
属性动画能够定义的属性:
1、动画的持续时间
2、动画的插入方式
3、动画的重复次数
4、动画的行为
5、动画集
6、每一帧刷新的频率
. . . . . . . .
属性动画的使用步骤:
1、在drawable文件夹下创建animator文件夹,在animator文件夹下创建对应的object_anim_x.xml文件 内容如下:
android:propertyName="scaleX" //想要变化的属性名称
android:duration="5000" //改变的时间
android:valueType="floatType" //改变的值的类型
android:valueFrom="1.0" //改变前的值
android:valueTo="3.0"> //改变后的值
2、同样的需要一个ImageView控件作为动画载体来显示动画
3、声明ObjectAnimator
ObjectAnimator objectAnimation = (ObjectAnimator) AnimatorInflater.loadAnimator(this,
R.animator.object_anim_x);
objectAnimation . setTarget(mImageView);
objectAnimation . start();
完整代码如下:
public class MainActivity extends AppCompatActivity {
privateImageViewmImageView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mImageView= (ImageView) findViewById(R.id.iv);
ObjectAnimator objectAnimation = (ObjectAnimator) AnimatorInflater.loadAnimator(this,
R.animator.object_anim_x);
objectAnimation . setTarget(mImageView);
objectAnimation . start();
}
}
属性动画很强大,这里只列举了其中一种,补间动画能够对View进行位移的改变,旋转,透明度和大小缩放,但是一旦超过这四种动画补间动画就无能为力了,此时我们可以使用属性动画来实现我们想要达到的效果。属性动画相当于补间动画的增强版,是3.0后推出的动画,使用简单、容易实现,当然也有一定的局限性,就是需要3.0以上的API支持,限制较大。