Animations的第二种使用方法 XML
代码写在java文件中的
优点:初学者看着舒服,代码的调试都很方便,断点。
缺点:代码的可复用性太低。面向对象的终极目标:减少重复代码。
代码写在XML文件中的
优点:A和B控件可以同时使用一个动画效果,提高了复用性。可维护性变高了。 比如,老板说:渐变效果变成缩小效果
缺点:代码语法可以由编译器来检查,调试费劲。
XML形式使用Animations的TweenedAnimations的步骤
1、在res文件夹下面新建名为anim的文件夹
2、在该文件夹下创建xml文件,并首先加入set标签,该标签属性设置如下: set表示集合,一系列的admations
<set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_interpolator" android:shareInterpolator="true"> </set>
3、在set标签中加入rotate、alpha、scale或者translate标签
4、在代码中使用AnimationUtils(通常Utils结束的类里面都包含了一些静态函数,工具方法)装载xml文件,并生成Animation对象
1、XML形式的alpha动画
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_interpolator"> <alpha android:fromAlpha="1.0" android:toAlpha="0.0" android:startOffset="500" android:duration="500"> </alpha> </set>
2、Java中触发
使用AnimationUtils装载动画设置文件。
imageView.startAnimation(animation);
private class AlphaButtonListenenr implements View.OnClickListener{ @Override public void onClick(View v) { Animation animation = AnimationUtils.loadAnimation(MainActivity.this, R.anim.alpha); imageView.startAnimation(animation); } }
上面一次执行animationSet.addAnimation()然后执行的是admationSet对象。
这里怎么就直接执行animation对象呢?
首先startAnimation(animation) 接受的参数是Animation类型,为什么上次穿的animationSet也没有问题呢,因为animationSet是Animation的子类,向上转型。
1、XML形式的Rotate动画
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_interpolator"> <rotate android:fromDegrees="0" android:toDegrees="+350" android:pivotX="50%" android:pivotY="50%" android:duration="3000"> </rotate> </set>
pivoX Y的三种形式:
- android:pivotX="50" 使用绝对位置定位
- android:pivotX="50%" 相对于控件本身定位
- android:pivotX="50%p" 相对于控件的父控件定位
<translate android:fromXDelta="50%“ android:toXDelta="70%“ android:fromYDelta="0%“ android:toYDelta="80%" android:duration="3000"/> <scale android:fromXScale="1.0" android:toXScale="0.0“ android:fromYScale="1.0" android:toYScale="0.0" android:pivotX="50%“ android:pivotY="50%“ android:duration="3000"/>
时间: 2024-11-06 07:39:44