Android开发之View动画
Android动画主要分为3种
- View动画
- 帧动画
- 属性动画
何为View动画?
View动画主要是对View对象进行变换所达到的动画效果,如平移、缩放、旋转和透明度等,下面写个简单案例。
动画文件
首先在res目录下新建一个anim文件夹,然后新建4个动画文件,如下:
![](https://yqfile.alicdn.com/img_63163178a494f15a7ffdd824f4f23ecd.png)
然后在Activity布局中放入一张图片:
<RelativeLayout 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"tools:context=".MainActivity"><ImageViewandroid:id="@+id/football"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerInParent="true"android:src="@drawable/football" />
</RelativeLayout>
Activity
private ImageView img;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);img = (ImageView) findViewById(R.id.football);}
1、平移动画
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"><translateandroid:duration="3000" android:fromXDelta="0" //x的起始值android:fromYDelta="0" //y的起始值android:toXDelta="400" //x的结束值android:toYDelta="400" /> //y的结束值</set>
android:fromXDelta:x的起始值
android:toXDelta:x的结束值
android:fromYDelta:y的起始值
android:toYDelta:y的结束值
Activity代码
private void translateAnim() {Animation animation = AnimationUtils.loadAnimation(MainActivity.this, R.anim.translateanim);img.startAnimation(animation);}
测试运行
![](https://yqfile.alicdn.com/img_03757c72c9c5431ab7d2b314eff0056a.gif)
2、缩放动画
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"><scaleandroid:duration="3000"android:fromXScale="0.5"android:fromYScale="0.5"android:toXScale="1.0"android:toYScale="1.0" /></set>
android:fromXScale:水平方向缩放的起始值
android:toXScale:水平方向缩放的结束值
android:fromYScale:垂直方向缩放的起始值
android:toYScale:垂直方向缩放的结束值
Activity代码
private void scaleAnim() {Animation animation = AnimationUtils.loadAnimation(MainActivity.this, R.anim.scaleanim);img.startAnimation(animation);}
测试运行
![](https://yqfile.alicdn.com/img_8ba91f1b442270750306f173de01d48f.gif)
3、旋转动画
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"><rotateandroid:duration="3000"android:fromDegrees="0"android:toDegrees="360" /></set>
android:fromDegrees:旋转开始的角度
android:toDegrees:旋转结束的角度
Activity代码
private void roteteAnim() {Animation animation = AnimationUtils.loadAnimation(MainActivity.this, R.anim.rotateanim);img.startAnimation(animation);}
测试运行
![](https://yqfile.alicdn.com/img_d91a3b13fe37ff0c88ebeb7b21701375.gif)
4、透明度动画
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"><alphaandroid:duration="3000"android:fromAlpha="1.0"android:toAlpha="0.1" /></set>
android:fromAlpha:起始透明度
android:toAlpha:结束透明度
Activity代码
private void alphaAnim() {Animation animation = AnimationUtils.loadAnimation(MainActivity.this, R.anim.alphaanim);img.startAnimation(animation);}
测试运行
![](https://yqfile.alicdn.com/img_c4ecc45c701f8a23b088af37eb3f01ce.gif)
注意点
1、动画集合 <set xmlns:android="http://schemas.android.com/apk/res/android">
中可以设置一些属性值,重要属性说明:
- android:interpolator:动画集合插值器,主要影响动画的速度,默认为加速减速插值器,还有线性插值器、减速插值器等等
- android:shareInterpolator:动画集合中的动画是否与几何共享同一个插值器
- android:duration:动画集合执行时间
- android:fillAfter:动画结束以后View是否停在结束位置,默认是false不停留,但是该属性需要设置在动画集合中才有效果,设在单独的动画中是无效的。
2、View动画并没有真正改变View的位置,也就是说就算你看到了动画最终停留在了某个位置,它的真身还是在原来的位置,有点像神话小说的元神出窍,所以使用的时候要特别注意,如给Button设置点击事件,就会发现新位置的Button并不会出发click事件,原始位置却能响应,不知道原因的同学肯定入坑~~
Android开发之View动画相关推荐
- Android开发之View双指缩放ViewGroup双指缩放视频双指缩放图片双指缩放
老套路先上图 核心代码使用view的缩放API即可 setScaleX(scale); setScaleY(scale); 在看下自定义可缩放的view package cn.xiayiye5.xia ...
- Android开发之xml动画(补间动画)记录
一.先看下主页面的布局: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" ...
- android md5加密登录,Android开发之MD5加密
将字符串进行MD5加密,返回加密后的字符串 public static String encode(String password) { try { StringBuffer sb = new Str ...
- android图标随着进度条动画,Android开发之ProgressBar字体随着进度条的加载而滚动...
在网上翻阅了很多关于ProgressBar滚动效果,但是始终没有找到适合项目中的这种效果,故自己写这篇文章,记录一下写作过程,给大家做一个参考.先看下最终效果效果图 我这里用的是LICEcap软件录制 ...
- android 图库分析,Android开发之ImageSwitcher相册功能实例分析
本文实例讲述了Android开发之ImageSwitcher相册功能.分享给大家供大家参考,具体如下: 简介: 1.ImageSwitcher是viewSwitcher的子类,所以ImageSwitc ...
- Android开发之ViewFlipper
Android开发之ViewFlipper /* * Android开发之ViewFlipper * 北京Android俱乐部群:167839253 * Created on: 2012-7-25 ...
- Android开发之SlidingDrawer(一)
Android开发之SlidingDrawer(一) /* * Android开发之SlidingDrawer * 北京Android俱乐部群:167839253 * Created on: 20 ...
- Android透明到白色滑动渐变,Android开发之Activity全透明渐变切换方法
Activity全透明渐变切换 类似于Dialog的显示动画效果一样 1. 先设置Acitivity为去透明,在取消掉Activity默认的切换动画 true @color/colorPrimary ...
- Android开发之TextView高级应用
Android开发之TextView高级应用 我们平时使用TextView往往让它作为一个显示文字的容器,但TextView的功能并不局限于此.以下就和大家分享一下TextView的一些使用技巧. A ...
最新文章
- lamp rpm mysql_centos5.9使用RPM包搭建lamp平台
- mysql 基础sql
- 生成唯一订单号_人人皆知却暗藏玄机的“数据库唯一标识符”
- centos7下安装python3 解决openssl等一系列问题
- 内部类异常-NoClassDefFoundError
- 加拿大渥太华民众寒冬享受运河滑冰道乐趣
- ChucK学习笔记(零)——前言
- 快速图像视频标注软件:SuperAnnotate Desktop
- 【深度学习Deep Learning】资料大全
- html h5 php 语音录入,H5添加语音输入功能-
- 匠心开岁月·车库创乾坤 —— 微软创新节暨中国创新车库开幕
- pyautogui脱离屏幕基于图片的图像定位
- 全景影像转点云——只有鱼才能看见的真实
- 认识电子计算机教案ppt,认识计算机_课件.ppt
- php bpmn 引擎_BPMN使用小结
- 区块链惊现山寨万融链 怎样判断一个区块链项目的真假
- OSI网络体系结构及其各层主要协议
- 4选1多路选择器的Verilog描述及仿真
- Oracle VM VirtualBox VBX 虚拟机 Windows 10主机安装Ubuntu18.4 文件共享和root登录
- js 实现 判断字符串中的手机号以及替换成****
热门文章
- Pytorch:Tensor的统计属性【norm:范数】、【mean、sum】【prod:累乘】【argmin、argmax:最值索引】【keepdim】【kthvalue:第k小的元素、topk】
- MTK MT6739P 项目克隆脚本
- post默认总是不幂等的吗_刺客的场均输出总是不超过25%算正常吗?
- 需求获取(requirement elicitation)指导方针
- 语音识别的基本原理是什么,语音识别流程分为哪几步?
- 如何把msg.html导入微信,weui Msg提示页
- 想转行学习3D建模,到底是游戏建模赚钱还是影视动画建模赚钱?
- 1039: n个数求和 C语言
- python之判断类型
- 编好的C语言程序怎么运行,如何在cmd窗口编译运行c语言程序?