Android 绘制渐变色

一. 在xml文件中绘制

startColor:渐变色起始颜色

endColor:渐变色结束颜色

angle:绘制角度

代码:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"><gradientandroid:startColor="@color/colorStart"android:angle="-45"android:endColor="@color/colorEnd"/><sizeandroid:width="@dimen/color_size"android:height="@dimen/color_size"/><cornersandroid:radius="@dimen/radius"/>
</shape>

二.在代码中绘制

重写ondraw方法,使用LinearGradient绘制渐变View

 override fun onDraw(canvas: Canvas?) {if (mStartColor == null || mEndColor == null) {return}val w: Float = measuredWidth.toFloat()val h: Float = measuredHeight.toFloat()val linearGradient =LinearGradient(0f, 0f, w, h, mStartColor!!, mEndColor!!, Shader.TileMode.CLAMP)val rectF = RectF(0f, 0f, w, h)mPaint.shader = linearGradient//角度从(0,0)到(w,h)的渐变色canvas?.drawRoundRect(rectF, mRectRadius, mRectRadius, mPaint);}

三.绘制一组渐变色

把起始颜色和结束颜色定义在xml中:

<?xml version="1.0" encoding="utf-8"?>
<resources><string-array name="gradient_start"><item>#2ae0c8 </item><item>#a2e1d4</item><item>#acf6ef</item><item>#cbf5fb</item><item>#bdf3d4</item><item>#e6e2c3</item><item>#e3c887</item><item>#fad8be</item><item>#fbb8ac</item><item>#fe6673</item><item>#2ae0c8 </item><item>#a2e1d4</item><item>#acf6ef</item><item>#cbf5fb</item><item>#bdf3d4</item><item>#e6e2c3</item><item>#e3c887</item><item>#fad8be</item><item>#fbb8ac</item><item>#fe6673</item></string-array><string-array name="gradient_end"><item>#e3c887</item><item>#fad8be</item><item>#e3c887</item><item>#fad8be</item><item>#fe6673</item><item>#acf6ef</item><item>#EE8EBE</item><item>#a2e1d4</item><item>#acf6ef</item><item>#cbf5fb</item><item>#e3c887</item><item>#fad8be</item><item>#e3c887</item><item>#fad8be</item><item>#fe6673</item><item>#acf6ef</item><item>#EE8EBE</item><item>#a2e1d4</item><item>#acf6ef</item><item>#cbf5fb</item></string-array>
</resources>

自定义一个布局,在布局中添加绘制的渐变色方块:

 private fun initColor() {val startColor = resources.getStringArray(R.array.gradient_start)val endColor = resources.getStringArray(R.array.gradient_end)for (i in startColor.indices) {val view = getView(Color.parseColor(startColor[i]), Color.parseColor(endColor[i]))addView(view)}}

绘制结果:

![在这里插入图片描述](https://img-blog.csdnimg.cn/20210620224626958.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzUwOTA0MDYy,size_16,color_FFFFFF,t_70#pic_center

完整代码见github: https://github.com/aIceCola/GradientColorsDemo

Android 绘制渐变色相关推荐

  1. android自定义渐变色圆环,Android实现光点模糊渐变的自旋转圆环特效

    本文实例为大家分享了Android实现光点模糊渐变的自旋转圆环效果,供大家参考,具体内容如下 项目中需要实现的效果图如下: 可以这个表盘看到中间部分都是没有什么难点的,主要是周围圆环的三种效果: 1. ...

  2. Android绘制流程

    一.前言 1.1.C++界面库 MFC.WTL.DuiLib.QT.Skia.OpenGL. Android里面的画图分为2D和3D两种: 2D是由Skia 来实现的,3D部分是由OpenGL实现的. ...

  3. android绘制高亮区域,实现高亮某行的RecyclerView效果

    最终效果 全部代码:github 方式有二 组合控件,RecyclerView + View 自定义RecyclerView 1中只需要控制View,但是不好封装. 2中需要重写RecyclerVie ...

  4. android绘制view的过程

    1 android绘制view的过程简单描述  简单描述可以解释为:计算大小(measure),布局坐标计算(layout),绘制到屏幕(draw):             下面看看每一步的动作到底 ...

  5. Android绘制(三):Path结合属性动画, 让图标动起来!

    Android绘制(一):来用shape绘出想要的图形吧! Android绘制(二):来用Path绘出想要的图形吧! 目录 效果图 前言 绘制 属性动画 最后 效果图 不废话, 直接上效果图, 感兴趣 ...

  6. android绘制矢量图_Android矢量可绘制

    android绘制矢量图 In this tutorial, we'll be discussing Android Vector Drawable. Furthermore, we'll be im ...

  7. Android绘制优化(二)布局优化

    相关文章 Android绘制优化(一)绘制性能分析 前言 我们知道一个界面的测量和绘制是通过递归来完成的,减少布局的层数就会减少测量和绘制的时间,从而性能就会得到提升.当然这只是布局优化的一方面,那么 ...

  8. android迷宫图像生成,Android - 绘制一个迷宫,以平滑的角色移动的画布

    我目前正在创建一个基于Tile的游戏,它基本上使用2套布尔值数组绘制一个迷宫,以确定每个墙壁需要绘制的位置.Android - 绘制一个迷宫,以平滑的角色移动的画布 我有这个所有的工作,因为它应该只有 ...

  9. Android 绘制电池电量图标(含充电状态)。

    Android 绘制电池电量图标在视频播放等全屏情况下有用到. 先在布局文件中写一个ImageView <?xml version="1.0" encoding=" ...

最新文章

  1. 【Qt】QCamera查询和设置摄像头的分辨率
  2. 如何在 Linux 中查看目录大小?
  3. 安卓中事件绑定的写法
  4. C++中 char *s 和 char s[] 的区别
  5. Android 7.1 bootchart触发后导致不断重启
  6. OAuth 2.0——授权服务开发笔记(二)
  7. 按键精灵 -获取窗口句柄
  8. Kafka:ZK+Kafka+Spark Streaming集群环境搭建(十九)ES6.2.2 安装Ik中文分词器
  9. Python 标准库 —— socket(网络编程)
  10. opencv4 图像特征匹配_【从零学习OpenCV 4】图像模板匹配
  11. C# Socket通信服务器编写
  12. 物理专业英语词汇(H-N)
  13. matlab 保存成csv,怎么将matlab中数据保存为csv或xls格式
  14. window.onload和DOMContentLoaded的区别
  15. Flutter实现google登陆(gmail)
  16. 为什么“家徒四壁”中的徒是仅仅,只有的意思?
  17. android 4 时间限制,Android触摸精灵
  18. C/C++ 机房预约系统
  19. 使用函数打印n*n的乘法口诀表
  20. spark 3.1.x支持(兼容)hive 1.2.x以及hadoop cdh版本的尝试

热门文章

  1. 当年做国际医学生实习的一点遗憾
  2. java对象与对象引用变量
  3. 前程无忧简历导出php,my.51job.com前程无忧个人服务中心
  4. 电脑防火墙未使用推荐的设置来保护计算机,防火墙无法使用推荐设置,
  5. 景深--摄影基础理论(1)
  6. Cesium 实战 - 最新版(1.104.0)通过异步方式初始化地球,加载影像以及高程图层
  7. 网吧看电影你们都用什么IT网站看网吧电影会员免费免VIP的那种
  8. wireshark数据包过滤
  9. matlab xpc target的论坛,一个Matlab关于XPC Target的问题
  10. pip安装报错ValueError: check_hostname requires server_hostname