Android编程实现自定义渐变颜色效果详解
发布时间 - 2026-01-11 02:36:47 点击率:次本文实例讲述了Android编程实现自定义渐变颜色效果。分享给大家供大家参考,具体如下:

你是否已经厌恶了纯色的背景呢?那好,Android提供给程序员自定义渐变颜色的接口,让我们的界面炫起来吧。
xml定义渐变颜色
首先,你在drawable目录下写一个xml,代码如下
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<gradient
android:angle="270"
android:endColor="#000000"
android:startColor="#ffffff" />
<corners
android:bottomLeftRadius="5dip"
android:bottomRightRadius="5dip"
android:topLeftRadius="5dip"
android:topRightRadius="5dip" />
</shape>
shape 节点配置的是图形的形式,主要包括方形、圆形等,上边代码为方形,
gradient 节点主要配置起点颜色、终点颜色及中间点的颜色、坐标、渐变效果(0,90,180从左到右渐变,270从上到下渐变)默认从左到右
padding 节点主要配置上下左右的间距
corners 节点配置四周园脚的半径
然后,你就可以随意在代码中或者xml布局中使用它了。
如此简单的配置,只要你知道颜色的rgb值,你就可以成为颜色达人。
代码定义渐变颜色
Android平台下实现渐变效果。在android.graphics中我们可以找到有关Gradient字样的类,比如LinearGradient 线性渐变、RadialGradient径向渐变和 角度渐变SweepGradient 三种,他们的基类为android.graphics.Shader。为了显示出效果,使用一个简单的例子来说明。
一、LinearGradient线性渐变
在android平台中提供了两种重载方式来实例化该类分别为,他们的不同之处为参数中第一种方法可以用颜色数组,和位置来实现更细腻的过渡效果,比如颜色采样int[] colors数组中存放20种颜色,则渐变将会逐一处理。而第二种方法参数仅为起初颜色color0和最终颜色color1。
LinearGradient(float x0, float y0, float x1, float y1, int[] colors, float[] positions, Shader.TileMode tile) LinearGradient(float x0, float y0, float x1, float y1, int color0, int color1, Shader.TileMode tile)
使用实例如下:
Paint p=new Paint(); LinearGradient lg=new LinearGradient(0,0,100,100,Color.RED,Color.BLUE,Shader.TileMode.MIRROR);
参数一为渐变起初点坐标x位置,参数二为y轴位置,参数三和四分辨对应渐变终点,最后参数为平铺方式,这里设置为镜像.
刚才Android开发网已经讲到Gradient是基于Shader类,所以我们通过Paint的setShader方法来设置这个渐变,代码如下:
p.setShader(lg); canvas.drawCicle(0,0,200,p); //参数3为画圆的半径,类型为float型。
二、 RadialGradient镜像渐变
有了上面的基础,我们一起来了解下径向渐变。和上面参数唯一不同的是,径向渐变第三个参数是半径,其他的和线性渐变相同。
RadialGradient(float x, float y, float radius, int[] colors, float[] positions, Shader.TileMode tile) RadialGradient(float x, float y, float radius, int color0, int color1, Shader.TileMode tile)
三、 SweepGradient角度渐变
对于一些3D立体效果的渐变可以尝试用角度渐变来完成一个圆锥形,相对来说比上面更简单,前两个参数为中心点,然后通过载入的颜色来平均的渐变渲染。
SweepGradient(float cx, float cy, int[] colors, float[] positions)
对于最后一个参数SDK上的描述为:
May be NULL. The relative position of each corresponding color in the colors array, beginning with 0 and ending with 1.0. If the values are not monotonic, the drawing may produce unexpected results. If positions is NULL, then the colors are automatically spaced evenly.
所以Android123建议使用下面的重载方法,本方法一般为NULL即可。
SweepGradient(float cx, float cy, int color0, int color1)
或者直接创建一个drawable:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE); //设置没标题
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN , //全屏
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.login);//登录界面
GradientDrawable grad = new GradientDrawable(//渐变色
Orientation.TOP_BOTTOM,
new int[]{Color.BLACK, Color.WHITE}
);
getWindow().setBackgroundDrawable(grad);//设置渐变颜色
}
更多关于Android相关内容感兴趣的读者可查看本站专题:《Android开发入门与进阶教程》、《Android布局layout技巧总结》、《Android视图View技巧总结》、《Android编程之activity操作技巧总结》、《Android操作json格式数据技巧总结》、《Android资源操作技巧汇总》及《Android控件用法总结》
希望本文所述对大家Android程序设计有所帮助。
# Android
# 自定义
# 渐变
# 颜色
# Android 设置颜色的方法总结
# Android实现修改状态栏背景、字体和图标颜色的方法
# Android 改变图标原有颜色和搜索框的实例代码
# Android如何自定义EditText光标与下划线颜色详解
# Android修改DatePicker字体颜色及分割线颜色详细介绍
# 修改Android FloatingActionButton的title的文字颜色及背景颜色实例详解
# Android编程之ProgressBar圆形进度条颜色设置方法
# Android中的颜色表示的详解
# 的是
# 他们的
# 镜像
# 种方法
# 你就可以
# 进阶
# 操作技巧
# 来了
# 相关内容
# 让我们
# 将会
# 平铺
# 中心点
# 你在
# 两种
# 可以用
# 你知道
# 其他的
# 感兴趣
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel怎么为数据库表字段添加索引以优化查询
JavaScript Ajax实现异步通信
nodejs redis 发布订阅机制封装实现方法及实例代码
Laravel如何使用Eloquent ORM进行数据库操作?(CRUD示例)
通义万相免费版怎么用_通义万相免费版使用方法详细指南【教程】
Laravel如何记录日志_Laravel Logging系统配置与自定义日志通道
Laravel如何使用集合(Collections)进行数据处理_Laravel Collection常用方法与技巧
如何快速打造个性化非模板自助建站?
Laravel如何使用Spatie Media Library_Laravel图片上传管理与缩略图生成【步骤】
专业商城网站制作公司有哪些,pi商城官网是哪个?
如何在IIS中新建站点并配置端口与IP地址?
Laravel表单请求验证类怎么用_Laravel Form Request分离验证逻辑教程
iOS正则表达式验证手机号、邮箱、身份证号等
Python制作简易注册登录系统
在线制作视频网站免费,都有哪些好的动漫网站?
Laravel Eloquent性能优化技巧_Laravel N+1查询问题解决
CSS3怎么给轮播图加过渡动画_transition加transform实现【技巧】
Win11怎么关闭资讯和兴趣_Windows11任务栏设置隐藏小组件
如何在企业微信快速生成手机电脑官网?
七夕网站制作视频,七夕大促活动怎么报名?
如何快速登录WAP自助建站平台?
bing浏览器学术搜索入口_bing学术文献检索地址
Laravel如何与Inertia.js和Vue/React构建现代单页应用
如何在 Telegram Web View(iOS)中防止键盘遮挡底部输入框
Python并发异常传播_错误处理解析【教程】
如何制作一个表白网站视频,关于勇敢表白的小标题?
Laravel如何使用模型观察者?(Observer代码示例)
laravel怎么为应用开启和关闭维护模式_laravel应用维护模式开启与关闭方法
Laravel如何实现图片防盗链功能_Laravel中间件验证Referer来源请求【方案】
如何注册花生壳免费域名并搭建个人网站?
如何用JavaScript实现文本编辑器_光标和选区怎么处理
Laravel如何实现全文搜索_Laravel Scout集成Algolia或Meilisearch教程
英语简历制作免费网站推荐,如何将简历翻译成英文?
Laravel如何实现数据导出到CSV文件_Laravel原生流式输出大数据量CSV【方案】
5种Android数据存储方式汇总
北京的网站制作公司有哪些,哪个视频网站最好?
北京网站制作的公司有哪些,北京白云观官方网站?
新三国志曹操传主线渭水交兵攻略
为什么php本地部署后css不生效_静态资源加载失败修复技巧【技巧】
实现点击下箭头变上箭头来回切换的两种方法【推荐】
INTERNET浏览器怎样恢复关闭标签页_INTERNET浏览器标签恢复快捷键与方法【指南】
Laravel怎么配置S3云存储驱动_Laravel集成阿里云OSS或AWS S3存储桶【教程】
Win11怎么修改DNS服务器 Win11设置DNS加速网络【指南】
如何在VPS电脑上快速搭建网站?
iOS验证手机号的正则表达式
Win11怎么恢复误删照片_Win11数据恢复工具使用【推荐】
PHP 500报错的快速解决方法
微信小程序 闭包写法详细介绍
如何在万网开始建站?分步指南解析
如何在Ubuntu系统下快速搭建WordPress个人网站?
上一篇:macos怎么截图
上一篇:macos怎么截图

