全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Android编程实现自定义渐变颜色效果详解

本文实例讲述了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中的颜色表示的详解  # 的是  # 他们的  # 镜像  # 种方法  # 你就可以  # 进阶  # 操作技巧  # 来了  # 相关内容  # 让我们  # 将会  # 平铺  # 中心点  # 你在  # 两种  # 可以用  # 你知道  # 其他的  # 感兴趣 


相关文章: 盘锦网站制作公司,盘锦大洼有多少5G网站?  外贸公司网站制作,外贸网站建设一般有哪些步骤?  如何通过.red域名打造高辨识度品牌网站?  如何快速搭建自助建站会员专属系统?  c++怎么编写动态链接库dll_c++ __declspec(dllexport)导出与调用【方法】  在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?  建站之星在线版空间:自助建站+智能模板一键生成方案  杭州银行网站设计制作流程,杭州银行怎么开通认证方式?  电商网站制作价格怎么算,网上拍卖流程以及规则?  头像制作网站在线制作软件,dw网页背景图像怎么设置?  如何在Mac上搭建Golang开发环境_使用Homebrew安装和管理Go版本  香港服务器租用每月最低只需15元?  如何高效利用200m空间完成建站?  香港服务器网站推广:SEO优化与外贸独立站搭建策略  合肥做个网站多少钱,合肥本地有没有比较靠谱的交友平台?  网站按钮制作软件,如何实现网页中按钮的自动点击?  制作证书网站有哪些,全国城建培训中心证书查询官网?  建站主机类型有哪些?如何正确选型  小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?  网站网页制作专业公司,怎样制作自己的网页?  c# await 一个已经完成的Task会发生什么  建站主机选择指南:服务器配置与SEO优化实战技巧  网站制作价目表怎么做,珍爱网婚介费用多少?  香港服务器网站生成指南:免费资源整合与高速稳定配置方案  网站制作员失业,怎样查看自己网站的注册者?  建站之星如何优化SEO以实现高效排名?  义乌企业网站制作公司,请问义乌比较好的批发小商品的网站是什么?  如何在宝塔面板创建新站点?  已有域名能否直接搭建网站?  专业网站制作企业网站,如何制作一个企业网站,建设网站的基本步骤有哪些?  c# 服务器GC和工作站GC的区别和设置  极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?  如何续费美橙建站之星域名及服务?  定制建站是什么?如何实现个性化需求?  高防服务器如何保障网站安全无虞?  常州自助建站工具推荐:低成本搭建与模板选择技巧  建站之星北京办公室:智能建站系统与小程序生成方案解析  学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?  如何通过云梦建站系统实现SEO快速优化?  如何用西部建站助手快速创建专业网站?  建站之星如何快速生成多端适配网站?  C++时间戳转换成日期时间的步骤和示例代码  网站制作网站,深圳做网站哪家比较好?  做企业网站制作流程,企业网站制作基本流程有哪些?  如何通过PHP快速构建高效问答网站功能?  高防服务器租用首荐平台,企业级优惠套餐快速部署  建站之星伪静态规则如何正确配置?  如何在Golang中使用replace替换模块_指定本地或远程路径  成都品牌网站制作公司,成都营业执照年报网上怎么办理?  购物网站制作公司有哪些,哪个购物网站比较好? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。