Android 动画的实现
来源:互联网 发布:visual c 数据库开发 编辑:程序博客网 时间:2024/05/20 11:24
第一种,在通过xml资源文件实现动画效果
在项目的res文件下新建anim文件夹,在anim文件夹下新建文件anim_demo,内容如下:
<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android">
<!--
透明度控制动画效果 alpha
浮点型值:
fromAlpha 属性为动画起始时透明度
toAlpha 属性为动画结束时透明度
说明:
0.0表示完全透明
1.0表示完全不透明
以上值取0.0-1.0之间的float数据类型的数字
长整型值:
duration 属性为动画持续时间
说明:
时间以毫秒为单位
-->
<alpha
android:duration="3000"
android:fromAlpha="0.0"
android:toAlpha="1.0" />
<!--
尺寸伸缩动画效果 scale
属性:interpolator 指定一个动画的插入器
在我试验过程中,使用android.res.anim中的资源时候发现
有三种动画插入器:
accelerate_decelerate_interpolator 加速-减速 动画插入器
accelerate_interpolator 加速-动画插入器
decelerate_interpolator 减速- 动画插入器
其他的属于特定的动画效果
浮点型值:
fromXScale 属性为动画起始时 X坐标上的伸缩尺寸
toXScale 属性为动画结束时 X坐标上的伸缩尺寸
fromYScale 属性为动画起始时Y坐标上的伸缩尺寸
toYScale 属性为动画结束时Y坐标上的伸缩尺寸
说明:
以上四种属性值
0.0表示收缩到没有
1.0表示正常无伸缩
值小于1.0表示收缩
值大于1.0表示放大
pivotX 属性为动画相对于物件的X坐标的开始位置
pivotY 属性为动画相对于物件的Y坐标的开始位置
说明:
以上两个属性值 从0%-100%中取值
50%为物件的X或Y方向坐标上的中点位置
长整型值:
duration 属性为动画持续时间
说明: 时间以毫秒为单位
布尔型值:
fillAfter 属性 当设置为true ,该动画转化在动画结束后被应用
-->
<scale
android:duration="3000"
android:fillAfter="false"
android:fromXScale="0.0"
android:fromYScale="0.0"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:pivotX="50%"
android:pivotY="50%"
android:toXScale="1.4"
android:toYScale="1.4" />
<!--
translate 位置转移动画效果
整型值:
fromXDelta 属性为动画起始时 X坐标上的位置
toXDelta 属性为动画结束时 X坐标上的位置
fromYDelta 属性为动画起始时 Y坐标上的位置
toYDelta 属性为动画结束时 Y坐标上的位置
注意:
没有指定fromXType toXType fromYType toYType 时候,
默认是以自己为相对参照物
长整型值:
duration 属性为动画持续时间
说明: 时间以毫秒为单位
-->
<translate
android:duration="3000"
android:fromXDelta="30"
android:fromYDelta="30"
android:toXDelta="-80"
android:toYDelta="300" />
<!--
rotate 旋转动画效果
属性:interpolator 指定一个动画的插入器
在我试验过程中,使用android.res.anim中的资源时候发现
有三种动画插入器:
accelerate_decelerate_interpolator 加速-减速 动画插入器
accelerate_interpolator 加速-动画插入器
decelerate_interpolator 减速- 动画插入器
其他的属于特定的动画效果
浮点数型值:
fromDegrees 属性为动画起始时物件的角度
toDegrees 属性为动画结束时物件旋转的角度 可以大于360度
说明:
当角度为负数——表示逆时针旋转
当角度为正数——表示顺时针旋转
(负数from——to正数:顺时针旋转)
(负数from——to负数:逆时针旋转)
(正数from——to正数:顺时针旋转)
(正数from——to负数:逆时针旋转)
pivotX 属性为动画相对于物件的X坐标的开始位置
pivotY 属性为动画相对于物件的Y坐标的开始位置
说明:
以上两个属性值 从0%-100%中取值
50%为物件的X或Y方向坐标上的中点位置长整型值:
duration 属性为动画持续时间
说明: 时间以毫秒为单位
-->
<rotate
android:duration="3000"
android:fromDegrees="0"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:pivotX="50%"
android:pivotY="50%"
android:toDegrees="+350" />
</set>
然后在代码中加载动画,具体的代码实现是:
Animation animation = AnimationUtils.loadAnimation(TestActivity.this, R.anim.anim_demo);
imageview.startAnimation(animation);
animation.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
第二种在代码中直接设置动画:
private void commonImageAnim() {
ObjectAnimator animatorX = ObjectAnimator.ofFloat(imageview, "scaleX", 1.0f, 1.8f);//X轴,横向的伸缩
animatorX.setRepeatCount(3);//设置循环的次数(不包含第一次)
ObjectAnimator animatorY = ObjectAnimator.ofFloat(imageview, "scaleY", 1.0f, 1.8f);//Y轴,纵向的伸缩
animatorY.setRepeatCount(3);//设置循环的次数(不包含第一次)
ObjectAnimator rotation = ObjectAnimator.ofFloat(imageview, "rotation", 0, 360f);//旋转动画
rotation.setRepeatCount(3);//设置循环的次数(不包含第一次)
ObjectAnimator alpha = ObjectAnimator.ofFloat(imageview, "alpha", 0, 1.0f);//隐藏动画
alpha.setRepeatCount(3);//设置循环的次数(不包含第一次)
ObjectAnimator translateX = ObjectAnimator.ofFloat(imageview, "translationX", 0, 100f);//X轴,横向偏移(相对于控件本身的位置进行偏移)
translateX.setRepeatCount(3);//设置循环的次数(不包含第一次)
ObjectAnimator translateY = ObjectAnimator.ofFloat(imageview, "translationY", 0, 100f);//Y轴,纵向偏移(相对于控件本身的位置进行偏移)
translateY.setRepeatCount(3);//设置循环的次数(不包含第一次)
AnimatorSet set = new AnimatorSet();
set.setDuration(3000);//动画持续的时间
set.playTogether(animatorX, animatorY, rotation, alpha, translateX, translateY);
set.setInterpolator(new SpringScaleInterpolator(0.2f));//通过改变构造函数参数来确定动画的震荡快慢
set.start();
//添加监听事件
set.addListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animation) {
//动画开始的时候调用
}
@Override
public void onAnimationEnd(Animator animation) {
//画结束的时候调用
}
@Override
public void onAnimationCancel(Animator animation) {
//动画被取消的时候调用
}
@Override
public void onAnimationRepeat(Animator animation) {
//动画重复执行的时候调用
}
});
}
- android 动画的实现
- android动画的实现
- Android 动画的实现
- Android 帧动画的实现
- Android动画的实现原理
- Android动画特效的实现
- android中动画的实现
- Android动画的实现Animation
- Android帧动画的实现
- Android动画的实现原理
- Android帧动画的实现
- Android的值动画实现
- android 日历动画的实现
- Android中补间动画的实现
- android按钮动画的实现
- Android动画的实现原理
- Android下雪动画的实现
- Android动画的实现原理
- C++ 隐式转换
- 快速排序
- 条件表达式a?b:c是什么意思
- Ealsticsearch 5.x IK分词器
- jquery 需要加载页面触发一个js方法
- Android 动画的实现
- lvs+keepalived和haproxy+heartbeat区别
- .NET-获取项目中代码行数
- 使用TextInputLayout创建一个登陆界面
- Python风靡全宇宙,首要原因竟是它?
- HBase 常用Shell命令
- linux检测题
- 编译vs2015 有个变量找不到定义,
- Android开发之原生APP和Web APP的区别个人见解