我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Android动画

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Android动画

源码地址: https://download.csdn.net/download/dreams_deng/12236355

1. 理论知识

1.1 动画类型:
View动画 :   View本身在动
Drawable动画:  View中内容在动,帧动画,图片在切换
 1.2.android实现动画方式:
 编码方式
 xml方式

1.3. 动画Api :

    scaleAnimation1.setStartOffset(1000);  // 动画延迟时间
    scaleAnimation1.setDuration(10000);   // 持续时间
    scaleAnimation1.setFillBefore(true);  // 最终状态
     img_context.startAnimation(scaleAnimation1);  // 启动动画
     translateAnimation.setRepeatCount(3); //重复次数动画
      translateAnimation.setInterpolator  // 设置动画变化率
      animationSet.setAnimationListener  // 设置动画监听回调

  2. 动画实现

2.1.1.代码实现缩放动画

//锚点位置: 默认位置视图中心点
        // 动画执行效果,1.图形变成原来的0.5倍宽高,2.延迟 1S ,3. 然后开始执行动画 10S 到1.5倍, 执行完毕,恢复默认1.0倍默认大小,4.动画执行中心点设置后面的4个参数都是
      // 动画中心点坐标,缩放中心点坐标:
        // Animation.RELATIVE_TO_SELF  0.5  现对于自己宽度0.5宽度的位置  中心点 X
       // Animation.RELATIVE_TO_PARENT   0.5  现对于父元素的0.5宽度的位置 中心点 X
        //  如何使用,原来的大小不用动 fromX , fromY


public void codeScale(View view) {
        
        // 相对于自己,绝对值
        ScaleAnimation scaleAnimation1=new ScaleAnimation(0.5f,1.5f,0.5f,1.5f,Animation.ABSOLUTE,img_context.getWidth()/2,
                Animation.ABSOLUTE,0);
        // 现对于自己,中心点
        ScaleAnimation scaleAnimation2=new ScaleAnimation(0.5f,1.5f,0.5f,1.5f,Animation.RELATIVE_TO_SELF,0.5f,
                Animation.RELATIVE_TO_SELF,0.5f);
        // 延迟1s开始
        scaleAnimation1.setStartOffset(1000);
      // 持续时间
        scaleAnimation1.setDuration(10000);
        // 最终还原
        scaleAnimation1.setFillBefore(true);
        // 启动动画
        img_context.startAnimation(scaleAnimation1);
        //锚点位置: 默认位置视图中心点
        // 动画执行效果,图形变成原来的0.5倍宽高,延迟 1S , 然后开始执行动画 10S 到1.5s, 执行完毕,恢复默认1.0
      // 动画中心点坐标,缩放中心点坐标:
        // Animation.RELATIVE_TO_SELF  0.5  现对于自己宽度0.5宽度的位置  中心点 X
       // Animation.RELATIVE_TO_PARENT   0.5  现对于父元素的0.5宽度的位置 中心点 X
        //  如何使用,原来的大小不用动 fromX , fromY
    }

  2.1.2  xml实现缩放动画:/res/anim/scale1.xml



   
    
   public void xmlScale(View view) {
       Animation animation= AnimationUtils.loadAnimation(this,R.anim.scale1);
        img_context.startAnimation(animation);
    }

2.2.1  实现旋转动画:


 //    旋转动画  ,  0度旋转到90度,旋转点是图形中心点
        RotateAnimation rotateAnimation=new RotateAnimation(0f,90.0f,Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f);
        rotateAnimation.setDuration(5000);
        img_context.startAnimation(rotateAnimation);

  /res/anim/rotate_test.xml 代码实现:




    // 默认旋转点是左上角, xml实现
        Animation animation= AnimationUtils.loadAnimation(this,R.anim.rotate_test);
//        img_context.startAnimation(animation);

2.3.1. 实现透明度动画:   从显示到隐藏,


        // 透明度动画
        // 不透明度1  透明度0 不透明
        // 不透明度0  透明度1 透明
        AlphaAnimation alphaAnimation=new AlphaAnimation(1,0);
        alphaAnimation.setDuration(5000);
        img_context.startAnimation(alphaAnimation)

  /res/anim/alpha_test.xml 代码实现:




        // 透明度动画, 从显示到隐藏
        animation= AnimationUtils.loadAnimation(this,R.anim.alpha_test);
        img_context.startAnimation(animation);ation);

2.4.1. 实现移动动画:



        TranslateAnimation translateAnimation = new TranslateAnimation(Animation.ABSOLUTE, 0,
                Animation.RELATIVE_TO_SELF, 1,
                Animation.ABSOLUTE, 0,
                Animation.RELATIVE_TO_SELF, 1);
        translateAnimation.setDuration(5000);
        translateAnimation.setRepeatCount(3); //重复次数动画
        // Animation.INFINITE) 无限次数
        // 设置动画变化率
        
        translateAnimation.setInterpolator(new AccelerateInterpolator());
        img_context.startAnimation(translateAnimation);

        /res/anim/translate_test.xml 代码实现:



    

       animation= AnimationUtils.loadAnimation(this,R.anim.translate_test);
        img_context.startAnimation(animation);

        3. 综合动画,
      1.1.多个动画同时执行  AnimationSet
      1.1. 如果动画逐个执行,那么设置动画延时,执行第一个完毕,才执行第二个alphaAnimation.setStartOffset(2000);


  public void  codeSetAnimation(View view){
   // 透明度 从 透明到不透明    持续 2s  接着进行旋转360 持续1s
         AlphaAnimation alphaAnimation=new AlphaAnimation(1,0);
         alphaAnimation.setDuration(2000);
         alphaAnimation.setStartOffset(2000); // 设置延时,避免动画同时执行
         RotateAnimation rotateAnimation=new RotateAnimation(0f,360f,
                 Animation.RELATIVE_TO_SELF,0.5f,
                 Animation.RELATIVE_TO_SELF,0.5f
         );
         rotateAnimation.setDuration(1000);
        AnimationSet animationSet=new AnimationSet(true);
        animationSet.addAnimation(alphaAnimation);
        animationSet.addAnimation(rotateAnimation);
        animationSet.setAnimationListener(new Animation.AnimationListener() {
            @Override
            public void onAnimationStart(Animation animation) {
            }
            @Override
            public void onAnimationEnd(Animation animation) {
            }
            @Override
            public void onAnimationRepeat(Animation animation) {
     // 动画重复
            }
        });
        img_context.startAnimation(animationSet);
    }

 /res/anim/set_test.xml 代码实现:





 public void xmlSetAnimation(View view){
        Animation animation = AnimationUtils.loadAnimation(this, R.anim.set_test);
        //3. 启动动画
        img_context.startAnimation(animation);
    }

  4.  帧动画 : 

1. /res/drawable/drawable_animation_test.xml  设置图片播放顺序



    

2.  设置图片播放控件:android:background


  
3.  播放帧动画、停止帧动画

 // 启动停止帧动画
   public void  imgAnimation(View view){
        AnimationDrawable animationDrawable= (AnimationDrawable) donghuaImg.getBackground();
        if(animationDrawable.isRunning()){
            animationDrawable.stop();
        }else{
            animationDrawable.start();
        }
    }

 效果图:

4. Android实现转场动画: 

实现原理图:

   实现代码逻辑:

1.  MainActivity界面功能按钮:


   // 当前界面下一个界面
    public void nextPage(View view) {
        startActivity(new Intent(MainActivity.this,SecondActivity.class));
        // 右边进来动画 right_in
        // 当前界面出去动画:left_out
 // 让动画起效果函数
        overridePendingTransition(R.anim.right_in, R.anim.left_out);
    }

/res/drawable/right_in.xml



    

/res/drawable/right_out.xml



2.  SecondActivity 关闭返回


 public void back(View view){
        finish();
        // 进来动画,右边动画进来
        // 当前界面出去
        overridePendingTransition(R.anim.left_in, R.anim.right_out);
    }

/res/drawable/left_in.xml



/res/drawable/right_out.xml



效果图:

5. 动画案例, APIDemos总demo , 点击实现EditText实现左右抖动

5.1. 布局:


  

5.2. Java 代码:


    public void back(View view){
        Animation animation = AnimationUtils.loadAnimation(this, R.anim.shake);
        et_main_name.startAnimation(animation);
    }

/res/anim/shake.xml




/res/anim/cycle_8.xml   抖动次数





作者:小置同学


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Android动画

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Android动画-属性动画

属性动画 所谓属性动画,就是改变对象Object的属性来实现动画过程。属性动画是对View的动画的扩展,通过它可以实现更多漂亮的动画效果。同时属性动画的作用对象不仅仅是View,任何对象都可以。 属性动画的作用效果就是:在一个指定的时间段内
2022-06-06

Android动画

源码地址: https://download.csdn.net/download/dreams_deng/12236355 1. 理论知识 1.1 动画类型: View动画 :   View本身在动 Drawable动画:  View中内容
2022-06-06

Android 动画(View动画,帧动画,属性动画)详细介绍

0. 前言 Android动画是面试的时候经常被问到的话题。我们都知道Android动画分为三类:View动画、帧动画和属性动画。先对这三种动画做一个概述:View动画是一种渐进式动画,通过图像的平移、缩放、旋转和透明度等各种渐进式变换完
2022-06-06

Android动画探索之属性动画

这篇文章来总结下属性动画,通过下面几点来了解下属性动画的内容: 属性动画概述 属性动画工作原理 ValueAnimator ObjectAnimator ValueAnimator和ObjectAnimator区别 插值器 估值期 插值器和
2022-06-06

Android 动画之帧动画用法详解

本文目录帧动画概念帧动画实现方法1:xml实现帧动画第一步:导入帧动画素材第二步:创建帧动画文件第三步:布局文件和Activity方法2:用Java代码实现帧动画 帧动画概念 在Android中,帧动画的本质是把一组预先准备好的图片循环切换
2022-06-06

Android属性动画

关于作者:CSDN内容合伙人、技术专家, 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 ,擅长java后端、移动开发、商业变现、人工智能等,希望大家多多支持。 目录 一、导读二、概览三、常用API3.1 Valu
Android属性动画
2023-12-22

Android帧动画、补间动画、属性动画用法详解

在安卓开发中,经常会使用到一些动画,那么在开发中,如何使用这些动画呢? 帧动画:不是针对View做出一些形状上的变化,而是用于播放一张张的图片,例如一些开机动画,类似于电影播放,使用的是AnimationDrawable来播放帧动画 res
2022-06-06

Android动画学习笔记之补间动画

本文实例为大家分享了Android补间动画展示的具体代码,供大家参考,具体内容如下 首先看看补间动画的共同属性: Duration:动画持续的时间(单位:毫秒) fillAfter:设置为true,动画转化在动画被结束后被应用 f
2022-06-06

android 帧动画,补间动画,属性动画的简单总结

帧动画——FrameAnimation 将一系列图片有序播放,形成动画的效果。其本质是一个Drawable,是一系列图片的集合,本身可以当做一个图片一样使用 在Drawable文件夹下,创建animation-list为根节点的资源文件
2022-06-06

Android动画(四)动画框架源码分析

本篇难度较大,慎入 也许可以先去看总结在来一起分析 从我们写的开始进入:fun click(view: View) {val textView = findViewById(R.id.tv)val animator = ObjectAnim
2022-06-06

Android动画全篇系列(十二)——ViewPager滑动动画

文章目录一、前言二、实现1、参数的介绍2、实现三、ViewPager2四、小结 一、前言 ViewPager的作用很多,一般会结合Fragment来构成能左右滑动的视图结构。ViewPager还能够撸成一个Banner轮播图,只需要自定义一
2022-06-06

Android动画 实现开关按钮动画(属性动画之平移动画)实例代码

Android动画 实现开关按钮动画(属性动画之平移动画),最近做项目,根据项目需求,有一个这样的功能,实现类似开关的动画效果,经过自己琢磨及上网查找资料,终于解决了,这里就记录下:在Android里面,一些炫酷的动画确实是很吸引人的地方,
2022-06-06

Android动画之逐帧动画(Frame Animation)实例详解

本文实例分析了Android动画之逐帧动画。分享给大家供大家参考,具体如下: 在开始实例讲解之前,先引用官方文档中的一段话: Frame动画是一系列图片按照一定的顺序展示的过程,和放电影的机制很相似,我们称为逐帧动画。Frame动画可以被定
2022-06-06

Android动画之补间动画(Tween Animation)实例详解

本文实例讲述了Android动画之补间动画。分享给大家供大家参考,具体如下: 前面讲了《Android动画之逐帧动画(Frame Animation)》,今天就来详细讲解一下Tween动画的使用。 同样,在开始实例演示之前,先引用官方文档中
2022-06-06

Android仿荷包APP启动动画

用荷包App的时候发现启动动画做的挺好玩的,于是便模仿实现了一下。gif效果图:animation.gif实现思路: 仔细观察,可以看出动画的执行分为两个阶段: 第一阶段为硬币掉落。 第二阶段为钱包反弹。 布局xml文件如下:
2022-06-06

编程热搜

  • Android:VolumeShaper
    VolumeShaper(支持版本改一下,minsdkversion:26,android8.0(api26)进一步学习对声音的编辑,可以让音频的声音有变化的播放 VolumeShaper.Configuration的三个参数 durati
    Android:VolumeShaper
  • Android崩溃异常捕获方法
    开发中最让人头疼的是应用突然爆炸,然后跳回到桌面。而且我们常常不知道这种状况会何时出现,在应用调试阶段还好,还可以通过调试工具的日志查看错误出现在哪里。但平时使用的时候给你闹崩溃,那你就欲哭无泪了。 那么今天主要讲一下如何去捕捉系统出现的U
    Android崩溃异常捕获方法
  • android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
    系统的设置–>电池–>使用情况中,统计的能耗的使用情况也是以power_profile.xml的value作为基础参数的1、我的手机中power_profile.xml的内容: HTC t328w代码如下:
    android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
  • Android SQLite数据库基本操作方法
    程序的最主要的功能在于对数据进行操作,通过对数据进行操作来实现某个功能。而数据库就是很重要的一个方面的,Android中内置了小巧轻便,功能却很强的一个数据库–SQLite数据库。那么就来看一下在Android程序中怎么去操作SQLite数
    Android SQLite数据库基本操作方法
  • ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
    工作的时候为了方便直接打开编辑文件,一些常用的软件或者文件我们会放在桌面,但是在ubuntu20.04下直接直接拖拽文件到桌面根本没有效果,在进入桌面后发现软件列表中的软件只能收藏到面板,无法复制到桌面使用,不知道为什么会这样,似乎并不是很
    ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
  • android获取当前手机号示例程序
    代码如下: public String getLocalNumber() { TelephonyManager tManager =
    android获取当前手机号示例程序
  • Android音视频开发(三)TextureView
    简介 TextureView与SurfaceView类似,可用于显示视频或OpenGL场景。 与SurfaceView的区别 SurfaceView不能使用变换和缩放等操作,不能叠加(Overlay)两个SurfaceView。 Textu
    Android音视频开发(三)TextureView
  • android获取屏幕高度和宽度的实现方法
    本文实例讲述了android获取屏幕高度和宽度的实现方法。分享给大家供大家参考。具体分析如下: 我们需要获取Android手机或Pad的屏幕的物理尺寸,以便于界面的设计或是其他功能的实现。下面就介绍讲一讲如何获取屏幕的物理尺寸 下面的代码即
    android获取屏幕高度和宽度的实现方法
  • Android自定义popupwindow实例代码
    先来看看效果图:一、布局
  • Android第一次实验
    一、实验原理 1.1实验目标 编程实现用户名与密码的存储与调用。 1.2实验要求 设计用户登录界面、登录成功界面、用户注册界面,用户注册时,将其用户名、密码保存到SharedPreference中,登录时输入用户名、密码,读取SharedP
    Android第一次实验

目录