博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android 基础动画之 scale 渐变缩放
阅读量:6835 次
发布时间:2019-06-26

本文共 1951 字,大约阅读时间需要 6 分钟。

      小菜最近在学习 ViewPager 的小动画,说来惭愧,工作这么久了一直没有认真了解过动画这部分,今天特意学习一下 Android 的基本动画。

      Android 的基本的动画包括 alpha(透明度)/ scale(缩放)/ translate(位移) / rotate(旋转)四种,小菜今天学习一下 scale 渐变缩放动画效果。

Activity 绑定动画事件:

mBtn1.setOnClickListener(new View.OnClickListener() {    @Override    public void onClick(View v) {        mV1.startAnimation(AnimationUtils.loadAnimation(AnimActivity.this, R.anim.anim_scale));    }});

layout.xml 显示动画效果

anim.xml 设置动画属性

代码很简单,小菜接下来逐条学习一下 anim_scale 中各条属性:

1. android:duration="3500"

   duration 代表动画过程中持续时常;

2. android:fromXScale="0.0"

   fromXScale 代表初始时横向 View 比例,0.0为从没有开始动画,1.0即 View 原尺寸,2.0即 View 原尺寸两倍;建议与 toXScale 共同使用;

3. android:fromYScale="0.0"

   fromYScale 为初始时纵向 View 比例,与 fromXScale 使用相同;

4. android:toXScale="1.0"

   toXScale 代表动画过程中横向变化尺寸比例,一般与 fromXScale 共同使用;

5. android:toYScale="1.0"

   toYScale 代表动画过程中纵向变化尺寸比例,一般与 fromYScale 共同使用;

6. android:pivotX="100%p" android:pivotY="100%p"

   pivotXpivotY 是小菜重点学习的地方,小菜理解为动画起点坐标,可以为整数值、百分数(或者小数)、百分数p 三种样式。

  1. 整数值:android:pivotX="100"

   整数值类型是相对于自身 View 来定义,以自身 View 左上角的点为原点,水平向右为正,竖直向下为正的坐标系中计算,设置的整数值为 px,为固定值。

  1. 百分数/小数:android:pivotX="100%"

   百分数/小数类型是相对于自身 View 来定义,与整数值类似,只是坐标点是以自身 View 尺寸比例来计算而非固定值。

  1. 百分数 + p

   这种方式是最特殊的,小菜理解为自身 View 与相对于某个父容器的大小,并非单纯的根据父容器大小尺寸位置。小菜为了测试方便,设置了一个固定的 400dp*400dp 的 LinearLayout,测试百分数 + p 的方式都正常,但是如果设置 View 居中或其他情况时跟小菜想的很有差距,小菜测试了很久,终于有一些了解。

   百分比 + p 这种方式是相对的,既与父容器相关也与自身 View 相关,当设置 View 位置为居中或其他位置时,整个移动的坐标系也会变化,原点并非直接父容器左上角而是自身 View 左上角,整个移动布局根据 View 平移;而父容器是一个框架,动画的范围大小为父容器大小且只在父容器中进行展示。如图:

   小菜这才了解到刚开始测试时并未设置 LinearLayoutgravity 或自身 Viewlayout_gravity 属性,默认是居左上角,此时与父容器左上角重合。

7. android:interpolator="@android:anim/accelerate_decelerate_interpolator"

   interpolator 代表缩放动画曲线,即动画由大变小,变换速率等,小菜目前还未学习到,后期补充。


      小菜的动画部分是短板,正在从零学习,不对的请多多指正!

转载地址:http://ddhkl.baihongyu.com/

你可能感兴趣的文章
【20160924】GOCVHelper MFC增强算法(1)
查看>>
走进JavaWeb技术世界7:Tomcat中的设计模式
查看>>
阅读mutate源码学习dplyr
查看>>
layui upload 额外参数上传
查看>>
我来悟微服务(3)-需求管理
查看>>
fatal error LNK1112: module machine type 'x64' conflicts with target machine type 'X86'
查看>>
SpringBoot-14-MyBatis预热篇,MySQL小结
查看>>
深度学习基础与技巧
查看>>
Firefox 将导入 Windows 根证书,避免与杀毒软件的冲突
查看>>
Windows搭建golang开发平台
查看>>
多线程基础篇(3)——初试锁
查看>>
利用WSS搭建学生作业平台
查看>>
刚进入win7系统就提示检测到一个硬盘问题的解决方法
查看>>
Python之配置日志模块logging
查看>>
指定目录的所有 *.gif 文件都重命名为 *.jpg
查看>>
为11.2.0.2 Grid Infrastructure添加节点
查看>>
Linux运维课程 第一阶段 重难点摘要(六)CISCO
查看>>
inotify结合rsync监控目录的实时变化
查看>>
pfSense book之硬件配置指南
查看>>
存储过程总结 2
查看>>