专栏首页Android知识点总结D9-Android自定义控件之动画篇1

D9-Android自定义控件之动画篇1

本篇是关于ObjectAnimator的演示 ObjectAnimator是针对有setXxxxxx方法的属性,进行的"Xxxxxx"属性变化动画 绘制部分就不废话了,前面已经说很多了,直接进入主题


一、下移示例:

下移动画.gif

/**
 * 下移动画
 */
private ObjectAnimator mMoveDown;
float translationY = getTranslationY();//当前Y偏移量
mMoveDown = ObjectAnimator//创建实例
        //(View,属性名,初始化值,结束值)
        .ofFloat(this, "translationY", translationY, translationY + 300)
        .setDuration(1000);//设置时常
mMoveDown.start();//开启动画

加上背景看一下,可以看出是整个View进行了变化。

加背景.gif

常用属性一览:

属性名

演示

解释

alpha

透明度1~0

translationX

X方向移动

translationY

Y方向移动

rotation

旋转(默认View中心点)

rotationX

X轴旋转(默认View中心横轴)

translationY

Y轴旋转(默认View中心纵轴)

scaleX

X缩放 倍数

scaleY

Y缩放 倍数


二、其他

1.旋转缩放中心点设置:
setPivotX(200);
setPivotY(200);

旋转中心点.gif

2.多参数

0-->360 360-->0 0-->90

.ofFloat(this, "rotation", 0, 360,360,0,0,90)

多参数.gif

3.延迟、重复、重复模式

重复模式:ValueAnimator.RESTART(1)和ValueAnimator.REVERSE(2) 重复次数:ValueAnimator.INFINITE为无限循环(-1)

translationX.setStartDelay(1000);
translationX.setRepeatCount(2);
translationX.setRepeatMode(ValueAnimator.RESTART);
RESTART重复效果

延迟,RESTART重复.gif

REVERSE重复效果

REVERSE重复.gif


三、自定义ObjectAnimator属性

内置的只是一些常用的,我们也可以自定义自己的属性

1.自定义圆的大小动画

必须用一个setXxx的方法,属性名则为xxx,调用重绘方法

public void setCircleR(float circleR) {
    mCircleR = circleR;
    invalidate();//记得重绘
}
private ObjectAnimator circleR() {
    return ObjectAnimator//创建实例
            //(View,属性名,初始化值,结束值)
            .ofFloat(this, "circleR", 100, 50,100,20,100)
            .setDuration(3000);//设置时常
}

自定义半径.gif

2.自定义颜色动画
public void setColor(int color) {
    mColor = color;
    invalidate();
}
private ObjectAnimator color() {
    ObjectAnimator color = ObjectAnimator//创建实例
            //(View,属性名,初始化值,结束值)
            .ofInt(this, "color", 0xff0000ff,0xffF2BA38,0xffDD70BC)
            .setDuration(3000);
    color.setEvaluator(new ArgbEvaluator());//颜色的估值器
    return color;
}

自定义颜色.gif

下一篇将会带来:set动画集来控制多个动画,以及动画的监听。


后记、

1.声明:

[1]本文由张风捷特烈原创,转载请注明 [2]欢迎广大编程爱好者共同交流 [3]个人能力有限,如有不正之处欢迎大家批评指证,必定虚心改正 [4]你的喜欢与支持将是我最大的动力

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • SpringBoot-14-MyBatis预热篇,MySQL小结

    新建一个测试表:将sword_insert_test中test_name赋值为sword表中id大于5的name

    张风捷特烈
  • 【-Flutter/Dart 语法补遗-】 sync* 和 async* 、yield 和yield* 、async 和 await

    张风捷特烈
  • [Flutter必备]-Flex布局完全解读

    张风捷特烈
  • Android自定义View之高仿QQ健康

    ? 我们都知道自定义View一般有三种直接继承View、继承原有的控件对控件的进行修改、重新拼装组合,最后一种主要针对于ViewGroup。具体的怎么做不是本...

    非著名程序员
  • 高通降低蜂窝物联网连接的功耗

    尽管部分经济体停滞不前,但电子行业在频谱的两端(高性能和低功耗)不断突破边界。在功率频谱的低端,高通宣布了一种新的低功率调制解调器芯片,用于需要长电池寿命和/或...

    用户4122690
  • hi3559v100 sdk中双系统AMP架构的初步了解

    hi3559v100是海思推出的camera soc处理器。采用的是双核处理器。一个是a7,运行的linux3.18内核。一个是a17使用的是huaweilit...

    233333
  • Pyhon制作脚本提取日志数据

    可能是java和lua的基础,这门语言学起来莫名的快,安装环境看了半天基础语法就开始写脚本了。

    深雾
  • JFreeChart项目实例

    最近利用JFreeChart和MySQL数据库做了一个JSP网页,展现Android Martet全球12个国家的TOP800游戏排名的曲线走势

    阳光岛主
  • 创客谈:如何成功设计出儿童陪护类机器人

    在今年,很多创业团队涌进了机器人领域,扫地、陪护、人形,投资人的一句“2015年是机器人的元年”预示着产业的兴起。不过机器人不同于穿戴等智能设备,虽然这个领域的...

    机器人网

扫码关注云+社区

领取腾讯云代金券