当前位置:操作系统 > 安卓/Android >>

Android中Animation详解

Animation从总体来说可以分为两类:
Tweened Animations:该类提供了旋转,移动,伸展,淡入淡出等效果
Frame-By-Frame Animations:该类可以创建一个Drawable序列,这些Drawable可以按照指定的事件间隔一个一个显示,和动画片差不多
一、Tweened Animations
Tweened Animations也有四种类型:
Alpha:淡入淡出效果
Scale:缩放效果
Rotate:旋转效果
Translate:移动效果
设置动画效果可以在XML文件中设置,也可以在Java代码中设置。我们先来讲解在Java代码中怎么设置这四种动画效果
Java代码中设置动画效果的步骤:
创建一个AnimationSet对象(AnimationSet是存放多个Animations的集合)
根据需要创建相应的Animation对象
根据需要对Animation对象的各个属性进行设值
将Animation对象添加到AnimationSet对象中
使用控件的startAnimation()方法执行AnimationSet
Java代码中的通用属性:
setDuration(long durationMillis):设置动画持续事件(单位:毫秒)
setFillAfter(boolean fillAfter):如果fillAfter设为true,则动画执行后,控件将停留在动画结束的状态
setFillBefore(boolean fillBefore):如果fillBefore设为true,则动画执行后,控件将回到动画开始的状态
setStartOffset(long startOffset):设置动画执行之前等待的时间(单位:毫秒)
setRepeatCount(int repeatCount):设置动画重复的次数
setInterpolator(Interpolator i):设置动画的变化速度
setInterpolator(new AccelerateDecelerateInterpolator()):先加速,后减速
setInterpolator(new AccelerateInterpolator()):加速
setInterpolator(new DecelerateInterpolator()):减速
setInterpolator(new CycleInterpolator()):动画循环播放特定次数,速率改变沿着正弦曲线
setInterpolator(new LinearInterpolator()):匀速
以及其他一些特定的动画效果
Java代码中设置动画效果的Demo(AnimationDemo01):
main.xml
[html] <?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" > 
 
    <ImageView 
        android:id="@+id/imageView" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_marginTop="100dip" 
        android:src="@drawable/ic_launcher" /> 
 
    <LinearLayout 
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent" 
        android:gravity="bottom" 
        android:orientation="vertical" > 
 
        <Button 
            android:id="@+id/alphaButton" 
            android:layout_width="fill_parent" 
            android:layout_height="wrap_content" 
            android:text="测试alpha动画效果" /> 
 
        <Button 
            android:id="@+id/scaleButton" 
            android:layout_width="fill_parent" 
            android:layout_height="wrap_content" 
            android:text="测试scale动画效果" /> 
 
        <Button 
            android:id="@+id/rotateButton" 
            android:layout_width="fill_parent" 
            android:layout_height="wrap_content" 
            android:text="测试rotate动画效果" /> 
 
        <Button 
            android:id="@+id/translateButton" 
            android:layout_width="fill_parent" 
            android:layout_height="wrap_content" 
            android:text="测试translate动画效果" /> 
    </LinearLayout> 
 
</LinearLayout> 

AnimationDemoActivity.java
[java]
package com.tianjf; 
 
import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.view.animation.AlphaAnimation; 
import android.view.animation.Animation; 
import android.view.animation.AnimationSet; 
import android.view.animation.RotateAnimation; 
import android.view.animation.ScaleAnimation; 
import android.view.animation.TranslateAnimation; 
import android.widget.Button; 
import android.widget.ImageView; 
 
public class AnimationDemoActivity extends Activity implements OnClickListener { 
 
    private ImageView mImageView; 
    private Button mAlphaButton; 
    private Button mScaleButton; 
    private Button mRotateButton; 
    private Button mTranslateButton; 
 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.main); 
 
        mImageView = (ImageView) findViewById(R.id.imageView); 
        mAlphaButton = (Button) findViewById(R.id.alphaButton); 
        mScaleButton = (Button) findViewById(R.id.scaleButton); 
        mRotateButton = (Button) findViewById(R.id.rotateButton); 
        mTranslateButton = (Button) findViewById(R.id.translateButton); 
 
        mAlphaButton.setOnClickListener(this); 
        mScaleButton.setOnClickListener(this); 
        mRotateButton.setOnClickListener(this); 
        mTranslateButton.setOnClickListener(this); 

补充:移动开发 , Android ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,