码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Android 实现椭圆形中心发散渐变绘制


    1. 前言

    工作中有一个需求,需要实现一个椭圆形的中心发散渐变效果,并且可以自由指定椭圆比例,旋转角度等。
    Android中实现椭圆形的绘制很简单,只需要调用canvas.drawOval()就可以了,圆形的中心发散渐变可以使用RadialGradient,但是椭圆形的中心发散渐变效果Android自带的API里面却是没有的,这要怎么来实现呢? 自己费了点功夫终于将其实现。

    >>> 本文的源码demo可以直接看这里 : Android 实现椭圆形中心放射性渐变绘制-源码Demo

    先来看一下实现的效果

    在这里插入图片描述
    它的颜色渐变是从内往外渐变的,从白色(255,255,255)一直渐变到黑色(0,0,0)

    在这里插入图片描述

    再来看一下GIF动图,效果如下,可以实现各种椭圆的形状,并且保持中心渐变发散的效果。

    在这里插入图片描述

    2. 实现圆形绘制

    首先,我们先来绘制一个普通的圆形,这里直接调用canvas.drawCircle就行了

    private val paintWhite = Paint().apply {
       
    	color = Color.WHITE
        style = Paint.Style.FILL
    }
    
    override fun onDraw(canvas: Canvas) {
       
            super.onDraw(canvas)
    
        canvas.drawColor(Color.BLACK)
        canvas.drawCircle(250F, 250F, 250F/2F, paintWhite)
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    效果如下所示

    在这里插入图片描述

    3. 实现中心发散渐变效果

    要实现中心发散渐变效果,Android中要使用RadialGradient,它用于在绘图时创建一个放射性的渐变效果。
    它的工作方式是通过定义一个渐变的中心点,然后颜色从这个中心点向外散开,形成一个圆形的渐变效果。你可以定义渐变的颜色和位置,以及渐变的半径。
    RadialGradient的使用具体可以看我的另一篇博客 : Paint渲染器 Shader的使用。
    这里我们就直接附上使用RadialGradient来实现中心发散渐变圆形效果的代码。

    private val paintGradient = 
    • 相关阅读:
      ACM MM & ECCV 2022 | 美团视觉8篇论文揭秘内容领域的智能科技
      低代码平台对于开发者来说可以解决哪些问题?
      一起来打靶 02
      Redis的五大数据类型使用的方法详细介绍
      操作系统的双重模式
      JAVA黑马程序员day12--集合进阶(下部--双列集合)
      专访黄文斌丨中专文凭的他,辞掉了9年的国企“铁饭碗”
      Alibaba 针对“金九银十”推出的《Java 岗位面试清单》,全是考点
      一台服务器最大能支持多少条TCP连接
      深度残差网络的实现与编程
    • 原文地址:https://blog.csdn.net/EthanCo/article/details/133076252
    • 最新文章
    • 攻防演习之三天拿下官网站群
      数据安全治理学习——前期安全规划和安全管理体系建设
      企业安全 | 企业内一次钓鱼演练准备过程
      内网渗透测试 | Kerberos协议及其部分攻击手法
      0day的产生 | 不懂代码的"代码审计"
      安装scrcpy-client模块av模块异常,环境问题解决方案
      leetcode hot100【LeetCode 279. 完全平方数】java实现
      OpenWrt下安装Mosquitto
      AnatoMask论文汇总
      【AI日记】24.11.01 LangChain、openai api和github copilot
    • 热门文章
    • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
      奉劝各位学弟学妹们,该打造你的技术影响力了!
      五年了,我在 CSDN 的两个一百万。
      Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
      面试官都震惊,你这网络基础可以啊!
      你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
      心情不好的时候,用 Python 画棵樱花树送给自己吧
      通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
      13 万字 C 语言从入门到精通保姆级教程2021 年版
      10行代码集2000张美女图,Python爬虫120例,再上征途
    Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
    正则表达式工具 cron表达式工具 密码生成工具

    京公网安备 11010502049817号