• Animation-补间动画(Tweened Animation)

    实例先行:

    activity.xml:

    <LinearLayoutandroid:id="@+id/winpay_loading_parent"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_centerInParent="true"android:orientation="vertical"><ImageViewandroid:id="@+id/winpay_loading_bg"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center_horizontal"android:contentDescription="@null"android:src="@mipmap/winpay_loading_bg" /><TextViewandroid:id="@+id/winpay_loading_tips"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center_horizontal"android:layout_marginTop="3dp"android:text="@string/winpay_loading" /></LinearLayout>

    preview

    winpay_loading_bg.png

    res/anim/loading_animation.xml

    <?xml version="1.0" encoding="utf-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android"><rotateandroid:duration="1000"android:fromDegrees="0"android:interpolator="@android:anim/linear_interpolator"android:pivotX="50%"android:pivotY="50%"android:repeatCount="-1"android:repeatMode="restart"android:startOffset="-1"android:toDegrees="+360" /></set>
    

    activity

    mLoadingBg = (ImageView) findViewById(R.id.winpay_loading_bg);
    Animation ImageRotateAnimation = AnimationUtils.loadAnimation(this,R.anim.loading_animation);
    mLoadingBg.startAnimation(ImageRotateAnimation);

    理论知识:
    补间动画又可以分为四种形式,分别是 alpha(淡入淡出)translate(位移)scale(缩放大小)rotate(旋转)
    补间动画的实现,一般会采用xml 文件的形式;代码会更容易书写和阅读,同时也更容易复用。
    alpha(淡入淡出)

    <alpha xmlns:android="http://schemas.android.com/apk/res/android"android:duration="1000"android:fromAlpha="1.0"android:interpolator="@android:anim/accelerate_decelerate_interpolator"android:toAlpha="0.0" />

    scale(缩放)

    <scale xmlns:android="http://schemas.android.com/apk/res/android"android:duration="1000"android:fromXScale="0.0"android:fromYScale="0.0"android:pivotX="50%"android:pivotY="50%"android:toXScale="1.0"android:toYScale="1.0"/>

    也可以使用set 标签将多个动画组合(代码源自Android SDK API)

    <set xmlns:android="http://schemas.android.com/apk/res/android"android:interpolator="@[package:]anim/interpolator_resource"android:shareInterpolator=["true" | "false"] ><alphaandroid:fromAlpha="float"android:toAlpha="float" /><scaleandroid:fromXScale="float"android:toXScale="float"android:fromYScale="float"android:toYScale="float"android:pivotX="float"android:pivotY="float" /><translateandroid:fromXDelta="float"android:toXDelta="float"android:fromYDelta="float"android:toYDelta="float" /><rotateandroid:fromDegrees="float"android:toDegrees="float"android:pivotX="float"android:pivotY="float" /><set>...</set>
    </set>

    interpolator:主要作用是可以控制动画的变化速率 ,就是动画进行的快慢节奏。
    pivot: 决定了当前动画执行的参考位置

  • AnimationDrawable-帧动画(Frame Animation)

    实例先行:

    activity.xml:

        <RelativeLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"><ImageViewandroid:id="@+id/seatel_wifi_bg"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_centerHorizontal="true"android:layout_margin="50dp"android:scaleType="centerInside"android:src="@drawable/seatel_wifi_loading_bg" /><ImageViewandroid:id="@+id/seatel_wifi_status"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_centerHorizontal="true"android:layout_margin="110dp"android:scaleType="centerInside"android:src="@mipmap/seatel_wifi_loading" /></RelativeLayout>

    res/drawable/seatel_wifi_loading_bg.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false"><item android:drawable="@mipmap/seatel_wifi_round1" android:duration="350" /><item android:drawable="@mipmap/seatel_wifi_round2" android:duration="350" /><item android:drawable="@mipmap/seatel_wifi_round3" android:duration="350" /><item android:drawable="@mipmap/seatel_wifi_round4" android:duration="350" /><item android:drawable="@mipmap/seatel_wifi_round5" android:duration="350" /><item android:drawable="@mipmap/seatel_wifi_round6" android:duration="350" />
    </animation-list>
    

    activity:

    private void showLoading() {mStatus.setImageResource(R.mipmap.seatel_wifi_loading);mWifiBg.setImageResource(R.drawable.seatel_wifi_loading_bg);mTip.setText("连接中。。。");AnimationDrawable anim = (AnimationDrawable) mWifiBg.getDrawable();anim.start();}

    理论知识:

    帧动画是最容易实现的一种动画,这种动画更多的依赖于完善的UI资源,他的原理就是将一张张单独的图片连贯的进行播放,
    从而在视觉上产生一种动画的效果;有点类似于某些软件制作gif动画的方式。
    android:oneshot="false" ,这个oneshot 的含义就是动画执行一次(true)还是循环执行多次。

安卓动画的简单实现方法(Animation和AnimationDrawable)相关推荐

  1. 安卓动画全解:补间动画(视图动画)、布局动画、属性动画、逐帧动画。动画Animation属性、Alpha属性、Scale属性、Translate属性、Rotate属性,动画集AnimationSet

    全栈工程师开发手册 (作者:栾鹏) 安卓教程全解 安卓动画全解:补间动画(视图动画).布局动画.属性动画.逐帧动画. 主要内容包含:动画Animation属性.Alpha属性.Scale属性.Tran ...

  2. 教你用最简单的方法做布丁动画

    以下文章版权归叶景天博客所有 昨天教了大家如何利用.mask属性做遮罩动画,今天为大家介绍一个新的动画,老规矩,直接上效果图 这是一个非常简单又简单的布丁动画,我们可以在很多手机APP里头都看见过这场 ...

  3. android手机照片恢复,安卓手机照片怎么恢复?简单恢复方法分享

    安卓手机照片怎么恢复?手机作为中国微信用户强大的社交工具,可以说手机相机已成为人们生活的重要部分,不小心误删手机相册照片或者微信等图片,我们在使用手机过程中是不可避免的,别担心,小编有办法恢复的,下面 ...

  4. android动画背景,Android开发之背景动画简单实现方法

    在Android开发中,我们都会接到项目的业务需求,实现应用程序背景动画的效果,接下来,爱站技术频道小编带给大家的Android开发之背景动画简单实现方法. 1.先创建动画层,有三张图片 androi ...

  5. 电脑连接移动设备android驱动程序,安卓手机连接电脑操作最简单的方法介绍

    华为手机怎样与电脑连接?想要让华为手机连接计算机,最快的方法无疑是使用数据线,不用借助第三方工具,可直接连接计算机管理文件,当然,你也可以使用无线网来连接,只不过这类连接首先需要下载连接媒介. 华为手 ...

  6. android 自动更换壁纸,超简单实用!教你安卓自动更换壁纸的方法

    爱美不只是女人的天性,喜新厌旧也算不上什么坏毛病.尤其如今手机分辨率越来越高.色彩表现也愈发给力,要是不给手机时不时换个高端大气上档次的壁纸,都对不起那块高科技屏幕.所以今天给大家带来安卓自动更换壁纸 ...

  7. unity与安卓之间的调用简单使用方法

    1.首先下载Android Studio,配置unity安卓环境,SDK,jdk配置.网上很多教程. 2.创建AS项目,新添加一个模块Module,在新创建Module下的JAVA文件夹下的空文件夹添 ...

  8. 安卓 动画的深入分析

    安卓的动画可以分为三种:View动画,帧动画和属性动画. 帧动画是View动画的一种 view动画 对场景里的对象进行图片变换(平移,缩放,旋转,透明度)从而产生动画效果,是一种渐进式动画,并且支持自 ...

  9. 安卓动画入门_网络动画入门

    安卓动画入门 无论您是刚刚开始使用基础知识还是想探索更高级的技术,我们已经构建了完整的指南来帮助您学习CSS和为CSS 设置动画 . 网络动画入门 近年来,Motion已成为Web设计领域中非常重要的 ...

最新文章

  1. java mvc引擎_SpringMvc+JavaConfig+Idea 搭建项目
  2. 在CentOS中安装gcc配置c语言开发环境(转)
  3. Effulgent的《深入理解Direct3D9》整理版(转)
  4. nvme驱动_用户态NVMe运维利器 SPDK NVMe 字符设备
  5. 如何高效判断java数组是否包含某个值
  6. API 接口 并发测试 Jmeter Postman
  7. 硬件设计-基于热敏电阻的水温检测控制系统(模电课设)
  8. MATLAB入门之旅
  9. Mixly 软件的基本应用
  10. 微信小程序商品详情页面开发案例
  11. Sklearn实现SVC
  12. c语言中查重,体验CCleaner查重功能,快速找出电脑中的重复文件
  13. swap (虚拟内存)
  14. boostraptable 表格数据未刷新
  15. 根据快递单号,生成快递单号
  16. 【My Electronic Notes系列——组合逻辑电路】
  17. CoAP协议学习笔记(一)
  18. 无法启动Sql Server服务
  19. 三星ODIN刷机包的修改
  20. 小吴的《机器学习 周志华》学习笔记 第一章 绪论

热门文章

  1. zookeeper集群伪分布式安装测试-windows
  2. Java基础知识思维导图
  3. HashMap扩容改进分析
  4. 冲破百亿天花板,木浪云用云和智能突破备份边界
  5. 仿牛客项目(持续更新)
  6. sql trace 的几种方法
  7. 8.2计算各商品销售金额
  8. NumPy库回顾与分享(一)
  9. java基础---悲观锁和乐观锁
  10. Jupyter Notebook 删除不需要的 Kernels