android的三种动画
Posted 菜鸟xiaowang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android的三种动画相关的知识,希望对你有一定的参考价值。
1.view animation 视图动画(补间动画)
只能被用来设置View的动画。
可以使用xml或者java 代码进行实现
xml放在 res/anim/ 下
android:duration 动画持续时间,以毫秒为单位
android:fillAfter 如果设置为true,控件动画结束时,将保持动画最后时的状态
android:fillBefore 如果设置为true,控件动画结束时,还原到开始动画前的状态
android:fillEnabled 与android:fillBefore 效果相同,都是在动画结束时,将控件还原到初始化状态
android:repeatCount 重复次数
android:repeatMode 重复类型,有reverse和restart两个值,reverse表示倒序回放,restart表示重新放一遍,必须与repeatCount一起使用才能看到效果。因为这里的意义是重复的类型,即回放时的动作。
android:interpolator 设定插值器,其实就是指定的动作效果,比如弹跳效果等,
java类名 | xml关键字 | 描述信息 |
---|---|---|
AlphaAnimation | <alpha> 放置在res/anim/目录下 | 渐变透明度动画效果 |
RotateAnimation | <rotate> 放置在res/anim/目录下 | 画面转移旋转动画效果 |
ScaleAnimation | <scale> 放置在res/anim/目录下 | 渐变尺寸伸缩动画效果 |
TranslateAnimation | <translate> 放置在res/anim/目录下 | 画面转换位置移动动画效果 |
AnimationSet | <set> 放置在res/anim/目录下 | 一个持有其它动画元素alpha、scale、translate、rotate或者其它set元素的容器 |
xml属性 | java方法 | 解释 |
---|---|---|
android:detachWallpaper | setDetachWallpaper(boolean) | 是否在壁纸上运行 |
android:duration | setDuration(long) | 动画持续时间,毫秒为单位 |
android:fillAfter | setFillAfter(boolean) | 控件动画结束时是否保持动画最后的状态 |
android:fillBefore | setFillBefore(boolean) | 控件动画结束时是否还原到开始动画前的状态 |
android:fillEnabled | setFillEnabled(boolean) | 与android:fillBefore效果相同 |
android:interpolator | setInterpolator(Interpolator) | 设定插值器(指定的动画效果,譬如回弹等) |
android:repeatCount | setRepeatCount(int) | 重复次数 |
android:repeatMode | setRepeatMode(int) | 重复类型有两个值,reverse表示倒序回放,restart表示从头播放 |
android:startOffset | setStartOffset(long) | 调用start函数之后等待开始运行的时间,单位为毫秒 |
android:zAdjustment | setZAdjustment(int) | 表示被设置动画的内容运行时在Z轴上的位置(top/bottom/normal),默认为normal |
Alpha属性详解 透明度
xml属性 | java方法 | 解释 |
---|---|---|
android:fromAlpha | AlphaAnimation(float fromAlpha, …) | 动画开始的透明度(0.0到1.0,0.0是全透明,1.0是不透明) |
android:toAlpha | AlphaAnimation(…, float toAlpha) | 动画结束的透明度,同上 |
Rotate属性详解 旋转
xml属性 | java方法 | 解释 |
---|---|---|
android:fromDegrees | RotateAnimation(float fromDegrees, …) | 旋转开始角度,正代表顺时针度数,负代表逆时针度数 |
android:toDegrees | RotateAnimation(…, float toDegrees, …) | 旋转结束角度,正代表顺时针度数,负代表逆时针度数 |
android:pivotX | RotateAnimation(…, float pivotX, …) | 缩放起点X坐标(数值、百分数、百分数p,譬如50表示以当前View左上角坐标加50px为初始点、50%表示以当前View的左上角加上当前View宽高的50%做为初始点、50%p表示以当前View的左上角加上父控件宽高的50%做为初始点) |
android:pivotY | RotateAnimation(…, float pivotY) | 缩放起点Y坐标,同上规律 |
Scale属性详解 缩放
xml属性 | java方法 | 解释 |
---|---|---|
android:fromXScale | ScaleAnimation(float fromX, …) | 初始X轴缩放比例,1.0表示无变化 |
android:toXScale | ScaleAnimation(…, float toX, …) | 结束X轴缩放比例 |
android:fromYScale | ScaleAnimation(…, float fromY, …) | 初始Y轴缩放比例 |
android:toYScale | ScaleAnimation(…, float toY, …) | 结束Y轴缩放比例 |
android:pivotX | ScaleAnimation(…, float pivotX, …) | 缩放起点X轴坐标(数值、百分数、百分数p,譬如50表示以当前View左上角坐标加50px为初始点、50%表示以当前View的左上角加上当前View宽高的50%做为初始点、50%p表示以当前View的左上角加上父控件宽高的50%做为初始点) |
android:pivotY | ScaleAnimation(…, float pivotY) | 缩放起点Y轴坐标,同上规律 |
Translate属性详解 移动
xml属性 | java方法 | 解释 |
---|---|---|
android:fromXDelta | TranslateAnimation(float fromXDelta, …) | 起始点X轴坐标(数值、百分数、百分数p,譬如50表示以当前View左上角坐标加50px为初始点、50%表示以当前View的左上角加上当前View宽高的50%做为初始点、50%p表示以当前View的左上角加上父控件宽高的50%做为初始点) |
android:fromYDelta | TranslateAnimation(…, float fromYDelta, …) | 起始点Y轴从标,同上规律 |
android:toXDelta | TranslateAnimation(…, float toXDelta, …) | 结束点X轴坐标,同上规律 |
android:toYDelta | TranslateAnimation(…, float toYDelta) | 结束点Y轴坐标,同上规律 |
使用
Animation animation = AnimationUtils.loadAnimation(this, R.anim.alphaanim);
btn.setAnimation(animation);
2.frame animation 帧动画 多张图片形成的效果
使用xml描述动画 xml放在res/drawable/下
3.property animation 属性动画
这种动画可以设置给任何Object,包括那些还没有渲染到屏幕上的对象。这种动画是可扩展的,可以让你自定义任何类型和属性的动画
Android 基础的三种动画 帧动画补间动画属性动画。
帧动画 drawable animation
通过xml文件声明一个帧动画
①在res目录下创建一个drawable目录 把用到的图片资源放到这个目录下 并且创建一个xml文件
根元素 animation-list可以设置一个属性 oneshot如果设置为true 动画只执行一次 执行之后停在最后一帧
animation-list 子元素item
<?xml version="1.0" encoding="utf-8"?> 2. <animation-list xmlns:android="http://schemas.android.com/apk/res/android" 3. android:oneshot="true" > //踹人的动画 4. <item android:drawable="@drawable/girl_1" android:duration="200" /> 5. <item android:drawable="@drawable/girl_2" android:duration="200" /> 6. <item android:drawable="@drawable/girl_3" android:duration="200" /> 7. <item android:drawable="@drawable/girl_4" android:duration="400" /> 8. <item android:drawable="@drawable/girl_5" android:duration="400" /> 9. <item android:drawable="@drawable/girl_6" android:duration="400" /> 10. <item android:drawable="@drawable/girl_4" android:duration="400" /> 11. <item android:drawable="@drawable/girl_5" android:duration="400" /> 12. <item android:drawable="@drawable/girl_6" android:duration="400" /> 13. <item android:drawable="@drawable/girl_4" android:duration="400" /> 14. <item android:drawable="@drawable/girl_5" android:duration="400" /> 15. <item android:drawable="@drawable/girl_6" android:duration="400" /> 16. <item android:drawable="@drawable/girl_7" android:duration="400" /> 17. <item android:drawable="@drawable/girl_8" android:duration="400" /> 18. <item android:drawable="@drawable/girl_9" android:duration="200" /> 19. <item android:drawable="@drawable/girl_10" android:duration="200" /> 20. <item android:drawable="@drawable/girl_11" android:duration="200" /> 21.</animation-list>
item 中drawable属性 对应当前帧使用的图片资源 duration指定每一帧播放的时长
②在界面的布局文件中 通过ImageView的background属性加载drawableanimation
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 2. xmlns:tools="http://schemas.android.com/tools" 3. android:layout_width="match_parent" 4. android:layout_height="match_parent" 5. android:paddingBottom="@dimen/activity_vertical_margin" 6. android:paddingLeft="@dimen/activity_horizontal_margin" 7. android:paddingRight="@dimen/activity_horizontal_margin" 8. android:paddingTop="@dimen/activity_vertical_margin" 9. tools:context=".MainActivity" > 10. 11. <ImageView 12. android:id="@+id/iv_animation" 13. android:layout_width="wrap_content" 14. android:layout_height="wrap_content" 15. android:background="@drawable/drawableanimation" /> 16.</RelativeLayout>
③在java代码中 找到imageview 通过getbackground找到Drawableanimation 资源 然后开始动画
public class MainActivity extends Activity {
2.
3. @Override
4. protected void onCreate(Bundle savedInstanceState) {
5. super.onCreate(savedInstanceState);
6. setContentView(R.layout.activity_main);
7. ImageView iv_image = (ImageView) findViewById(R.id.iv_animation);
8. //找到imageview的背景资源 这个背景就是一个帧动画 强转成帧动画对应的AnimationDrawable对象
9. AnimationDrawable anim = (AnimationDrawable) iv_image.getBackground();
10. //开启动画
11. anim.start();
12. }
以上是关于android的三种动画的主要内容,如果未能解决你的问题,请参考以下文章