- TranslateAnimation(平移动画)
1.1静态实现
1.1.1 res/anim在该文件夹中创建动画的xml资源文件
动画资源文件中设置XY方向上的距离时,可以设置像素值,也可以设置百分比
translate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromXDelta="0"
android:toXDelta="500"
android:fromYDelta="0"
android:toYDelta="0"
android:duration="2000"
android:repeatCount="infinite"
android:repeatMode="reverse"
通过引入xml文件的方式加载一个动画
TranslateAnimation animation = (TranslateAnimation)
AnimationUtils.loadAnimation(this, R.anim.translate);
让动画动起来
animation.start();
把平移动画和iv对象进行绑定
iv.setAnimation(animation);
1.2 动态的添加动画
12.1创建TranslateAnimation的类拿到他的对象
int fromXType, float fromXValue, int toXType, float toXValue,
int fromYType, floatfromYValue, int toYType, float toYValue
int fromXType :x坐标起始位置的类型 (1、相对自己,2相对父布局,3 绝对位置)
float fromXValue :x坐标起始位置的值
TranslateAnimation animation = new TranslateAnimation(
Animation.RELATIVE_TO_SELF, 0f,
Animation.RELATIVE_TO_SELF, 1f,
Animation.RELATIVE_TO_SELF, 0f,
Animation.RELATIVE_TO_SELF, 0f
1.2.2 设置各种属性
设置动画重复的次数
animation.setRepeatCount(Animation.INFINITE);
设置动画,单次执行的时间
animation.setDuration(2000);
设置动画执行的模式,(Animation.REVERSE,重复,Animation.RESTART往返)
animation.setRepeatMode(Animation.RESTART);
开始动画
animation.start();
让iv实现动画效果
iv.setAnimation(animation);
1.3 其他三种动画的实现与平移动画的过程一样,只不过需要使用相对应的类,
设置对应的属性值
ScaleAnimation(缩放动画)
RotateAnimation(旋转动画)
AlphaAnimation(透明度动画)
1.4 使用组合动画
1.4.1通过xml资源文件把多个动画节点放在anim文件夹下的节点中
set xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="2000"
android:repeatCount="infinite"
android:repeatMode="restart">
**translate**
android:duration="3000"
android:fromXDelta="0"
android:repeatCount="infinite"
android:toXDelta="300" />
**rotate**
android:fromDegrees="0"
android:toDegrees="360"
android:repeatCount="infinite"
android:pivotY="50%"
android:pivotX="50%"
</set>
使用Animation的类来加载动画
Animation animation = AnimationUtils.loadAnimation(this,R.anim.set_animat);
animation.start();
iv.setAnimation(animation);
- 补间动画的应用
2.1从一个Activity跳转到另一个Activity的动画
2.1.1 一部分是第一个activity退出时的动画;另外一部分是第二个activity进入时的动画;
在Android的2.0版本之后,有了一个函数来帮我们实现这个动画。
这个函数就是 overridePendingTransition
这个函数有两个参数,一个参数是第一个activity进入时的动画,另外一个参数则是第二个activity退出
时的动画。
这里需要特别说明的是,关于overridePendingTransition这个函数,有两点需要主意
1.它必需紧挨着startActivity()或者finish()函数之后调用”
2.它只在android2.0以及以上版本上适用
translate_in.xml
translate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromXDelta="100%"
android:toXDelta="0"
android:duration= "2000"
/>
translate_out.xml
translate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromXDelta="0"
android:toXDelta="-100%"
android:duration= "2000"
/>
Intent intent = new Intent(MainActivity.this, TweenAnimActivity.class);
startActivity(intent);
添加Activity跳转时的动画效果
overridePendingTransition(R.anim.tran_in,R.anim.tran_out);
退出时的动画的代码:
public boolean onKeyDown(int keyCode, KeyEvent event) {
/**
* 1.判断到当前点击的按键为返回键
* 2.既然自己判断了返回键的监听事件,就要按自己来实现返回的功能;
*/
if (keyCode == KeyEvent.KEYCODE_BACK) {
finish();
overridePendingTransition(R.anim.back_in, R.anim.back_out);
}
return super.onKeyDown(keyCode, event);
}