1、帧动画
主要涉及到 AnimationDrawable 类。
(1)通过 XML 文件实现
现在drawable
目录下定义好 XML 文件(假设文件名为xml_name
):
<?xml version="1.0" encoding="utf-8"?>
<animation-list
android:oneshot="true"
xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:drawable="@drawable/a_0"
android:duration="100" />
<item
android:drawable="@drawable/a_1"
android:duration="100" />
<item
android:drawable="@drawable/a_2"
android:duration="100" />
</animation-list>
(android:oneshot=”false” ,这个oneshot 的含义就是动画执行一次(true)还是循环执行多次。)
然后用Java代码开启:
ImageView imageview = (ImageView) findViewById(R.id.imageview)
imageview.setImageResource(R.drawable.xml_name)
AnimationDrawable animationDrawable = (AnimationDrawable) imageview.getDrawable()
animationDrawable.start()
(2)只通过 Java 代码实现
AnimationDrawable animationDrawable = new AnimationDrawable()
int[] mipmaps = new int[]{R.drawable.a_0,R.drawable.a_1,R.drawable.a_2}
for (int i = 0
int id=mipmaps[i]
//或者使用下面方式,注意如果图片资源放在mipmap下时将drawable修改下
//int id = getResources().getIdentifier("a_" + i, "drawable",getPackageName())
Drawable drawable = getResources().getDrawable(id)
animationDrawable.addFrame(drawable, 200)
}
animationDrawable.setOneShot(false)
imageView.setBackgroundDrawable(animationDrawable)
animationDrawable.start()
2、补间画
补间动画又可以分为四种形式,分别是 alpha(淡入淡出),translate(位移),scale(缩放大小),rotate(旋转)。
主要涉及到 Animation 类。
通过 XML 文件实现时需要在res/anim/ 文件夹下定义相关文件。
可以是单独的以<alpha />
、<scale />
等标签实现的单独的动画,也可以使用使用set
标签将多个动画组合
宁波整形美容医院http://www.iyestar.com/
宁波整容医院http://www.lyxcl.org/
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@[package:]anim/interpolator_resource"
android:shareInterpolator=["true" | "false"] >
<alpha
android:fromAlpha="float"
android:toAlpha="float" />
<scale
android:fromXScale="float"
android:toXScale="float"
android:fromYScale="float"
android:toYScale="float"
android:pivotX="float"
android:pivotY="float" />
<translate
android:fromXDelta="float"
android:toXDelta="float"
android:fromYDelta="float"
android:toYDelta="float" />
<rotate
android:fromDegrees="float"
android:toDegrees="float"
android:pivotX="float"
android:pivotY="float" />
<set>
...
</set>
</set>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
有涉及到:
Interpolator
主要作用是可以控制动画的变化速率 ,就是动画进行的快慢节奏。Android 系统已经为我们提供了一些Interpolator ,比如 accelerate_decelerate_interpolator
,accelerate_interpolator
等。更多的interpolator 及其含义可以在Android SDK 中查看。同时这个Interpolator也是可以自定义的。
pivot
决定了当前动画执行的参考位置,这个属性主要是在translate
和 scale
动画中,这两种动画都牵扯到view 的“物理位置“发生变化,所以需要一个参考点。而pivotX
和pivotY
就共同决定了这个点;它的值可以是float或者是百分比数值。
然后在 Java 代码中:
Animation animation = AnimationUtils.loadAnimation(mContext, R.anim.xml_name)
img = (ImageView) findViewById(R.id.img)
img.startAnimation(animation)
另外也可以直接使用 Java 代码实现。
借助RotateAnimation
、AlphaAnimation
等类。
宁波整形美容医院www.iyestar.com