iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Android怎么自定义View实现横向的双水波纹进度条
  • 844
分享到

Android怎么自定义View实现横向的双水波纹进度条

2023-06-25 12:06:19 844人浏览 泡泡鱼
摘要

这篇文章将为大家详细讲解有关Android怎么自定义View实现横向的双水波纹进度条,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。思路分析整体效果可分为三个,绘制圆角背景和圆角矩形,绘制第一条和第二条水波

这篇文章将为大家详细讲解有关Android怎么自定义View实现横向的双水波纹进度条,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

    思路分析

    整体效果可分为三个,绘制圆角背景和圆角矩形,绘制第一条和第二条水波浪,根据自定义进度变化效果。

    功能实现

    1.绘制圆角背景和圆角矩形边框

    圆角矩形边框:

    private RectF rectBorder;if (rectBorder == null) {    rectBorder = new RectF(0.5f * dp1, 0.5f * dp1, waveActualSizeWidth - 0.5f * dp1, waveActualSizeHeight - 0.5f * dp1);}canvas.drawRoundRect(rectBorder, dp27, dp27, borderPaint);

    我们创建一个新的画布,然后在画布里画上圆角矩形背景和第一条和第二条水波浪:

    //这里用到了缓存 根据参数创建新位图if (circleBitmap == null) {    circleBitmap = Bitmap.createBitmap(waveActualSizeWidth, waveActualSizeHeight, Bitmap.Config.ARGB_8888);}//以该bitmap为底创建一块画布if (bitmapCanvas == null) {    bitmapCanvas = new Canvas(circleBitmap);}// 圆角矩形背景,为了能让波浪填充完整个圆形背景if (rectBg == null) {    rectBg = new RectF(0, 0, waveActualSizeWidth, waveActualSizeHeight);}bitmapCanvas.drawRoundRect(rectBg, dp27, dp27, backgroundPaint);//裁剪图片canvas.drawBitmap(circleBitmap, 0, 0, null);

    2.通过贝塞尔曲线实现双水波

    1)实现第一条水波

    private Path canvasWavePath() {    //要先清掉路线    wavePath.reset();    //起始点移至(0,0) p0 -p1 的高度随着进度的变化而变化    wavePath.moveTo((currentPercent) * waveActualSizeWidth, -moveDistance);    //最多能绘制多少个波浪    //其实也可以用 i < getWidth() ;i+=waveLength来判断 这个没那么完美    //绘制p0 - p1 绘制波浪线 这里有一段是超出View的,在View右边距的右边 所以是* 2    for (int i = 0; i < waveNumber * 2; i++) {        wavePath.rQuadTo(waveHeight, waveLength / 2, 0, waveLength);        wavePath.rQuadTo(-waveHeight, waveLength / 2, 0, waveLength);    }    //连接p1 - p2    wavePath.lineTo(0, waveActualSizeHeight);    //连接p2 - p0    wavePath.lineTo(0, 0);    //封闭起来填充    wavePath.close();    return wavePath;}

    moveDistance为水波垂直方向移动的距离。

    waveLength为水波长度,一个上弧加一个下弧为一个波长。

    path的起始点为(0,0)可根据进度动态改变,然后循环画曲线,长度是有几个波浪就是多长,然后连接到view高度的位置,最后到(0,0),形成一个封闭的区域,这样就实现了一个填充的水波效果。

    2)绘制第二条水波,第二条水波和第一条类似,只是起始点变了:

    private Path canvasSecondPath() {    secondWavePath.reset();    //初始点移动到下方    secondWavePath.moveTo((currentPercent) * waveActualSizeWidth, waveActualSizeHeight + moveDistance);    for (int i = 0; i < waveNumber * 2; i++) {        secondWavePath.rQuadTo(waveHeight, -waveLength / 2, 0, -waveLength);        secondWavePath.rQuadTo(-waveHeight, -waveLength / 2, 0, -waveLength);    }    secondWavePath.lineTo(0, 0);    secondWavePath.lineTo(0, waveActualSizeHeight);    secondWavePath.close();    return secondWavePath;}

    3.设置动画使进度和水波纹变化

    public void setProgress(int currentProgress, long duration, AnimatorListenerAdapter listenerAdapter) {    float percent = currentProgress * 1f / maxProgress;    this.currentProgress = currentProgress;    //从0开始变化    currentPercent = 0;    moveDistance = 0;    mProgressAnimator = ValueAnimator.ofFloat(0, percent);    //设置动画时间    mProgressAnimator.setDuration(duration);    //让动画匀速播放,避免出现波浪平移停顿的现象    mProgressAnimator.setInterpolator(new LinearInterpolator());    mProgressAnimator.addUpdateListener(listener);    mProgressAnimator.addListener(listenerAdapter);    mProgressAnimator.start();    // 波浪线    startWaveAnimal();}private void startWaveAnimal() {    //动画实例化    if (waveProgressAnimator == null) {        waveProgressAnimator = new WaveProgressAnimal();        //设置动画时间        waveProgressAnimator.setDuration(2000);        //设置循环播放        waveProgressAnimator.setRepeatCount(Animation.INFINITE);        //让动画匀速播放,避免出现波浪平移停顿的现象        waveProgressAnimator.setInterpolator(new LinearInterpolator());        //当前视图开启动画        this.startAnimation(waveProgressAnimator);    }}

    其中波浪动画是通过改变moveDistance的值改变纵坐标达到,进度主要是通过改变百分比currentPercent改变波浪的横坐标达到。

    关于“Android怎么自定义View实现横向的双水波纹进度条”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

    --结束END--

    本文标题: Android怎么自定义View实现横向的双水波纹进度条

    本文链接: https://www.lsjlt.com/news/304644.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • Android怎么自定义View实现横向的双水波纹进度条
      这篇文章将为大家详细讲解有关Android怎么自定义View实现横向的双水波纹进度条,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。思路分析整体效果可分为三个,绘制圆角背景和圆角矩形,绘制第一条和第二条水波...
      99+
      2023-06-25
    • Android如何自定义View实现横向的双水波纹进度条
      目录思路分析 功能实现 1.绘制圆角背景和圆角矩形边框 2.通过贝塞尔曲线实现双水波 3.设置动画使进度和水波纹变化 结语 网上垂直的水波纹进度条很多,但横向的很少,将垂直的水波纹改...
      99+
      2022-11-12
    • Android自定义view实现水波纹进度球效果
      今天我们要实现的这个view没有太多交互性的view,所以就继承view。 自定义view的套路,套路很深       1、获...
      99+
      2022-06-06
      view Android
    • Android中怎么自定义双向进度条
      本篇文章给大家分享的是有关Android中怎么自定义双向进度条,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。注释基本上就把原理说明了一下。package util;i...
      99+
      2023-05-30
      android
    • Android自定义进度条的圆角横向进度条实例详解
      1.本文将向你介绍自定义进度条的写法,比较简单,但还是有些知识点是需要注意的: invalidate()方法 RectF方法的应用 onMeasure方法的应用 2.原理 画3...
      99+
      2022-06-06
      进度条 Android
    • Android怎么自定义View实现圆形进度条
      本文小编为大家详细介绍“Android怎么自定义View实现圆形进度条”,内容详细,步骤清晰,细节处理妥当,希望这篇“Android怎么自定义View实现圆形进度条”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。原...
      99+
      2023-07-02
    • Android编程使用自定义View实现水波进度效果示例
      本文实例讲述了Android编程使用自定义View实现水波进度效果。分享给大家供大家参考,具体如下:首先上效果图:简介:自动适应屏幕大小;2.水波自动横向滚动;3.各种绘制参数可通过修改常量进行控制。代码不多,注释也比较详细,全部贴上:(一...
      99+
      2023-05-31
      android 自定义 view
    • Android中怎么自定义view实现圆环进度条效果
      这篇文章主要讲解了“Android中怎么自定义view实现圆环进度条效果”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Android中怎么自定义view实现圆环进度条效果”吧!核心代码自定义...
      99+
      2023-06-29
    • 自定义视图view怎么实现环形进度条
      这篇文章主要介绍“自定义视图view怎么实现环形进度条”,在日常操作中,相信很多人在自定义视图view怎么实现环形进度条问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”自定义视图view怎么实现环形进度条”的疑...
      99+
      2023-07-05
    • Android中怎么通过自定义view实现进度条加载效果
      Android中怎么通过自定义view实现进度条加载效果,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。分析图:代码如下:package com.example.d...
      99+
      2023-05-30
      android view
    • Android自定义View实现环形进度条的思路与实例
      前言 前段时间看到了豆瓣FM的音乐播放界面,有一个环形的进度条,非常的好看,于是想了想,为什么不自己做一个呢,于是就开始了自定义的过程 豆瓣FM的播放界面如下图: 功能分...
      99+
      2022-06-06
      view 进度条 Android
    • Android自定义View实现带数字的进度条实例代码
      第一步、效果展示 图1、蓝色的进度条 图2、红色的进度条 图3、多条颜色不同的进度条 图4、多条颜色不同的进度条 第二步、自定义ProgressBar实...
      99+
      2022-06-06
      view 进度条 Android
    • Android怎么自定义View实现圆弧进度效果
      这篇文章主要介绍“Android怎么自定义View实现圆弧进度效果”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Android怎么自定义View实现圆弧进度效果”文章能帮助大家解决问题。技术实现Ar...
      99+
      2023-07-06
    • Android自定义View实现圆形加载进度条效果的方法
      这篇文章将为大家详细讲解有关Android自定义View实现圆形加载进度条效果的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。View仿华为圆形加载进度条效果图实现思路可以看出该View可分为三个部分...
      99+
      2023-05-30
      android view 进度条
    • Android中怎么自定义ProgressBar实现酷炫进度条
      要在Android中自定义ProgressBar并实现酷炫的进度条效果,你可以按照以下步骤进行操作:1. 创建一个新的自定义Prog...
      99+
      2023-10-18
      Android
    • 怎么在Android中通过自定义View实现一个环形进度条效果
      这篇文章给大家介绍怎么在Android中通过自定义View实现一个环形进度条效果,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。功能分析虽然功能比较简单,但是仍然需要仔细分析    ...
      99+
      2023-05-31
      android view roi
    • Android编程基于自定义View实现绚丽的圆形进度条功能示例
      本文实例讲述了Android编程基于自定义View实现绚丽的圆形进度条功能。分享给大家供大家参考,具体如下: 本文包含两个组件,首先上效果图: 1.ProgressBarVie...
      99+
      2022-06-06
      view 进度条 示例 自定义view Android
    • Android怎么自定义ProgressBar实现漂亮的进度提示框
      这篇文章主要介绍“Android怎么自定义ProgressBar实现漂亮的进度提示框”,在日常操作中,相信很多人在Android怎么自定义ProgressBar实现漂亮的进度提示框问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法...
      99+
      2023-07-02
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作