Android之属性动画简介

Android  代码片段  2022年5月5日 pm8:20发布3年前 (2022)更新 城堡大人
81 0 0

前言

一直在用,但老是记不住,因此记录于此,方便自己查阅。

纸上得来终觉浅

正文

下面简单记录一下属性动画的旋转、平移、缩放和透明度渐变。

缩放

  1. 对X轴
private void TestScaleX(View view) {
    ObjectAnimator scaleX = ObjectAnimator.ofFloat(view, "scaleX", 1.0f, 1.5f, 1);
    scaleX.setDuration(500);
    scaleX.start();
}
  1. 对Y轴
private void TestScaleY(View view) {
    ObjectAnimator scaleY = ObjectAnimator.ofFloat(view, "scaleY", 1.0f, 1.5f, 1);
    scaleY.setDuration(500);
    scaleY.start();
}
  1. 对X和Y轴
private void TestScaleXY(View view) {
    AnimatorSet animatorSet = new AnimatorSet();
    /**
     *  组合动画
     *  view         : 缩放的View
     *  propertyName : 动画类型: scaleX x轴进行缩放
     *  value1       : 起始值,缩放起始值,1.0f就是默认大小
     *  value2       : 结束值,缩放结束值,1.5f意思在原来基础上放大0.5f
     *
     *  PS value 可以有N个,中间的是过度值,最后的是结束状态值
     */
    ObjectAnimator scaleX = ObjectAnimator.ofFloat(view, "scaleX", 1.0f, 1.5f);
    ObjectAnimator scaleY = ObjectAnimator.ofFloat(view, "scaleY", 1.0f, 1.5f);
    animatorSet.setDuration(500);
    animatorSet.setInterpolator(new LinearInterpolator());
    animatorSet.play(scaleX).with(scaleY);
    animatorSet.start();
}

透明度渐变

@SuppressLint("ObjectAnimatorBinding")
private void TestAlpha(View view) {
    /**
     *  alpha 范围值 0.0f-1.0f
     */
    ObjectAnimator alpha = ObjectAnimator.ofFloat(view, "alpha", 1.0f, 0.5f);
    alpha.setDuration(500);
    alpha.start();
}

平移

  1. 对X轴
@SuppressLint("ObjectAnimatorBinding")
private void TestTranslationX(View view) {
    ObjectAnimator translation = ObjectAnimator.ofFloat(view, "translationX", 0, 300, 0);
    translation.setDuration(500);
    translation.start();
}

  1. 对Y轴
@SuppressLint("ObjectAnimatorBinding")
private void TestTranslationY(View view) {
    ObjectAnimator translation = ObjectAnimator.ofFloat(view, "translationY", 0, 300, 0);
    translation.setDuration(500);
    translation.start();
}

  1. 对XY轴
private void TestTranslation(View view) {
    AnimatorSet animatorSet = new AnimatorSet();
    ObjectAnimator translationX = ObjectAnimator.ofFloat(view, "translationX", 0, 300, 0);
    ObjectAnimator translationY = ObjectAnimator.ofFloat(view, "translationY", 0, 300, 0);
    animatorSet.setDuration(500);
    animatorSet.setInterpolator(new LinearInterpolator());
    animatorSet.play(translationX).with(translationY);
    animatorSet.start();
}

旋转

  1. 对X轴
private void TestRotationX(View view) {
    ObjectAnimator rotationX = ObjectAnimator.ofFloat(view, "rotationX", 0, 180);
    rotationX.setDuration(500);
    rotationX.start();
}

  1. 对Y轴
private void TestRotationY(View view) {
    ObjectAnimator rotationY = ObjectAnimator.ofFloat(view, "rotationY", 0, 180);
    rotationY.setDuration(500);
    rotationY.start();
}
  1. 对Z轴
private void TestRotation(View view) {
    /**
     * rotation 范围值 0-360
     */
    ObjectAnimator rotation = ObjectAnimator.ofFloat(view, "rotation", 0, 180);
    rotation.setDuration(500);
    rotation.start();
}

参考文章

  1. Android 实现属性动画平移,旋转,缩放,渐变
  2. ValueAnimator、objectAnimator的基础用法
  3. 自定义控件三部曲之动画篇(七)——ObjectAnimator基本使用

 历史上的今天

  1. 2019: Beyond Compare4 30天试用到期的解决办法(0条评论)
版权声明 1、 本站名称: 笔友城堡
2、 本站网址: https://www.biumall.com/
3、 本站部分文章来源于网络,仅供学习与参考,如有侵权,请留言

暂无评论

暂无评论...

随机推荐

拜伦 · 韦恩的10条人生经验

紧密联的人际网络。运气在生活中扮演着重要的角色,没有比认识尽可能多的人更好的增加运气的方法了。 通过向人们发送文章、书籍和电子邮件来培养你的人际关系网,以表明你在思考这些问题。 为主要出版物撰写专栏和思想文章。 组织讨论小组,把你有想法的朋友聚集在一起。 当你遇到一个新的人时,把他当作朋友。 ...

Kotlin的基本语法

前言简单记录一下Kotlin的基本语法。这里只是简单的记录,只是方便自己而已。正文注释注释是为了使代码易于阅读。单行注释单行注释通常是对程序中的某一行代码进行解释,用符号“//”表示//初始化UIinitUI();多行注释多行注释就是注释中的内容可以是多行,以符号“/ ”开...

shell脚本执行提示bad interpreter...

前言创建temp.sh脚本后,写入执行命令。执行时出行如下提示。-bash: ./temp.sh: /bin/bash^M: bad interpreter: No such file or directory正文通过鼠标右键创建文件temp.sh或者使用touch命令创建temp.sh都...

穆旦:冥想

为什么万物之灵的我们,遭遇还比不上一棵小树?今天你摇摇它,优越地微笑,明天就化为根下的泥土。为什么由手写出的这些字,竟比这只手更长久,健壮?它们会把腐烂的手抛开,而默默生存在一张破纸上。因此,我傲然生活了几十年,仿佛曾做着万物的导演,实则在它们长久的秩序下我只当一会小小的演员。...

Fragment already added

前言项目中会用Viewpager+Fragment来显示图片,先项目中测试ok,但是我单独拎出来做简单调试时出现:java.lang.IllegalStateException: Fragment already added: PlayFragment尴尬了,就我拎出来的demo代码片段有...

王小波:肚子里的战争

我年轻时,有一回得了病,住进了医院。当时医院里没有大夫,都是工农兵出身的卫生员——真正的大夫全都下到各队去接受贫下中农再教育去了。话虽如此说,穿着白大褂的,不叫他大夫又能叫什么呢。我入院第一天,大夫来查房,看过我的化验单,又拿听诊器把我上下听了一遍,最后还是开口来问:你得了什么病。原来那张化验单他没...