Android API 实验记录(一)

看到了一个动画,推荐!
今天记录一下我学Android 的动画设计实验,处理的对象是一个文本字符串。

Ready, Go!

Step1 界面布局:依然是layout/main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello"
        android:id="@+id/text"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        />
  <Button
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:id="@+id/rotate"
  android:text="Rotate"
  android:layout_alignParentBottom="true"
  >
  </Button>
</RelativeLayout>

加入了一个文本视图(屏幕居中)和一个控制按钮(放置在屏幕底部)

另外一个重要的工作时加入一个创建动画属性配置文件,从网上搞到一个牛人的配置文件,很详细,贴一下http://blog.csdn.net/zhqingyun163/archive/2009/11/05/4770068.aspx。
(这里的工作是创建动画配置文件ani_rotate.xml,创建位位置:res文件夹下创建anim/ani_rotate.xml)

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
        <!--   
                Tween Animation:通过对场景里的对象不断做图像变换(平移、缩放、旋转)产生动画效   
                   
                Alpha:渐变透明度动画效果   
                Scale:渐变尺寸伸缩动画效果   
                Translate:画面转换位置移动动画效果   
                Rotate:画面旋转动画效果   
                   
                Tween Animation 通用属性[类型]        功能       
                        Duration[long]    属性为动画持续时间     时间以毫秒为单位   
                        fillAfter [boolean] 当设置为true ,该动画转化在动画结束后被应用   
                        fillBefore[boolean] 当设置为true ,该动画转化在动画开始前被应用   
                           
                        interpolator        指定一个动画的插入器    有一些常见的插入器   
                        accelerate_decelerate_interpolator   
                        加速-减速 动画插入器   
                        accelerate_interpolator   
                        加速-动画插入器   
                        decelerate_interpolator   
                        减速- 动画插入器   
                        其他的属于特定的动画效果   
                        repeatCount[int]        动画的重复次数   
                        RepeatMode[int] 定义重复的行为 1:重新开始    2:plays backward   
                        startOffset[long]     动画之间的时间间隔,从上次动画停多少时间开始执行下个动画   
                        zAdjustment[int]        定义动画的Z Order的改变 0:保持Z Order不变   
                        1:保持在最上层   
                        -1:保持在最下层   
           
           
         -->   
        <!--   
                透明控制动画   
         -->   
        <alpha   
                android:fromAlpha="0.1"   
                android:toAlpha="1.0"   
                android:duration="3000"   
        />   
                   
        <!-- 尺寸伸缩动画效果 scale   
           
           
                属性:interpolator 指定一个动画的插入器   
   
                有三种动画插入器:   
                 accelerate_decelerate_interpolator    加速-减速 动画插入器   
                 accelerate_interpolator                加速-动画插入器   
                 decelerate_interpolator                减速- 动画插入器   
   
                其他的属于特定的动画效果   
   
                        fromXScale 属性为动画起始时 X坐标上的伸缩尺寸           
                        toXScale     属性为动画结束时 X坐标上的伸缩尺寸           
   
                        fromYScale 属性为动画起始时Y坐标上的伸缩尺寸           
                        toYScale     属性为动画结束时Y坐标上的伸缩尺寸           
   
                        说明:   
                                 以上四种属性值           
                                        0.0表示收缩到没有   
                                        1.0表示正常无伸缩           
                                        值小于1.0表示收缩       
                                        值大于1.0表示放大   
                                           
                        pivotX         属性为动画相对于物件的X坐标的开始位置   
                        pivotY         属性为动画相对于物件的Y坐标的开始位置   
                        说明:   
                                        以上两个属性值 从0%-100%中取值   
                                        50%为物件的X或Y方向坐标上的中点位置   
                长整型值:   
                        duration    属性为动画持续时间   
                        说明:     时间以毫秒为单位   
   
                布尔型值:   
                        fillAfter 属性 当设置为true ,该动画转化在动画结束后被应用   
        -->   
        <scale   
                android:interpolator="@android:anim/accelerate_decelerate_interpolator"   
                android:repeatCount="1"   
                   
                android:fromXScale="0.5"   
                android:fromYScale="0.5"   
                android:toXScale="1.4"               
                android:toYScale="1.4"   
                android:pivotX="50%"   
                android:pivotY="50%"   
                android:fillAfter="false"   
                android:duration="3000"   
                   
        />   
        <!--   
                画面转换位置移动动画效果 translate   
           
                fromXDelta toXDelta 为动画、结束起始时 X坐标上的位置       
                fromYDelta toYDelta 为动画、结束起始时 Y坐标上的位置   
         -->   
           
        <translate   
                android:repeatCount="2"   
                android:fromXDelta="-30"   
                android:fromYDelta="-30"   
                android:toXDelta="-80"               
                android:toYDelta="200"   
                android:duration="3000"   
        />   
        <!--   
                画面转移旋转动画效果 rotate   
                   
                fromDegrees 为动画起始时物件的角度 说明   
                        当角度为负数——表示逆时针旋转   
                        当角度为正数——表示顺时针旋转   
                        (负数from——to正数:顺时针旋转)   
                        (负数from——to负数:逆时针旋转)   
                        (正数from——to正数:顺时针旋转)   
                        (正数from——to负数:逆时针旋转)   
                        toDegrees     属性为动画结束时物件旋转的角度 可以大于360度   
                pivotX   
                pivotY    为动画相对于物件的X、Y坐标的开始位    说明:以上两个属性值 从0%-100%中取值   
                50%为物件的X或Y方向坐标上的中点位置   
         -->   
        <rotate   
                android:interpolator="@android:anim/accelerate_interpolator"   
                android:repeatCount="2"   
                android:fromDegrees="0"   
                android:toDegrees="+270"   
                android:pivotX="50%"   
                android:pivotY="50%"   
                android:duration="3000"   
        />
</set>

Step 2 Java控制代码:
package com.penguin7.animationtest;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.Button;

public class AnimationTest extends Activity implements OnClickListener{
  private Button bntRotate = null;

  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    //获取按键资源
    bntRotate = (Button) findViewById(R.id.rotate);
    //启动按键监听
    bntRotate.setOnClickListener(this);
  }
 
  @Override
  public void onClick(View v){
    //定义动画属性
    Animation ani = AnimationUtils.loadAnimation(this, R.anim.ani_rotate);
    //启动动画
    findViewById(R.id.text).startAnimation(ani);
  }

}

Step 3 看看效果:
启动画面:



动画截屏:

你可能感兴趣的:(android 动画)