Android Animation是Android提供的实现UI界面动画效果的API,Animation提供了一系列的动画效果。Android SDK提供了两种Animation:
activity_main.xml文件中配置:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:orientation="vertical" tools:context="com.example.icarus.learnanimation.MainActivity"> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/anamationme" android:id="@+id/btnAlphaAnimation" /> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/rotateanimation" android:id="@+id/btnRotateAnimation"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/translateanimation" android:id="@+id/btnTranslateAnimation"/> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/scaleanimation" android:id="@+id/btnScaleAnimation"/> </LinearLayout>
有两种方式给按钮添加动画效果,一种是直接在代码中编写相应的控制语句,另外一种是在xml资源文件中配置相应的动画属性,然后使用AnimationUtils中的loadAnimation()函数加载动画。
btnAlphaAnimation = (Button) findViewById(R.id.btnAlphaAnimation); btnAlphaAnimation.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //使用代码方式配置按钮动画效果 AlphaAnimation aa=new AlphaAnimation(0,1);//透明度0到1之间的动画效果 aa.setDuration(1000);//设置动画时间长度 v.startAnimation(aa);//给按钮指明动画效果 } }); 2.渐变透明度动画效果按钮功能实现(资源文件实现) 在res中新建Resource File,主要配置信息如下: File name:aa Resource type:Animation Root element:alpha Source set:main Directory name:anim aa.xml中编写:
<?xml version="1.0" encoding="utf-8"?> <!--用xml资源文件实现对按钮透明动画的配置--> <alpha xmlns:android="http://schemas.android.com/apk/res/android" android:fromAlpha="0" android:toAlpha="1" android:duration="1000"> </alpha> 此时按钮点击事件中便可以使用资源文件来配置按钮点击动画:
btnAlphaAnimation = (Button) findViewById(R.id.btnAlphaAnimation); btnAlphaAnimation.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { v.startAnimation(AnimationUtils.loadAnimation(MainActivity.this, R.anim.aa)); } }); 这样透明效果按钮的Animation动画效果就添加完成。
<?xml version="1.0" encoding="utf-8"?> <!--使用xml配置文件实现按钮旋转效果--> <rotate xmlns:android="http://schemas.android.com/apk/res/android" android:fromDegrees="0" android:toDegrees="360" android:duration="1000" android:pivotX="50%" android:pivotY="50%"> </rotate>
<?xml version="1.0" encoding="utf-8"?> <translate xmlns:android="http://schemas.android.com/apk/res/android" android:fromXDelta="0" android:toXDelta="300%" android:fromYDelta="0" android:toYDelta="0" android:duration="1000"> </translate>
<?xml version="1.0" encoding="utf-8"?> <scale xmlns:android="http://schemas.android.com/apk/res/android" android:fromXScale="0" android:toXScale="1" android:fromYScale="0" android:toYScale="1" android:duration="1000" android:pivotX="50%" android:pivotY="50%"> </scale>
package com.example.icarus.learnanimation; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.view.animation.Animation; import android.view.animation.AnimationUtils; import android.view.animation.ScaleAnimation; import android.view.animation.TranslateAnimation; import android.widget.Button; /** * 给按钮实现动画效果 */ public class MainActivity extends AppCompatActivity { private Button btnAlphaAnimation; private Button btnRotateAnimation; private Button btnTranslateAnimation; private Button btnScaleAnimation; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btnAlphaAnimation = (Button) findViewById(R.id.btnAlphaAnimation); btnAlphaAnimation.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 使用代码方式配置按钮动画效果 // AlphaAnimation aa=new AlphaAnimation(0,1);//透明度0到1之间的动画效果 // aa.setDuration(1000);//设置动画时间长度 // v.startAnimation(aa);//给按钮指明动画效果 // 使用xml文件配置动画效果 v.startAnimation(AnimationUtils.loadAnimation(MainActivity.this, R.anim.aa)); } }); btnRotateAnimation= (Button) findViewById(R.id.btnRotateAnimation); btnRotateAnimation.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //相对于自身中间点旋转 // 使用代码方式配置按钮动画效果 // RotateAnimation ra=new RotateAnimation(0,360, Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f); // ra.setDuration(1000); // v.startAnimation(ra); // 使用xml配置文件实现按钮旋转效果 v.startAnimation(AnimationUtils.loadAnimation(MainActivity.this,R.anim.ra)); } }); btnTranslateAnimation= (Button) findViewById(R.id.btnTranslateAnimation); btnTranslateAnimation.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 使用代码方式配置按钮动画效果 // TranslateAnimation ts=new TranslateAnimation(0,600,0,0); // TranslateAnimation ts=new TranslateAnimation(Animation.RELATIVE_TO_SELF,0f,Animation.RELATIVE_TO_SELF,3f,Animation.RELATIVE_TO_SELF,0f,Animation.RELATIVE_TO_SELF,0f); // ts.setDuration(1000); // v.startAnimation(ts); // 使用xml配置文件实现按钮旋转效果 v.startAnimation(AnimationUtils.loadAnimation(MainActivity.this,R.anim.ta)); } }); btnScaleAnimation= (Button) findViewById(R.id.btnScaleAnimation); btnScaleAnimation.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 使用代码方式配置按钮动画效果 // ScaleAnimation sa=new ScaleAnimation(0,1,0,1,Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f); // sa.setDuration(1000); // v.startAnimation(sa); // 使用xml配置文件实现按钮旋转效果 v.startAnimation(AnimationUtils.loadAnimation(MainActivity.this,R.anim.sa)); } }); } }