您的位置:首页 > 移动开发 > Android开发

Android学习之界面篇(一)Android Animation简单介绍

2016-04-02 23:10 465 查看


Android Animation介绍

       Android Animation是Android提供的实现UI界面动画效果的API,Animation提供了一系列的动画效果。Android SDK提供了两种Animation:
Tween Animation(渐变动画): 通过对特定的对象做图像变换如平移、缩放、旋转、淡出/淡入等产生动画效果
Frame Animation(帧动画): 创建一个Drawable序列,这些Drawable可以按照指定的时间间隔一个一个的显示,也就是顺序播放事先做好的图像

       Tween Animation(渐变动画):
AlphaAnimation:渐变透明度动画效果
RotateAnimation:旋转动画效果
TranslateAnimation:移动动画效果
ScaleAnimation:渐变尺寸伸缩动画效果

       Frame Animation(帧动画):
在XML资源中定义Animation,使用AnimationUtils中的loadAnimation()函数加载动画
使用Animation子类的构造函数来初始化Animation对象


Android Animation使用


     1.界面配置

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>



     2.界面效果:




     3.给按钮添加Animation动画效果

有两种方式给按钮添加动画效果,一种是直接在代码中编写相应的控制语句,另外一种是在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动画效果就添加完成。



    4.其他按钮资源配置文件:

旋转效果按钮:

<?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>



完整java代码

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));
}
});
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Android Animation