Animations的使用方法

使用Animations的步骤:

1.创建一个AnimationSet对象(Animation子类);

2.增加需要创建相应的Animation对象;

3.更加项目的需求,为Animation对象设置相应的数据;

4.将Animatin对象添加到AnimationSet对象当中;

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

Animations的分类
  1、Alpha:淡入淡出效果
  2、Scale:缩放效果
  3、Rotate:旋转效果
  4、Translate:移动效果

具体实现

1、activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context="com.zhang.myanimation.MainActivity"><ImageViewandroid:id="@+id/image1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentBottom="true"android:layout_centerHorizontal="true"android:src="@drawable/animation"tools:layout_editor_absoluteX="67dp"tools:layout_editor_absoluteY="7dp" /><ImageViewandroid:id="@+id/image2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignLeft="@+id/image1"android:layout_alignStart="@+id/image1"android:layout_below="@+id/bt_touming"android:src="@drawable/g1"tools:layout_editor_absoluteX="67dp"tools:layout_editor_absoluteY="157dp" /><Buttonandroid:id="@+id/bt_touming"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="透明"tools:layout_editor_absoluteX="16dp"tools:layout_editor_absoluteY="310dp" /><Buttonandroid:id="@+id/bt_xuanzhuan"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentTop="true"android:layout_toEndOf="@+id/bt_touming"android:layout_toRightOf="@+id/bt_touming"android:text="旋转"tools:layout_editor_absoluteX="102dp"tools:layout_editor_absoluteY="310dp" /><Buttonandroid:id="@+id/bt_suofang"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentTop="true"android:layout_toEndOf="@+id/bt_xuanzhuan"android:layout_toRightOf="@+id/bt_xuanzhuan"android:text="缩放"tools:layout_editor_absoluteX="190dp"tools:layout_editor_absoluteY="310dp" /><Buttonandroid:id="@+id/bt_pingyi"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentTop="true"android:layout_toEndOf="@+id/bt_suofang"android:layout_toRightOf="@+id/bt_suofang"android:text="平移"tools:layout_editor_absoluteX="278dp"tools:layout_editor_absoluteY="310dp" /><Buttonandroid:id="@+id/bt_donghuaji"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_above="@+id/image2"android:layout_alignParentEnd="true"android:layout_alignParentRight="true"android:text="动画集" /></RelativeLayout>

2.XML中实现动画方式

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"><!--缩放动画--><!--android:fromXScale 起始的 X 方向上相对自身的缩放比例,浮点值,比如 1.0 代表自身无变化,0.5 代表起始时缩小一倍,2.0 代表放大一倍;android:toXScale 结尾的 X 方向上相对自身的缩放比例,浮点值;android:fromYScale 起始的 Y 方向上相对自身的缩放比例,浮点值,android:toYScale 结尾的 Y 方向上相对自身的缩放比例,浮点值;android:pivotX 缩放起点 X 轴坐标,可以是数值、百分数、百分数 p 三种样式,比如 50、50%、50%p,当为数值时,表示在当前 View 的左上角,即原点处加上 50px,做为起始缩放点;如果是 50%,表示在当前控件的左上角加上自己宽度的 50%做为起始点;如果是 50%p,那么就是表示在当前的左上角加上父控件宽度的 50%做为起始点 x 轴坐标。(具体意义,后面会举例演示)android:pivotY 缩放起点 Y 轴坐标,取值及意义跟 android:pivotX 一样。 放到代码中,ScaleAnimation 有下面几个构造函数:android:duration="700" 动画持续时间--><scaleandroid:fromXScale="1.0"android:fromYScale="1.0"android:pivotX="50%"android:pivotY="50%"android:toXScale="2.0"android:toYScale="2.0"android:duration="700"></scale></set>
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"><!-- android:fromXDelta 起始点 X 轴坐标,可以是数值、百分数、百分数 p 三种样式,比如 50、50%、50%p,具体意义已在 scale 标签中讲述,这里就不再重讲android:fromYDelta 起始点 Y 轴从标,可以是数值、百分数、百分数 p 三种样式;android:toXDelta 结束点 X 轴坐标android:toYDelta 结束点 Y 轴坐标 这些属性所对应的构造函数为:TranslateAnimation(Context context, AttributeSet attrs) 同样,基本不用TranslateAnimation(float fromXDelta, float toXDelta, float fromYDelta, float toYDelta)TranslateAnimation(int fromXType, float fromXValue, int toXType, float toXValue, int fromYType, float fromYValue, int toYType, float toYValue)由于 fromXDelta、fromYDelta、toXDelta、toYDelta 这三个属性都具有三种状态,所以在构造函数中,最理想的状态就是第三个构造函数,能够指定每个值的类型,第二个构造函数:TranslateAnimation (float fromXDelta, float toXDelta, float fromYDelta, float toYDelta)使用是绝对数值。只有最后一个构造函数可以指定百分数和相对父控件的百分数。-->
<translateandroid:fromXDelta="0"android:toXDelta="0"android:fromYDelta="0"android:toYDelta="360"android:duration="2000"android:fillBefore="true"></translate>
</set>

3.java代码

package com.zhang.myanimation;import android.graphics.drawable.AnimationDrawable;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.view.animation.AlphaAnimation;
import android.view.animation.Animation;
import android.view.animation.AnimationSet;
import android.view.animation.AnimationUtils;
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 MainActivity extends AppCompatActivity {ImageView imageView, imageView2;Button bt_touming, bt_xuanzhuan, bt_suofang, bt_pingyi, bt_donghuaji;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//关联控件intView();//帧动画AnimationDrawable mation = (AnimationDrawable) imageView.getDrawable();mation.start();//t透明监听bt_touming.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {myAlphaAnimation();}});//缩放监听bt_suofang.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {scale_xml缩放效果();}});//平移监听bt_pingyi.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {translate_xml移动效果();}});//动画集监听bt_donghuaji.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {补间动画集();}});}/*** 透明*/private void myAlphaAnimation() {/*** float fromAlpha :  开始的透明度float toAlpha :  结束的透明度取值:0~1之间的小数1.0:完全不透明0.0:完全透明*/AlphaAnimation aa = new AlphaAnimation(1.0f, 0.5f);aa.setDuration(2000);//ms:毫秒  该动画的变化过程将会在2s中内完成aa.setFillAfter(true);//动画效果结束后 保持当前效果/**重复的个数*/aa.setRepeatCount(1);/*** 重复的模式* Animation.RESTART:重新开始* Animation.REVERSE:反向*/aa.setRepeatMode(Animation.REVERSE);/**开始动画*/imageView2.startAnimation(aa);}//关联控件public void intView() {imageView = (ImageView) findViewById(R.id.image1);imageView2 = (ImageView) findViewById(R.id.image2);bt_touming = (Button) findViewById(R.id.bt_touming);bt_xuanzhuan = (Button) findViewById(R.id.bt_xuanzhuan);bt_suofang = (Button) findViewById(R.id.bt_suofang);bt_pingyi = (Button) findViewById(R.id.bt_pingyi);bt_donghuaji = (Button) findViewById(R.id.bt_donghuaji);}//补间动画集public void 补间动画集() {/*** 动画集合类:AnimationSet*///移动动画效果TranslateAnimation ta = new TranslateAnimation(Animation.RELATIVE_TO_PARENT, 0,Animation.RELATIVE_TO_PARENT, 0,Animation.RELATIVE_TO_PARENT, 0.0f,Animation.RELATIVE_TO_PARENT, 0.5f);ta.setDuration(2000);//伸缩动画效果ScaleAnimation sa = new ScaleAnimation(1.0f, 2.0f, 1.0f, 2.0f,Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);sa.setDuration(2000);//旋转动画效果RotateAnimation ra = new RotateAnimation(90.0f, -180.0f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);ra.setDuration(2000);//透明度动画效果AlphaAnimation aa = new AlphaAnimation(1.0f, 0.5f);aa.setDuration(2000);//ms:毫秒  该动画的变化过程将会在2s中内完成AnimationSet as = new AnimationSet(true);as.addAnimation(ta);as.addAnimation(sa);as.addAnimation(ra);as.addAnimation(aa);imageView2.startAnimation(as);}public void scale_xml缩放效果() {Animation animation = AnimationUtils.loadAnimation(this, R.anim.scale);imageView2.startAnimation(animation);}public void translate_xml移动效果(){Animation animation = AnimationUtils.loadAnimation(this, R.anim.translate);imageView2.startAnimation(animation);}
}

Animations的通用方法

  1、setDuration(long durationMills)
  设置动画持续时间(单位:毫秒)
  2、setFillAfter(Boolean fillAfter)
  如果fillAfter的值为true,则动画执行后,控件将停留在执行结束的状态
  3、setFillBefore(Boolean fillBefore)
  如果fillBefore的值为true,则动画执行后,控件将回到动画执行之前的状态
  4、setStartOffSet(long startOffSet)
  设置动画执行之前的等待时间
  5、setRepeatCount(int repeatCount)
  设置动画重复执行的次数

引用文章:



http://www.360doc.com/content/13/0102/22/6541311_257754535.shtml

Animations的使用方法相关推荐

  1. Frame-By-Frame Animations的使用方法

    <?xml version="1.0" encoding="utf-8"?> <animation-list xmlns:android=&q ...

  2. iOS5中 UIViewController新方法的使用

    在iOS5中,ViewController中新添加了下面几个方法: addChildViewController:  removeFromParentViewController  transitio ...

  3. Animations的用法

    一.Animations介绍 Animations是一个实现android UI界面动画效果的API,Animations提供了一系列的动画效果,可以进行旋转.缩放.淡入淡出等,这些效果可以应用在绝大 ...

  4. CSS3动画之二:Animations功能

    Animations功能与Transitions功能相同,都是通过改变元素的属性值来实现动画效果,不同之处是:Transitions功能只能通过改变指定属性的开始值与结束值,然后再这两个属性值之间进行 ...

  5. swift实现ios类似微信输入框跟随键盘弹出的效果

    为什么要做这个效果 在聊天app,例如微信中,你会注意到一个效果,就是在你点击输入框时输入框会跟随键盘一起向上弹出,当你点击其他地方时,输入框又会跟随键盘一起向下收回,二者完全无缝连接,那么这是怎么实 ...

  6. android - Animation详解

    Drawable 最强大的功能是:显示Animation.AndroidSDK介绍了2种Animation: Tween Animation(渐变动画):通过对场景里的对象不断做图像变换(平移.缩放. ...

  7. Android Animation动画(很详细)

    Animations 一.Animations介绍 Animations是一个实现android UI界面动画效果的API,Animations提供了一系列的动画效果,可以进行旋转.缩放.淡入淡出等, ...

  8. angular示例_用示例解释Angular动画

    angular示例 为什么要使用动画? (Why use Animations?) Modern web components frequently use animations. Cascading ...

  9. Unity API——1

                                                                                                        ...

最新文章

  1. 8.Map集合(HashMapTreeMap)
  2. java程序设计实验报告_JavA程序设计实验报告.doc
  3. IO知识点整理(序列化,管道流,数据流,字节数组流,与编码)
  4. 用单循环链表实现约瑟夫问题。
  5. 【PyTorch 】静态图与动态图机制
  6. Java二十三种设计模式 之代理(proxy)
  7. ASP.NET 配置概览
  8. 命中书中题有奖反馈活动_三级网络技术
  9. 公司官网无法通过域名访问,原来是tomcat配置出了问题
  10. 如何用SQL为每一行均产生一个随机数
  11. 知识图谱05:知识图谱构建涉及的技术
  12. 冯乐乐之三,SHADERLAB入门
  13. [洛谷P3376题解]网络流(最大流)的实现算法讲解与代码
  14. 巴特沃斯滤波器 python代码
  15. 轮盘赌算法-Roulette
  16. DS1302时钟程序解读
  17. 网络请求(三)— Retrofit
  18. 抖音程序员HTML相册,快手抖音程序员表白女朋友3D立体相册源码html网页相册代码...
  19. 嘟咪QQ魔法表情动画http://comic.qq.com/a/20080628/000012.htm
  20. 欧尼酱讲JVM(19)——执行引擎

热门文章

  1. 有哪些好用的比较工具
  2. MySQL性能优化(七):其它优化
  3. 针对商城难推广提出6大方法,一切如此简单!
  4. 奥特曼卡牌隐藏的百亿市场
  5. ubuntu美化2——grub美化
  6. 重回童年的经典系列☀️|【炸弹人小游戏】制作过程+解析 | 收藏起来跟曾经的小伙伴一起梦回童年!
  7. 苹果WWDC2017 开发者大会,机器学习已得到广泛应用
  8. android8.0 墓碑机制,魔兽世界8.0血DK机制与输出手法详细介绍
  9. win10 smb共享硬盘
  10. Promise原理浅析