安卓动画的简单实现方法(Animation和AnimationDrawable)
- 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)相关推荐
- 安卓动画全解:补间动画(视图动画)、布局动画、属性动画、逐帧动画。动画Animation属性、Alpha属性、Scale属性、Translate属性、Rotate属性,动画集AnimationSet
全栈工程师开发手册 (作者:栾鹏) 安卓教程全解 安卓动画全解:补间动画(视图动画).布局动画.属性动画.逐帧动画. 主要内容包含:动画Animation属性.Alpha属性.Scale属性.Tran ...
- 教你用最简单的方法做布丁动画
以下文章版权归叶景天博客所有 昨天教了大家如何利用.mask属性做遮罩动画,今天为大家介绍一个新的动画,老规矩,直接上效果图 这是一个非常简单又简单的布丁动画,我们可以在很多手机APP里头都看见过这场 ...
- android手机照片恢复,安卓手机照片怎么恢复?简单恢复方法分享
安卓手机照片怎么恢复?手机作为中国微信用户强大的社交工具,可以说手机相机已成为人们生活的重要部分,不小心误删手机相册照片或者微信等图片,我们在使用手机过程中是不可避免的,别担心,小编有办法恢复的,下面 ...
- android动画背景,Android开发之背景动画简单实现方法
在Android开发中,我们都会接到项目的业务需求,实现应用程序背景动画的效果,接下来,爱站技术频道小编带给大家的Android开发之背景动画简单实现方法. 1.先创建动画层,有三张图片 androi ...
- 电脑连接移动设备android驱动程序,安卓手机连接电脑操作最简单的方法介绍
华为手机怎样与电脑连接?想要让华为手机连接计算机,最快的方法无疑是使用数据线,不用借助第三方工具,可直接连接计算机管理文件,当然,你也可以使用无线网来连接,只不过这类连接首先需要下载连接媒介. 华为手 ...
- android 自动更换壁纸,超简单实用!教你安卓自动更换壁纸的方法
爱美不只是女人的天性,喜新厌旧也算不上什么坏毛病.尤其如今手机分辨率越来越高.色彩表现也愈发给力,要是不给手机时不时换个高端大气上档次的壁纸,都对不起那块高科技屏幕.所以今天给大家带来安卓自动更换壁纸 ...
- unity与安卓之间的调用简单使用方法
1.首先下载Android Studio,配置unity安卓环境,SDK,jdk配置.网上很多教程. 2.创建AS项目,新添加一个模块Module,在新创建Module下的JAVA文件夹下的空文件夹添 ...
- 安卓 动画的深入分析
安卓的动画可以分为三种:View动画,帧动画和属性动画. 帧动画是View动画的一种 view动画 对场景里的对象进行图片变换(平移,缩放,旋转,透明度)从而产生动画效果,是一种渐进式动画,并且支持自 ...
- 安卓动画入门_网络动画入门
安卓动画入门 无论您是刚刚开始使用基础知识还是想探索更高级的技术,我们已经构建了完整的指南来帮助您学习CSS和为CSS 设置动画 . 网络动画入门 近年来,Motion已成为Web设计领域中非常重要的 ...
最新文章
- java mvc引擎_SpringMvc+JavaConfig+Idea 搭建项目
- 在CentOS中安装gcc配置c语言开发环境(转)
- Effulgent的《深入理解Direct3D9》整理版(转)
- nvme驱动_用户态NVMe运维利器 SPDK NVMe 字符设备
- 如何高效判断java数组是否包含某个值
- API 接口 并发测试 Jmeter Postman
- 硬件设计-基于热敏电阻的水温检测控制系统(模电课设)
- MATLAB入门之旅
- Mixly 软件的基本应用
- 微信小程序商品详情页面开发案例
- Sklearn实现SVC
- c语言中查重,体验CCleaner查重功能,快速找出电脑中的重复文件
- swap (虚拟内存)
- boostraptable 表格数据未刷新
- 根据快递单号,生成快递单号
- 【My Electronic Notes系列——组合逻辑电路】
- CoAP协议学习笔记(一)
- 无法启动Sql Server服务
- 三星ODIN刷机包的修改
- 小吴的《机器学习 周志华》学习笔记 第一章 绪论