Android 绘制渐变色
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 绘制渐变色相关推荐
- android自定义渐变色圆环,Android实现光点模糊渐变的自旋转圆环特效
本文实例为大家分享了Android实现光点模糊渐变的自旋转圆环效果,供大家参考,具体内容如下 项目中需要实现的效果图如下: 可以这个表盘看到中间部分都是没有什么难点的,主要是周围圆环的三种效果: 1. ...
- Android绘制流程
一.前言 1.1.C++界面库 MFC.WTL.DuiLib.QT.Skia.OpenGL. Android里面的画图分为2D和3D两种: 2D是由Skia 来实现的,3D部分是由OpenGL实现的. ...
- android绘制高亮区域,实现高亮某行的RecyclerView效果
最终效果 全部代码:github 方式有二 组合控件,RecyclerView + View 自定义RecyclerView 1中只需要控制View,但是不好封装. 2中需要重写RecyclerVie ...
- android绘制view的过程
1 android绘制view的过程简单描述 简单描述可以解释为:计算大小(measure),布局坐标计算(layout),绘制到屏幕(draw): 下面看看每一步的动作到底 ...
- Android绘制(三):Path结合属性动画, 让图标动起来!
Android绘制(一):来用shape绘出想要的图形吧! Android绘制(二):来用Path绘出想要的图形吧! 目录 效果图 前言 绘制 属性动画 最后 效果图 不废话, 直接上效果图, 感兴趣 ...
- android绘制矢量图_Android矢量可绘制
android绘制矢量图 In this tutorial, we'll be discussing Android Vector Drawable. Furthermore, we'll be im ...
- Android绘制优化(二)布局优化
相关文章 Android绘制优化(一)绘制性能分析 前言 我们知道一个界面的测量和绘制是通过递归来完成的,减少布局的层数就会减少测量和绘制的时间,从而性能就会得到提升.当然这只是布局优化的一方面,那么 ...
- android迷宫图像生成,Android - 绘制一个迷宫,以平滑的角色移动的画布
我目前正在创建一个基于Tile的游戏,它基本上使用2套布尔值数组绘制一个迷宫,以确定每个墙壁需要绘制的位置.Android - 绘制一个迷宫,以平滑的角色移动的画布 我有这个所有的工作,因为它应该只有 ...
- Android 绘制电池电量图标(含充电状态)。
Android 绘制电池电量图标在视频播放等全屏情况下有用到. 先在布局文件中写一个ImageView <?xml version="1.0" encoding=" ...
最新文章
- 【Qt】QCamera查询和设置摄像头的分辨率
- 如何在 Linux 中查看目录大小?
- 安卓中事件绑定的写法
- C++中 char *s 和 char s[] 的区别
- Android 7.1 bootchart触发后导致不断重启
- OAuth 2.0——授权服务开发笔记(二)
- 按键精灵 -获取窗口句柄
- Kafka:ZK+Kafka+Spark Streaming集群环境搭建(十九)ES6.2.2 安装Ik中文分词器
- Python 标准库 —— socket(网络编程)
- opencv4 图像特征匹配_【从零学习OpenCV 4】图像模板匹配
- C# Socket通信服务器编写
- 物理专业英语词汇(H-N)
- matlab 保存成csv,怎么将matlab中数据保存为csv或xls格式
- window.onload和DOMContentLoaded的区别
- Flutter实现google登陆(gmail)
- 为什么“家徒四壁”中的徒是仅仅,只有的意思?
- android 4 时间限制,Android触摸精灵
- C/C++ 机房预约系统
- 使用函数打印n*n的乘法口诀表
- spark 3.1.x支持(兼容)hive 1.2.x以及hadoop cdh版本的尝试
热门文章
- 当年做国际医学生实习的一点遗憾
- java对象与对象引用变量
- 前程无忧简历导出php,my.51job.com前程无忧个人服务中心
- 电脑防火墙未使用推荐的设置来保护计算机,防火墙无法使用推荐设置,
- 景深--摄影基础理论(1)
- Cesium 实战 - 最新版(1.104.0)通过异步方式初始化地球,加载影像以及高程图层
- 网吧看电影你们都用什么IT网站看网吧电影会员免费免VIP的那种
- wireshark数据包过滤
- matlab xpc target的论坛,一个Matlab关于XPC Target的问题
- pip安装报错ValueError: check_hostname requires server_hostname