▲ Android 自定义 Loading加载动画

▲ Android 自定义 Loading加载动画

最近在家休息,闲暇时间把自定义的东西翻出来好好研究一下,老规矩先看一下效果。

效果图
这里写图片描述

怎么样很萌吧?

实现思路
这个我采用的是用属性动画来实现的,主要是利用AnimatorUpdateListener得到动画执行每一帧所返回的值,重新设置高度。 在通过 addListener,监听每次动画执行的过程,从而赋予新的图片。

实现过程

(1) 先自定义一个ImageView

public class LoadingImageView extends android.support.v7.widget.AppCompatImageView {
  private int mTop; 
    public LoadingImageView(Context context) {
        super(context);
        Init();
    }


    public LoadingImageView(Context context, AttributeSet attrs) {
        super(context, attrs);
        Init();
    }

    public LoadingImageView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        Init();
    }

}

(2) 确定控件的位置

    @Override
    protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
        super.onLayout(changed, left, top, right, bottom);
        mTop = top;
    }

(3) Init() 中的方法 有注释呦

  private void Init() {
        ValueAnimator valueAnimator = ValueAnimator.ofInt(0, 100, 0);
        valueAnimator.setRepeatMode(ValueAnimator.RESTART); //倒序执行
        valueAnimator.setRepeatCount(ValueAnimator.INFINITE); //无限循环
        valueAnimator.setDuration(1300); //时长
        valueAnimator.setInterpolator(new AccelerateDecelerateInterpolator()); //插值器
        valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
            @Override
            public void onAnimationUpdate(ValueAnimator animation) {
                int dx = (Integer) animation.getAnimatedValue(); //获取动画执行每一帧所返回的值
                setTop(mTop - dx); //设置高度
            }
        });
        
        
        valueAnimator.addListener(new Animator.AnimatorListener() {
            @Override
            public void onAnimationStart(Animator animation) {
                setImageDrawable(getResources().getDrawable(R.mipmap.a));
            }

            @Override
            public void onAnimationEnd(Animator animation) {

            }

            @Override
            public void onAnimationCancel(Animator animation) {

            }

            @Override
            public void onAnimationRepeat(Animator animation) {
                mCurImageIndex++;
                switch (mCurImageIndex%ImageCount){
                    case 0:
                        setImageDrawable(getResources().getDrawable(R.mipmap.a));
                        break;
                    case 1:
                        setImageDrawable(getResources().getDrawable(R.mipmap.b));
                        break;
                    case 2:
                        setImageDrawable(getResources().getDrawable(R.mipmap.c));
                        break;
                }
            }
        });
        valueAnimator.start();
    }

被遗忘的常量

private int mCurImageIndex = 0;  //图片递增索引
private static int ImageCount = 3;// 图片的个数

应用 怎么使用这个自定义的View 从而实现这个效果

这里写图片描述

怎么样 是不是很简单呢

源码地址: https://download.csdn.net/download/macaopark/10644446

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/2845.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • java 堆栈的声明_Java 堆栈[通俗易懂]

    java 堆栈的声明_Java 堆栈[通俗易懂]Java堆栈堆栈是一种线性数据结构,用于存储对象的集合。它基于先进先出(LIFO)。Java集合框架提供了许多接口和类来存储对象的集合。其中之一是Stack类,它提供了不同的操作,例如推,弹出,搜索等。在本节中,我们将讨论JavaStack类,其方法和实现在Java中的堆栈数据结构程序。但是在转到JavaStack类之前,请先快速了解堆栈的工作原理。堆栈数据结构具有两个最重要的操作,分别…

  • 关于HTTP协议,一篇就够了「建议收藏」

    关于HTTP协议,一篇就够了「建议收藏」关于HTTP协议,一篇就够了HTTP简介HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速…

  • 什么是透传(虚拟服务器地址)

    moxa串口服务器配置点对点透传模式步骤MOXA串口服务器基本要点:使用TCP/IP通讯协议,需要2个串口服务器配对使用。将串口服务器A设置为Server模式(出厂默认模式),另一个串口服务器B设置为Client模式。将串口服务器B要连接的远程主机地址和端口,设置为A的IP地址和监听端口,即可完成配对。RS232/RS485串口服务器A(Client)串口服务器B(Server)RS232/RS4…

  • Django(2)python虚拟环境virtualenvwrapper[通俗易懂]

    Django(2)python虚拟环境virtualenvwrapper[通俗易懂]python虚拟环境虚拟环境(virtualenvironment),它是一个虚拟化,从电脑独立开辟出来的环境。通俗的来讲,虚拟环境就是借助虚拟机来把一部分内容独立出来,我们把这部分独立出来的东西

  • 《数据结构》C语言版 (清华严蔚敏考研版) 全书知识梳理

    《数据结构》C语言版 (清华严蔚敏考研版) 全书知识梳理写在前面:恰逢期末复习,用了几天时间结合老师勾画的重点以及课件教材等,将全书重要内容做了个大整合。一方面便于自己复习记忆,另一方面po出来让更多需要的人也可以做个参考。同类梳理:《数据库系统概论》第五版(王珊版)全书知识梳理《计算机组成原理》第五版(唐朔飞考研版)全书知识梳理《数据结构》C语言版(清华严…

  • PXE启动服务器及客户端镜像制作

    PXE启动服务器及客户端镜像制作基于CentOS6的PXE无盘系统制作,包含服务器端必要服务的设置开启,客户端镜像文件系统,根文件系统的制作,PXE选单的制作.

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号