`
chengfengyang
  • 浏览: 20948 次
社区版块
存档分类
最新评论

android中的animations的用法 (一)

阅读更多
Animations 可分为两大类:

一 Tweened Animations,该类Animations提供了旋转,移动,伸展,和淡入淡出等效果

二 Frame-by-Frame Animations ,该类Animations 可以创建一个Drawable序列,这些Drawable可能按照指定的时间一个一个的显示,类似于电影.

Tweened Animations 有这4种分类

1 Alpha         淡入淡出

2 Rotate       旋转

3 Scale          缩放

4 Translate     移动

使用Tweened Animations 的步骤

1.  创建一个Animations 对象

2.  根据需要创建相应的Animation对象

3.  按照需求,为Animation 对象设置相应的数据

4.  将Animation对象添加到AnimationSet对象当中

5.  使用控件对象开始执行AnimationSet 

各种Animation 的主要属性

Animation type           |             attributes                 |               valid  values               

     Alpha                             fromAlpha/toAlpha                       Float  from 0  to  1

     Scale                            fromXScale/toXScale                      Float  from 0 to   1

                                        fromYScale/toYScale                      Float  from 0 to    1

                                        pivotX/pivotY                                String of the percentage of graphic

                                                                                           width/height from 0% to 100%

   Translate                        fromX/to X                                   Float from 0 to 1

                                        from Y/to Y                                   Float from 0 to 1

   Rotate                          fromDegrees/toDegrees                  Float from 0 to 360

                                       pivotX/pivotY                                String of the percentage of graphic

                                                                                           width/height from 0% to 100%

---------------------------

layout布局文件mian.xml文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<TextView  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/hello"
    />
    <ImageView
    android:id="@+id/imageViewId"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/icon"
    />
    <Button 
    android:id="@+id/alphaID"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" 
    android:text="淡入淡出效果"
    />
    <Button 
    android:id="@+id/scaleID"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" 
    android:text="缩放效果"
    />
    <Button 
    android:id="@+id/rotateID"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" 
    android:text="旋转效果"
    />
    <Button 
    android:id="@+id/translateID"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" 
    android:text="移动效果"
    />
</LinearLayout>

activity文件:
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 TestAnimation01Activity extends Activity {
    /** Called when the activity is first created. */
	private ImageView imageView = null;
	private Button alphaButton = null;
	private Button scaleButton = null;
	private Button rotateButton = null;
	private Button translateButton = null;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        imageView = (ImageView)findViewById(R.id.imageViewId);
        alphaButton = (Button)findViewById(R.id.alphaID);
        alphaButton.setOnClickListener(new AlphaButtonListener());
        scaleButton = (Button)findViewById(R.id.scaleID);
        scaleButton.setOnClickListener(new ScaleButtonListener());
        rotateButton = (Button)findViewById(R.id.rotateID);
        rotateButton.setOnClickListener(new RotateButtonListener());
        translateButton = (Button)findViewById(R.id.translateID);
        translateButton.setOnClickListener(new TranslateButtonListener());
    }
    private class AlphaButtonListener implements OnClickListener
    {

		@Override
		public void onClick(View v) {
			// TODO Auto-generated method stub
			AnimationSet animationSet = new AnimationSet(true);
			AlphaAnimation alpha = new AlphaAnimation(1,0);
			alpha.setDuration(1000);
			animationSet.addAnimation(alpha);
			imageView.startAnimation(animationSet);
			
		}
    	
    }
    private class ScaleButtonListener implements OnClickListener
    {

		@Override
		public void onClick(View v) {
			// TODO Auto-generated method stub
			AnimationSet animationSet = new AnimationSet(true);
			ScaleAnimation scale = new ScaleAnimation(1,0.1f,1,0.1f,Animation.RELATIVE_TO_SELF,05f,Animation.RELATIVE_TO_SELF,0.5f);
			scale.setDuration(2000);
			animationSet.addAnimation(scale);
			imageView.startAnimation(scale);
		}
    	
    }
    private class RotateButtonListener implements OnClickListener
    {

		@Override
		public void onClick(View v) {
			// TODO Auto-generated method stub
			AnimationSet animationSet = new AnimationSet(true);
			RotateAnimation rotate = new RotateAnimation(0,360,Animation.RELATIVE_TO_PARENT,1f,Animation.RELATIVE_TO_PARENT,0f);
			rotate.setDuration(5000);
			animationSet.addAnimation(rotate);
			imageView.startAnimation(animationSet);
		}
    	
    }
    private class TranslateButtonListener implements OnClickListener
    {

		@Override
		public void onClick(View v) {
			// TODO Auto-generated method stub
			AnimationSet animationSet = new AnimationSet(true);
			TranslateAnimation translate = new TranslateAnimation(Animation.RELATIVE_TO_SELF, 0f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0f, Animation.RELATIVE_TO_SELF, 0.5f);
			translate.setDuration(2000);
			animationSet.addAnimation(translate);
			imageView.startAnimation(animationSet);
			
		}
    	
    }
    
}

Tween Animations 的通用属性

1. setDuration(long durationMills)  设置动画持续时间(单位:毫秒)

2. setFillAfter(boolean fillAfter)  如果fillAfter为true,表示动画执行后,控件将停留在执行结束的状态

3. setFillBefore(boolean fillBefore) 如果fillBefore 的值为true,表示动画执行后,控件将回到动画执行之前的状态

4. setStartOffSet(long startOffSet)  设置动画执行之前的等待时间

5. setRepeatCount(int count)  设置动画重复执行的次数

--------------------

下面再介绍Animations 另一种使用方法

1.  在res文件夹下面新建一个名为anim的文件夹;

2.  创建xml文件,并首先加入set标签,改标签如下:

     <set xmlns:android=http://schemas.android.com/apk/res/android"

           android:interpolator="@android:anim/acccelerate_interpolator" >

     </set>

3. 在该标签当中加入rotate,alpha,scale,translate标签

4. 在代码当中使用AnimationUtils当中装载xml文件,并生成   Animation  对象

在rotate.xml文件中

android:pivotX的值共有三种设置方法:

1.  android:pivotX="50"  使用绝对位置定位

2.  android:pivotX="50%"  使用相对于控件本身定位

3.  android:pivotX="50%p"  使用相对于控件的父控件定位



分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics