码农知识堂 - 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 = 
    • 相关阅读:
      Qt学习22 布局管理器(一)
      SQL:增、删、改、查 基本语句 Navicat建库(用法 + 例子)
      职场小技巧分享,想要成为受欢迎的人快来
      景联文科技:专业提供高质量大语言模型训练数据
      Spring 中Bean的生命周期及后置处理器使用
      数字化改革“1612”详解
      vscode-server安装和部分配置
      【Pytorch】数据集的加载和处理(二)
      [附源码]计算机毕业设计springboot本地助农产品销售系统
      java中MD5加密
    • 原文地址: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号