Android动画有什么用?duang!当然是给程序加特效!
1.Android动画的分类
1.Tween Animation 变换动画
2.Frame Animation 帧动画
3.Layout Animation 布局动画
4.Property Animation 属性动画
Android 动画有这四种。其中变换动画
、帧动画
、布局动画
这三种动画为传统动画。属性动画
我们将在下一篇介绍。
1.1动画的实现方式
1.XML配置文件实现:通过在res/anim目录下创建xml文件来进进行动画实现
2.Java代码实现:通过系统提供的各种动画类进行动画实现,更灵活。
1.2Tween Animation 变换动画
变换动画有四种:
Alpha:渐变透明度变化
Scale:改变尺寸缩放动画
Translate:位置移动动画
Rotate:旋转动画
1.2.1 Alpha
最简单的一个动画,改变透明度。
Alpha实现(Java代码):
Animation animation = new AlphaAnimation(0.1f, 1.0f);
animation.setDuration(3000);
imageView.startAnimation(animation);
Alpha实现(XML):
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<alpha
android:duration=3000//其实在xml中是没有这个属性的,网上这么写的都是sdk8版本的,用的sdk版本是25
android:fromAlpha="0.1"
android:toAlpha="1.0"
/>
</set>
在代码中加载xml:
Animation animation = AnimationUtils.loadAnimation(this, R.anim.alpha);//加载xml
animation.setDuration(2000);
imageView.startAnimation(animation);
动画效果:
alpha.gif1.2.2 Scale
能实现对缩放。
public ScaleAnimation(float fromX, float toX, float fromY, float toY,
float pivotX, float pivotY) {
}
public ScaleAnimation(float fromX, float toX, float fromY, float toY,
int pivotXType, float pivotXValue, int pivotYType, float pivotYValue) {
}
private boolean applyLegacyAnimation(ViewGroup parent, long drawingTime,
Animation a, boolean scalingRequired) {
Transformation invalidationTransform;
final int flags = parent.mGroupFlags;
final boolean initialized = a.isInitialized();
if (!initialized) {
a.initialize(mRight - mLeft, mBottom - mTop, parent.getWidth(), parent.getHeight());
a.initializeInvalidateRegion(0, 0, mRight - mLeft, mBottom - mTop);
if (mAttachInfo != null) a.setListenerHandler(mAttachInfo.mHandler);
网友评论