Android animation动画效果笔记
来源:互联网 发布:ubuntu 16.04重装unity 编辑:程序博客网 时间:2024/05/20 22:04
Android的animation由四种类型组成:
XML中
alph 渐变透明度动画效果
scale 渐变尺寸伸缩动画效果
translate 画面转换位置移动动画效果
rotate 画面转移旋转动画效果
JavaCode中
AlphaAnimation 渐变透明度动画效果
ScaleAnimation 渐变尺寸伸缩动画效果
TranslateAnimation 画面转换位置移动动画效果
RotateAnimation 画面转移旋转动画效果
在XML文件中定义动画
步骤如下:
1.在res目录中新建anim文件夹
2.在anim目录中新建一个my_anim.xml(注意文件名小写)
3.在 my_anim.xml 加入动画代码
1.alph
<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android" > <alpha android:duration="1000" android:fromAlpha="0.0" android:toAlpha="1.0" /> <!-- --></set>
透明度控制动画效果 alpha 浮点型值: fromAlpha 属性为动画起始时透明度 toAlpha 属性为动画结束时透明度 说明: 0.0表示完全透明 1.0表示完全不透明 以上值取0.0-1.0之间的float数据类型的数字 长整型值: duration 属性为动画持续时间 说明: 时间以毫秒为单位
2.scale
<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android" > <scale android:duration="1000" 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" /></set>
缩放动画效果 scale 属性:interpolator 指定一个动画的插入器 在我试验过程中,使用android.res.anim中的资源时候发现 有三种动画插入器: accelerate_decelerate_interpolator 加速-减速 动画插入器 accelerate_interpolator 加速-动画插入器 decelerate_interpolator 减速- 动画插入器 其他的属于特定的动画效果 浮点型值: fromXScale 属性为动画起始时 X坐标上的伸缩尺寸 toXScale 属性为动画结束时 X坐标上的伸缩尺寸 view在x方向上从fromXScale 缩放到 toXScale尺寸 fromYScale 属性为动画起始时Y坐标上的伸缩尺寸 toYScale 属性为动画结束时Y坐标上的伸缩尺寸 view在Y方向上从fromYScale 缩放到 toYScale尺寸 说明: 以上四种属性值 0.0表示收缩到没有 1.0表示正常无伸缩 值小于1.0表示收缩 值大于1.0表示放大 pivotX 距离view左边缘的距离是整个view宽度的pivotX pivotY 距离view左边缘的距离是view父控件宽度的pivotY 说明: 以上两个属性值可以是float或者是百分比数值。 pivotX=10为距离view左边缘的距离是整个view宽度的10像素 pivotX=10% 为距离view左边缘的距离是整个view宽度的10% pivotX=10%p 为距离view左边缘的距离是view父控件宽度的10% pivotY 也是相同的原理 长整型值: duration 属性为动画持续时间 说明: 时间以毫秒为单位 布尔型值: fillAfter 属性 当设置为true ,该动画转化在动画结束后被应用
3.translate
<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android" > <translate android:duration="2000" android:fromXDelta="30" android:fromYDelta="30" android:toXDelta="-80" android:toYDelta="300" /> </set>
translate 位置变化动画画效果 整型值: fromXDelta 属性为动画起始时 X坐标上的位置 toXDelta 属性为动画结束时 X坐标上的位置 fromYDelta 属性为动画起始时 Y坐标上的位置 toYDelta 属性为动画结束时 Y坐标上的位置 注意: 没有指定fromXType toXType fromYType toYType 时候, 默认是以自己为相对参照物 长整型值: duration 属性为动画持续时间 说明: 时间以毫秒为单位
4.rotate
<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android" > <rotate android:duration="3000" android:fromDegrees="0" android:interpolator="@android:anim/accelerate_decelerate_interpolator" android:pivotX="50%" android:pivotY="50%" android:toDegrees="+350" /> </set>
rotate 旋转动画效果 属性:interpolator 指定一个动画的插入器 在我试验过程中,使用android.res.anim中的资源时候发现 有三种动画插入器: accelerate_decelerate_interpolator 加速-减速 动画插入器 accelerate_interpolator 加速-动画插入器 decelerate_interpolator 减速- 动画插入器 其他的属于特定的动画效果 浮点数型值: fromDegrees 属性为动画起始时物件的角度 toDegrees 属性为动画结束时物件旋转的角度 可以大于360度 说明: 当角度为负数——表示逆时针旋转 当角度为正数——表示顺时针旋转 (负数from——to正数:顺时针旋转) (负数from——to负数:逆时针旋转) (正数from——to正数:顺时针旋转) (正数from——to负数:逆时针旋转) pivotX 距离view左边缘的距离是整个view宽度的pivotX pivotY 距离view左边缘的距离是view父控件宽度的pivotY 说明: 以上两个属性值可以是float或者是百分比数值。 pivotX=10为距离view左边缘的距离是整个view宽度的10像素 pivotX=10% 为距离view左边缘的距离是整个view宽度的10% pivotX=10%p 为距离view左边缘的距离是view父控件宽度的10% pivotY 也是相同的原理 长整型值: duration 属性为动画持续时间 说明: 时间以毫秒为单位
在Activity中的简单使用:
public class MainActivity extends BaseActivity { private ImageView imageView; private Animation animationScale; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.id.activity_main); imageView = (ImageView) findViewById(R.id.imageview); animationScale = AnimationUtils.loadAnimation(this, R.anim.scale); imageView.startAnimation(animationScale); }
}
最后:set Animation()与startAnimation()
在onCreate()中使用 image.setAnimation可以实现和startAnimation一样的效果,但是如果你想手动开始动画比如在OnClickListener中startAnimation可以正常播放动画,setAnimation无法播放。
看下api
/** * Sets the next animation to play for this view. * If you want the animation to play immediately, use * startAnimation. This method provides allows fine-grained * control over the start time and invalidation, but you * must make sure that 1) the animation has a start time set, and * 2) the view will be invalidated when the animation is supposed to * start. * * @param animation The next animation, or null. */ public void setAnimation(Animation animation) { mCurrentAnimation = animation; if (animation != null) { animation.reset(); } } [java]/** * Start the specified animation now. * * @param animation the animation to start now */ public void startAnimation(Animation animation) { animation.setStartTime(Animation.START_ON_FIRST_FRAME); setAnimation(animation); invalidateParentCaches(); invalidate(true); }
发现set Animation没有执行 invalidateParentCaches(),invalidate(true) 这两个方法,也就是setAnimation方法里没有立即执行动画,setAnimation只是准备要播放的动画,它还需要别的条件来启动他(具体什么条件还在探索中。。。)
- Android animation动画效果笔记
- Android 开发笔记 动画效果 --Animation
- Android学习笔记之动画效果Animation
- Android 开发笔记 动画效果 --Animation
- Android 动画效果 --Animation
- Android 动画效果 --Animation
- Android 动画效果 --Animation
- Android Animation动画效果
- android Animation 动画效果
- android Animation 动画效果
- Android 动画效果animation
- Android动画(Animation)效果
- android Animation动画效果
- Android - Animation动画效果
- Android:Animation动画效果
- android动画效果Animation
- 动画效果Animation-android
- android-Animation动画效果
- mysql5.7修改密码报错 Unknown column 'password'
- Android拨打电话
- Elasticsearch 分布式存储原理
- Codeforces Round #426 (Div. 2) B. The Festive Evening
- 找朋友
- Android animation动画效果笔记
- Black Hat 2017:需要当心的10大安全威胁
- GHGL项目总结-CA
- 格式化字符串与元组
- 无广告视频存储加速一整套免费视频服务(youku视频广告太长)
- linux系统下局域网内让电脑能够共享文件
- 登陆判断
- C++11 for的使用
- windbg 常用命令详解