Android動畫Animation簡單示例


  Animation是Android給我們提供的一個可以實現動畫效果的API,利用Animation我們可以實現一系列的動畫效果,比如縮放動畫,透明度動畫,旋轉動畫,位移動畫,布局動畫,幀動畫等等.Android基礎動畫分為四種,分別是Tween Animation,Frame Animation,Layout Animation,Property Animation.由於動畫效果不好用圖片進行展示,大家可以自己親手試試看下效果.下面給出前三種簡單的示例代碼,幫助大家進行簡單的動畫入門.

(1) Tween Animation (變換動畫)

  Tween Animation按效果可以分為四種:Alpha,Scale,Translate,Rotate,它們有一下共同屬性:

  1. Duration: 動畫持續時間(毫秒);

  2. fillAfter: 設置為True,動畫轉換在動畫結束后被應用;

  3. fillBefore: 設置為True,動畫轉換在動畫開始前被應用;

  4. interpolator: 動畫插入器(加速,減速插入器);

  5. repeatCount: 動畫重復次數;

  6. repeatMode: 正序重復/倒序重復

  7. startOffSet: 動畫之間的時間間隔

 

  ① Alpha (漸變透明度動畫)

  MainActivity.java主要代碼:  

ImageView image = (ImageView) findViewById(id.image);
Animation loadAnimation = AnimationUtils.loadAnimation(this, R.anim.alpha);
image.startAnimation(loadAnimation);

  alpha.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >

    <alpha
        android:duration="1000"
        android:fromAlpha="0.1"
        android:toAlpha="1.0" >
    </alpha>

</set>

  ② Scale (漸變尺寸縮放動畫)

  MainActivity.java主要代碼:

ImageView image = (ImageView) findViewById(id.image);
Animation loadAnimation = AnimationUtils.loadAnimation(this, R.anim.scale);
image.startAnimation(loadAnimation);

 

 

  scale.xml  

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >

    <scale
        android:duration="2000"
        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.0"
        android:toYScale="1.0" />

</set>

 

 

 

  ③ Translate (位置移動動畫)

  MainActivity.java主要代碼:  

ImageView image = (ImageView) findViewById(id.image);
Animation loadAnimationloadAnimation = AnimationUtils.loadAnimation(this, R.anim.translate);
image.startAnimation(loadAnimation);

  translate.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >

    <translate
        android:duration="1000"
        android:fromXDelta="10"
        android:fromYDelta="10"
        android:toXDelta="100"
        android:toYDelta="100" />

</set>

 

  ④ Rotate (旋轉動畫)

  MainActivity.java主要代碼:

ImageView image = (ImageView) findViewById(id.image);
Animation loadAnimation loadAnimation = AnimationUtils.loadAnimation(this, R.anim.rotate);
image.startAnimation(loadAnimation);

 

  rotate.xml  

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >

    <rotate
        android:duration="1000"
        android:fromDegrees="0"
        android:interpolator="@android:anim/accelerate_decelerate_interpolator"
        android:pivotX="50%"
        android:pivotY="50%"
        android:toDegrees="+360" />

</set>

 

(2) Layout Animation (布局動畫)

  MainActivity.java主要代碼:

Intent intent=new Intent(MainActivity.this,ListActivity.class);
startActivity(intent);

 

  ListActivity.java代碼:

package com.example.caobotao.learnanimation;

import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.os.Bundle;
import android.view.animation.AnimationUtils;
import android.view.animation.LayoutAnimationController;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class ListActivity extends Activity{
    
    private ListView listView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.list_layout);
        listView=(ListView) findViewById(R.id.listView);
        List<String>list=new ArrayList<String>();
        for(int i=0;i<20;i++)
        {
            list.add("示例"+i);
        }
        ArrayAdapter<String>adapter=new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, list);
        listView.setAdapter(adapter);
        LayoutAnimationController lac=new LayoutAnimationController(AnimationUtils.loadAnimation(this, R.anim.zoom_in));
        lac.setOrder(LayoutAnimationController.ORDER_NORMAL);
        listView.setLayoutAnimation(lac);
        listView.startLayoutAnimation();
    }

}

 

  zoom_in.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/decelerate_interpolator" >
  
  <scale
        android:duration="1000"
        android:fromXScale="0.1"
        android:fromYScale="0.1"
        android:pivotX="50%"
        android:pivotY="50%"
        android:toXScale="1.0"
        android:toYScale="1.0" />
  <alpha
        android:duration="1000"
        android:fromAlpha="0"
        android:toAlpha="1.0" />
</set>

 

(3) Frame Animation (幀動畫)

  MainActivity.java主要代碼:

ImageView image = (ImageView) findViewById(id.image);
image.setImageResource(R.drawable.anim_list);
AnimationDrawable animationDrawable = (AnimationDrawable) image.getDrawable();
animationDrawable.start();

 

   anim_list.xml

<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:drawable="@mipmap/one"
        android:duration="500"/>
    <item
        android:drawable="@mipmap/two"
        android:duration="500"/>
    <item
        android:drawable="@mipmap/three"
        android:duration="500"/>
    <item
        android:drawable="@mipmap/four"
        android:duration="500"/>
    <item
        android:drawable="@mipmap/five"
        android:duration="500"/>
    <item
        android:drawable="@mipmap/six"
        android:duration="500"/>

</animation-list>

 

作者: caobotao
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接,否則保留追究法律責任的權利。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM