Animation是一个用于View,Surfaces和其它对象实现动画效果的抽象类,其中常用的类是TranslateAnimation用于控制位置的改变

一下列出一些重要的属性和方法

Xml属性

android:duration:运行动画的时间

android:interpolator定义用于平滑动画运动的时间内插

android:repeatCount:定义动画重复的时间

方法:

set:RepeatCount(int):定义动画重复的时间

setRepeatMode(int):通过设置重复时间定义动画的行为

setStartOffsetlong):以毫秒为单位的动画运行前的延迟,一旦开始时间就达到了

Cancel():取消动画

hasStarted():判断动画是否已在运行

initialize(intwidth,intheight,intparentWidth,intparentHeight):初始化动画

reset():重置动画

Start()启动动画

其中还有一些常量

RESTART:重新运行

INFINITE:永无终止地运行

将动画用于指定的控件,所有继承自View的控件都有startAnimation(Animation)方法,通过调用此方法来应用动画于控件

AnimationUtils类介绍

为应用动画提供了通用的的方法,它有一个很重要的方法loadAnimation(Context,Animation)用于加载Animation的实例。

下面是一个实例 源码下载

Animationpage.xml是布局文件

<?xmlversion="1.0"encoding="utf-8"?>

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

android:orientation="vertical"

android:padding="10dip"

android:layout_width="match_parent"

android:layout_height="wrap_content">

<ImageViewandroid:id="@+id/pw"

android:background="@drawable/a"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:layout_marginBottom="10dip"

/>

<Buttonandroid:id="@+id/login"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:textSize="26sp"

android:text="震荡"

/>

<ViewFlipperandroid:id="@+id/flipper"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:flipInterval="2000"

>

<TextView

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:gravity="center_horizontal"

android:textSize="26sp"

android:text="吴建强"/>

<TextView

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:gravity="center_horizontal"

android:textSize="26sp"

android:text="李秀婷"/>

<TextView

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:gravity="center_horizontal"

android:textSize="26sp"

android:text="张美静"/>

<TextView

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:gravity="center_horizontal"

android:textSize="26sp"

android:text="吴美音"/>

</ViewFlipper>

<TextView

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:layout_marginBottom="5dip"

android:text="请选择你喜欢的人"

/>

<Spinnerandroid:id="@+id/spinner"

android:layout_width="match_parent"

android:layout_height="wrap_content"

/>

<TextView

android:id="@+id/target"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:textSize="26sp"

android:text="java语言"/>

<TextView

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:layout_marginTop="20dip"

android:layout_marginBottom="5dip"

android:text="C#语言"/>

<Spinner

android:id="@+id/spinner1"

android:layout_width="match_parent"

android:layout_height="wrap_content"/>

</LinearLayout>

Animlayout.xml是动画文件

<?xmlversion="1.0"encoding="utf-8"?>

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

android:fromXDelta="0"

android:toXDelta="10"

android:duration="1000"

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

。。。

主程序

packagewjq.WidgetDemo;

importandroid.app.Activity;

importandroid.os.Bundle;

importandroid.util.Log;

importandroid.view.View;

importandroid.view.View.OnClickListener;

importandroid.view.animation.Animation;

importandroid.view.animation.AnimationUtils;

importandroid.view.animation.Transformation;

importandroid.view.animation.TranslateAnimation;

importandroid.widget.AdapterView;

importandroid.widget.ArrayAdapter;

importandroid.widget.Spinner;

importandroid.widget.ViewFlipper;

importandroid.widget.AdapterView.OnItemSelectedListener;

/**

*动画Animation示例

*@author记忆的永恒

*

*/

publicclassAnimationDemoextendsActivityimplementsOnClickListener,

OnItemSelectedListener{

privateViewv;

privateString[]mStrings={"向上","向右","穿越",

"旋转"};

privatestaticfinalString[]INTERPOLATORS={"加速","Decelerate",

"减速","左右","Overshoot",

"Anticipate/Overshoot","弹回"};

privateViewFlippermFlipper;

privateSpinnerspinner;

privateSpinnerspinner1;

privateArrayAdapter<String>aa;

privateArrayAdapter<String>aa1;

/*

*(non-Javadoc)

*

*@seeandroid.app.Activity#onCreate(android.os.Bundle)

*/

@Override

protectedvoidonCreate(BundlesavedInstanceState){

//TODOAuto-generatedmethodstub

super.onCreate(savedInstanceState);

setContentView(R.layout.animationpage);

v=findViewById(R.id.login);

v.setOnClickListener(this);

mFlipper=(ViewFlipper)findViewById(R.id.flipper);

//反转

mFlipper.startFlipping();

spinner=(Spinner)findViewById(R.id.spinner);

aa=newArrayAdapter<String>(this,

android.R.layout.simple_spinner_item,mStrings);

aa.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

spinner.setAdapter(aa);

spinner.setOnItemSelectedListener(this);

spinner1=(Spinner)findViewById(R.id.spinner1);

aa1=newArrayAdapter<String>(this,

android.R.layout.simple_spinner_item,INTERPOLATORS);

aa1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

spinner1.setAdapter(aa1);

spinner1.setOnItemSelectedListener(this);

}

@Override

publicvoidonClick(Viewv){

Animationshake=AnimationUtils.loadAnimation(this,R.anim.animlayout);

findViewById(R.id.pw).startAnimation(shake);

}

@Override

publicvoidonItemSelected(AdapterView<?>parent,Viewview,intposition,

longid){

if(parent.getAdapter()==aa){

switch(position){

case0:

mFlipper.setInAnimation(AnimationUtils.loadAnimation(this,

R.anim.push_up_in));

mFlipper.setOutAnimation(AnimationUtils.loadAnimation(this,

R.anim.push_up_out));

break;

case1:

mFlipper.setInAnimation(AnimationUtils.loadAnimation(this,

R.anim.push_left_in));

mFlipper.setOutAnimation(AnimationUtils.loadAnimation(this,

R.anim.push_left_out));

break;

case2:

mFlipper.setInAnimation(AnimationUtils.loadAnimation(this,

android.R.anim.fade_in));

mFlipper.setOutAnimation(AnimationUtils.loadAnimation(this,

android.R.anim.fade_out));

break;

default:

mFlipper.setInAnimation(AnimationUtils.loadAnimation(this,

R.anim.hyperspace_in));

mFlipper.setOutAnimation(AnimationUtils.loadAnimation(this,

R.anim.hyperspace_out));

break;

}

}

else{

finalViewtarget=findViewById(R.id.target);

finalViewtargetParent=(View)target.getParent();

Animationanm=newTranslateAnimation(0.0f,targetParent

.getWidth()

-target.getWidth()

-targetParent.getPaddingLeft()

-targetParent.getPaddingRight(),0.0f,0.0f);

anm.setDuration(1000);

anm.setStartOffset(300);

anm.setRepeatMode(Animation.RESTART);

anm.setRepeatCount(Animation.INFINITE);

switch(position){

case0:

anm.setInterpolator(AnimationUtils.loadInterpolator(this,

android.R.anim.accelerate_interpolator));

break;

case1:

anm.setInterpolator(AnimationUtils.loadInterpolator(this,

android.R.anim.decelerate_interpolator));

break;

case2:

anm.setInterpolator(AnimationUtils.loadInterpolator(this,

android.R.anim.accelerate_decelerate_interpolator));

break;

case3:

anm.setInterpolator(AnimationUtils.loadInterpolator(this,

android.R.anim.anticipate_interpolator));

break;

case4:

anm.setInterpolator(AnimationUtils.loadInterpolator(this,

android.R.anim.overshoot_interpolator));

break;

case5:

anm.setInterpolator(AnimationUtils.loadInterpolator(this,

android.R.anim.anticipate_overshoot_interpolator));

break;

case6:

anm.setInterpolator(AnimationUtils.loadInterpolator(this,

android.R.anim.bounce_interpolator));

break;

}

target.startAnimation(anm);

}

}

@Override

publicvoidonNothingSelected(AdapterViewparent){

//TODOAuto-generatedmethodstub

}

}

更多相关文章

  1. Android(安卓)动画系列一:Drawable Animation
  2. Android属性动画之XML定义方式
  3. Android启动画面
  4. RadioButton、CheckBox去除选中时的动画阴影效果
  5. 原创:android模仿iphone 腾讯爱看文章列表放大缩小 带动画
  6. [转载]Android知识体系总结(全方面覆盖Android知识结构,面试&进阶
  7. android studio 60音乐播放器 下载音乐
  8. Android(安卓)绘制波浪曲线1
  9. Android(安卓)闹钟以及通知

随机推荐

  1. Android(安卓)8.0 新特性
  2. Android(安卓)滑动侧边栏(Sliding Menu)第
  3. Android(安卓)boot.img介绍
  4. 25、Android中通过Intent传递对象、集合
  5. android的测试工具CTS
  6. 用git下载Android的某个应用程序
  7. android保存文件到手机内存
  8. Android(安卓)N中UI硬件渲染(hwui)的HWUI_N
  9. 如何快速启动安卓模拟器(Android(安卓)Em
  10. Android(安卓)ListView 去除边缘阴影、选