自定义View(加载动画)

【自定义控制器View的懒加载 Objective-C语言】 阅读详情

上一次讲了简单的自定义View,大家肯定喷我,这尼玛自定义有毛意思!好,那我就来个有点意思的,意思一下。

菊花在植物分类学中是菊科、菊属的多年生宿根草本植物,根据经典的记载,中国栽培菊花历史已有3000多年...额,偏题了。。。



以上是效果,不知道怎么搞成gif,就截了个图,感兴趣的继续往下看。。

整个步骤和自定义View(基础)一致,不了解的可以去看看。

balabalabala一堆代码。。。

public class ProgressBar extends View {
    /**
     * 第一圈的颜色
     */
    private int mFirstColor;
    /**
     * 第二圈的颜色
     */
    private int mSecondColor;
    /**
     * 圈的宽度
     */
    private int mCircleWidth;

    /**
     * 当前进度
     */
    private int mProgress;

    /**
     * 速度
     */
    private int mSpeed;

    /**
     * 画笔
     */
    private Paint mPaint;


    //中间文字区域
    private Rect mBound;
    public ProgressBar(Context context, AttributeSet attrs) {
        this(context, attrs, 0);
    }

    public ProgressBar(Context context) {
        this(context, null);
    }

    public ProgressBar(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        TypedArray a = context.getTheme().obtainStyledAttributes(attrs, R.styleable.customProgress, defStyle, 0);
        int n = a.getIndexCount();
        for (int i = 0; i < n; i++) {
            int attr = a.getIndex(i);
            switch (attr) {
                case R.styleable.customProgress_firstColor:
                    mFirstColor = a.getColor(attr, Color.GREEN);
                    break;
                case R.styleable.customProgress_secondColor:
                    mSecondColor = a.getColor(attr, Color.RED);
                    break;
                case R.styleable.customProgress_circleWidth:
                    mCircleWidth = a.getDimensionPixelSize(attr, (int) TypedValue.applyDimension(
                            TypedValue.COMPLEX_UNIT_PX, 20, getResources().getDisplayMetrics()));
                    break;
                case R.styleable.customProgress_speed:
                    mSpeed = a.getInt(attr, 1000);// 默认1000
                    break;
            }
        }
        a.recycle();

        mPaint = new Paint();

        //绘图
        new Thread() {
            @Override
            public void run() {
                super.run();
                while (true) {
                    if(mProgress>=360){
                        return;
                    }
                    mProgress++;
                    postInvalidate();//会触发调用onDraw方法
                    try {
                        Thread.sleep(mSpeed);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        }.start();
    }


    @Override
    protected void onDraw(Canvas canvas) {
        int centre = getWidth() / 2; // 获取圆心的x坐标
        int radius = centre - mCircleWidth / 2;// 半径
        mPaint.setStrokeWidth(mCircleWidth); // 设置圆环的宽度
        mPaint.setAntiAlias(true); // 消除锯齿
        mPaint.setStyle(Paint.Style.STROKE); // 设置空心

        mPaint.setColor(mFirstColor); // 设置圆环的颜色
        canvas.drawCircle(centre,centre,radius,mPaint);

        RectF oval = new RectF(centre - radius, centre - radius, centre + radius, centre + radius); // 用于定义的圆弧的形状和大小的界限
        mPaint.setColor(mSecondColor); // 设置圆环的颜色
        canvas.drawArc(oval, -90, mProgress, false, mPaint); // 根据进度画圆弧

        //中间文字
        mPaint.reset();
        mBound = new Rect();//字体区域
        String per=(int)(mProgress/3.6)+"%";
        mPaint.setColor(Color.DKGRAY);
        mPaint.setTextSize(100);
        mPaint.getTextBounds(per, 0, per.length(), mBound);
        canvas.drawText(per, getWidth() / 2- mBound.width()/2, getHeight() / 2+ mBound.height()/2, mPaint);
    }

}

自定义属性和布局就不展示了。

下一节深入了解




android学习笔记之自定义View之实现一个简单的加载动画 一、概述学习自定义view最基础的知识后就需要做一个小demo来检验自己的成果,比如实现以下加载动画。 阅读详情

相关推荐

Android自定义通用加载view

1、显示加载视图,加载失败的时候显示加载失败视图,数据为空时显示数据为空视图,支持为失败视图设置点击事件重新加载数据。 2、支持个性化设置,自定义设置 加载、失败、空数据视图。 博客讲解:http://blog.youkuaiyun.com/yissan

android文本自动添加图片,Android textView文字添加图片 imageSpan使用

如果想为一段文字添加图片,那么可以用到imageSpan来很好的实现代码:tvTest = (TextView) findViewById(R.id.test);CharSequence text = "效果测试★,效果测试,效果★测试";SpannableStringBuilder builder = new SpannableStringBuilder(text);String rexgStr...

weixin_42097189的博客 1214

自定义加载等待动画

Android自定义登录加载等待动画的实现!

自定义View(2):自定义文本和图像显示

继承自View的文本+图像显示控件CustomViewImage,需要自定义属性:文字内容,字体颜色和字体大小;图像资源和图像显示方式。 第一步:资源文件中定义属性 第二步:在布局文件中添加CustomViewImage,注意定义xmlns:custom,可以更改的是属性资源所在的包名[com.twelve],即man

vqqYuAn的专栏 749

Android自定义View实现loading动画加载效果

项目开发中对Loading的处理是比较常见的,安卓系统提供的不太美观,引入第三发又太麻烦,这时候自己定义View来实现这个效果,并且进行封装抽取给项目提供统一的loading样式是最好的解决方式了。 先自定义一个View,继承自LinearLayout,在Layout中,添加布局控件 /** * Created by xiedong on 2017/3/7. */ public class Loading_view extends LinearLayout { private Context mContext; private RelativeLayout loading_con

告别手动调参!PSCAD 4.2的Multiple-Run功能,5分钟搞定交流故障批量仿真

本文详细介绍了PSCAD 4.2的Multiple-Run功能如何高效处理交流故障批量仿真,告别传统手动调参的低效模式。通过五步配置法,工程师可在5分钟内完成数百次参数组合的仿真,显著提升电力系统分析效率。文章还包含工业级应用案例和高级调试技巧,助力实现故障仿真的自动化与智能化。

weixin_42552716的博客 275

Android-自定义TextView和异步加载图片的实现

Android-自定义TextView和异步加载图片的实现 实例:ConstomTextView 实现步骤: 1. 定义一个继承LinearLayout的类:ConstomTextView 2. 在ConstomTextView类中自定义setText()方法 3.在setText方法中,通过TypedArray来获取自定义属性,来设置组件相应的参数 4.如果要在布局中显示出图...

编程语言小筑 174

使用这个算法我可以实现英雄联盟里英雄的走位|Java 开发实战

A算法,A(A-Star)算法是一种静态路网中求解最短路径最有效的直接搜索方法,也是解决许多搜索问题的有效算法。算法中的距离估算值与实际值越接近,最终搜索速度越快。 基本概念 首先在大学我们遇到最多的算法Dijkstra、Floyd、广度搜索、深度搜索。关于这些算法我们以后再慢慢的研究,今天的重点在A算法上。A算法是一种启发式算法。与上述几种算法不同的是A*算法在考虑起始节点的同时还会考虑到目标节点的代价。 在A*算法中我们给每个节点都定义一些属性。最基本的就是下文提到的三基数-这里的三基数是我自己定义.

Java进阶营 312

自定义控件(View) (B)

自定义view,核心是学会使用系统提供的工具集,把view “画”出来。 1、继承view就可以拿到工具集,常用的工具有画布Canvas和画笔Paint 2、把你想要的东西画出来 ,onDraw。 3、了解View框架,这样可以更好地使用自定义view。 View框架的工作流程为:测量每个View大小(measure)-->把每个View放置到相应的位置(layout)--&.........

T的专栏 560

CTF全能工具箱ProV2:集成AI与94GB离线资源库,打造无网环境下的智能解题流水线

CTF全能工具箱ProV2是一款专为线下CTF比赛设计的All-in-One离线解决方案。它集成了94GB的庞大离线资源库,涵盖Web、逆向、Pwn等全方向工具链与知识库,并创新性地内置了本地AI大模型,可在断网环境下提供智能解题辅助,实现从信息收集到漏洞利用的智能流水线作业,极大提升比赛效率。

weixin_29240343的博客 422

c语言【分糖果】2023蓝桥杯4124(枚举,递归,dfs)

但是这是不符合我们糖果刚好分完的条件的,我们应该往回退到上一层,也就是孩子6这层,然后j+1=3,孩子7分到3个第二种糖果,这也不符合我们糖果刚好分完的条件,然后就会再次回退到孩子6这里,然后j+1=4,让我们的孩子7获得5块第二种糖果,然后还是不符合糖果刚分完的条件,于是再一次退回到孩子6这里,然后就会有外循环i+1=1,j=1,孩子7分到1块第一种糖果1块第二块糖果......然后就是这样的不停地回溯,试探,直到把整棵树遍历一遍,并且记录所有的满足条件的组合。先放一下我的代码,我的代码超时啦救命!

weixin_74331419的博客 730

android自定义view之加载动画ColorBall

更多细节请看源码 https://github.com/que123567/CradleBallView 用途:可充当加载动画效果如图 1.自定义类CradleBall继承自View即:画一个小球public class CradleBall extends View { private int width; private int height; private Pai

fjnu_se的博客 395

Qt C++ 串口调试助手

1. **串口配置**:支持自动检测可用串口,可配置波特率(9600~921600)、数据位(5~8)、校验位(无/奇/偶/标记/空格)、停止位(1/1.5/2)。- HEX 模式发送时,输入格式需为十六进制字符(0-9、A-F),可带空格(如 `01 A3 FF`)或不带空格(如 `01A3FF`)。// 发送模式:true=HEX,false=ASCII。// 字符串转HEX字节数组。ui->parity->addItems({"无", "奇校验", "偶校验", "标记校验", "空格校验"});

寒寒豆豆软件公司的博客 147

Android自定义view-高仿小米视频加载动画效果

1、概述 前几日出差,每晚回到酒店的时候,睡前打发时间就是拿起自己的小米手机撸剧,酒店的wifi网络实在太差,眼睁睁的看着小米视频的加载动画一直拼命的loading中,正好最近一直在看自定义view的东西,何不乘此撸一个山寨的小米视频动画练练手,废话不多说了,现上效果图。

俊司达也的专栏 5715

[PCIE5.0] 2.2.8.9 Optimized Buffer Flush/Fill (OBFF) Message

这段文字讲解的是 优化的缓冲区清空/填充(OBFF)消息,它是 PCI Express(PCIe)规范中的一个可选功能,用于向设备报告平台中央资源的状态。简单来说,OBFF 主要帮助设备了解当前平台资源(如缓存或内存)的状态,从而优化数据的处理和传输。这章重点内容如下。

系统固件工程师 538

如何计算 R 中的基尼系数(附示例)

以意大利统计学家Corrado Gini命名,基尼系数是衡量人口收入分配的一种方法。基尼系数的值在 0 到 1 之间,值越高代表收入不平等越大,其中:0代表完全的收入平等(每个人的收入都一样) 1代表完全的收入不平等(一个人拥有所有收入) 您可以在此处找到按国家/地区列出的基尼系数列表。以下示例显示了使用DescTools包中的Gini()函数计算 R 中的基尼系数的两种方法。示例 1:使用个人收入计算基尼系数假设我们有以下 10 个人的年收入列表:收入:5 万美元、5 万美元、7 万美元、7 万美元、7

Mrrunsen的博客 2990

自定义 View 之联想手机 ZUI 系统加载动画

博主声明: 转载请在开头附加本文链接及作者信息,并标记为转载。本文由博主威威喵原创,请多支持与指教。 本文首发于此 博主:威威喵|博客主页:https://blog.youkuaiyun.com/smile_running 本次自定义 View 写的是一个仿联想手机 ZUI 系统加载动画的效果,前几天博主收到了 ZUI 11 的更新,发现更新了之后并没有大的改善,反而一直用的...

你若盛开,蜜蜂自来 1698

MoCap 动作捕捉开源库教程

数据通过 tf2 和支持不同 QoS 设置的 /poses 主题直接发布。该软件包最初是为 Crazyswarm 开发的,用于跟踪多达 50 个飞行机器人。

机器人控制与仿真应用 1307

Android 自定义View修炼-自定义加载进度动画XCLoadingImageView

一、概述 本自定义View,是加载进度动画的自定义View,继承于ImageView来实现,主要实现蒙层加载进度的加载进度效果。 支持水平左右加载和垂直上下加载四个方向,同时也支持自定义蒙层进度颜色。 直接看下面的效果图吧。 二、效果图 废话不说,先来看看效果图吧~~ 三、实现原理方案 1、自定义View-XCLoadingImageView,继承ImageVIew来实现,这样就...

weixin_30553837的博客 170

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

自定义View实现注销图案的加载动画

先看效果图: 有那味了。。。(懂得都懂^ ^ √) 我们先来分析一下怎么画,然后再研究怎么让他动起来 这个View是由内部的注销图案和外面一圈圆环构成。而内部的注销图案又是由一个基本满角度的圆弧和一根竖线组成 一、绘制内部注销图案 首先初始化画笔和圆弧的外切矩形: private Paint logOffPaint; //注销图案的画笔 private Paint circlePaint; //外圆的画笔 private RectF logOffRect; //注销图案中圆弧的外切

zz51233273的博客 264

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

android实现加载过程动画,Android 属性动画+自定义view实现加载动画

如图splash.gif思路分析过程拆分1.画6个小圆圈2.小圆圈转动起来3.小圆圈聚合4.开始扩散首先确定6个圆的坐标,画出小圆,圆要转动,就是要同步改变每个小圆的坐标,小圆的运动轨迹是个圆。所以使用属性动画,属性动画的变化区别设置为0-2π,然后使用勾股定律求出旋转的圆心坐标,重绘。就能实现旋转效果了。然后只要改变这个大圆的半径就能实现聚合效果。最后扩散效果这个思路就很sao,就是画一个圆,画...

weixin_33265716的博客 666

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

android 自定义正在加载动画,Android自定义加载loading view动画组件

我写写使用步骤自定义view(CircleProgress )的代码package com.hysmarthotel.view;import com.hysmarthotel.roomcontrol.R;import com.hysmarthotel.util.EaseInOutCubicInterpolator;import android.animation.TimeInterpolator;...

weixin_39564831的博客 227

仿狗东加载效果—支持加载成功和加载失败动画效果和颜色自定义的view

最近在爬坑自定义View,看到狗东支付时有一个支付成功后的动画效果。遂决定自己也撸一个,加入了自己的一些想法,把实现的思路分享一下。 特点: 加载的view元素颜色支持自定义 加载成功和加载失败会有一个动画效果 源码已上传GitHub PowerfulLoadingView ,欢迎交流。

kuaiguixs的博客 1814

android 自定义view 动画效果,Android自定义view实现阻尼效果的加载动画

效果:需要知识:1. 二次贝塞尔曲线2. 动画知识3. 基础自定义view知识先来解释下什么叫阻尼运动阻尼振动是指,由于振动系统受到摩擦和介质阻力或其他能耗而使振幅随时间逐渐衰减的振动,又称减幅振动、衰减振动。[1] 不论是弹簧振子还是单摆由于外界的摩擦和介质阻力总是存在,在振动过程中要不断克服外界阻力做功,消耗能量,振幅就会逐渐减小,经过一段时间,振动就会完全停下来。这种振幅随时间减小的振动称为...

weixin_34393451的博客 489

Android, 自定义View实现 加载进度动画,仿app“王者营地“

废话在前: 昨天打王者,队友实在是太坑了,硬是卡在了星耀3。然后关闭游戏,打开王者荣耀助手,(王者营地),结果网络波动,界面一直在加载状态中,我就在想这个加载动画怎么能实现呢? 两个小正方形左右移动,一个中间大正方形大小随着小正方形靠近而变大,疏远而变小,”加载中“后面的点变化1,2,3,4。 废话不多说,直接上实现效果 实现效果和“王者营地”的差不多,小正方形运动速度可能有些差异,但大抵一致。 实现原理也很简单, 自定义view继承 TextView,因为有文字,所以继承Text View会好些。

qq_41904106的博客 1172
上一篇: Android 自定义View(基础)
下一篇: 自定义View深入了解(一)
深巷落叶
博客等级 码龄16年 1粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值