为什么80%的码农都做不了架构师?>>>   

GradientDrawable 支持使用渐变色来绘制图形,通常可以用作Button或是背景图形。

GradientDrawable允许指定绘制图形的种类:LINE,OVAL,RECTANGLE或是RING ,颜色渐变支持LINEAR_GRADIENT,RADIAL_GRADIENT 和 SWEEP_GRADIENT。

其中在使用RECTANGLE(矩形),还允许设置矩形四个角为圆角,每个圆角的半径可以分别设置:

public void setCornerRadii(float[] radii)

radii 数组分别指定四个圆角的半径,每个角可以指定[X_Radius,Y_Radius],四个圆角的顺序为左上,右上,右下,左下。如果X_Radius,Y_Radius为0表示还是直角。

颜色渐变的方向由GradientDrawable.Orientation定义可以有如下八种:

看一下GradientDrawable的构造函数:

public GradientDrawable(GradientDrawable.Orientation orientation, int[] colors)

orientation指定了渐变的方向(以上八种),渐变的颜色由colors数组指定,数组中的每个值为一个颜色。

本例定义一个渐变方向从组左上到右下,渐变颜色为红,绿,蓝三色:

1 mDrawable = new GradientDrawable(GradientDrawable.Orientation.TL_BR,
2  new int[] { 0xFFFF0000, 0xFF00FF00,
3  0xFF0000FF });

分别使用Liner,Radial 和Sweep三种渐变模式,并配合指定矩形四个角圆角半径,显示GradientDrawable的不同用法:

1 mDrawable.setGradientType(GradientDrawable.LINEAR_GRADIENT);
2 setCornerRadii(mDrawable, r, r, 0, 0);
3 mDrawable.draw(canvas);
4 ...
5 mDrawable.setGradientType(GradientDrawable.RADIAL_GRADIENT);
6 setCornerRadii(mDrawable, 0, 0, r, r);
7 mDrawable.draw(canvas);
8 ...
9 mDrawable.setGradientType(GradientDrawable.SWEEP_GRADIENT);
10 setCornerRadii(mDrawable, 0, r, r, 0);
11 mDrawable.draw(canvas);
12 ...
13 mDrawable.setGradientType(GradientDrawable.LINEAR_GRADIENT);
14 setCornerRadii(mDrawable, r, 0, 0, r);
15 mDrawable.draw(canvas);
16 ...
17 mDrawable.setGradientType(GradientDrawable.RADIAL_GRADIENT);
18 setCornerRadii(mDrawable, r, 0, r, 0);
19 mDrawable.draw(canvas);
20 ...
21 mDrawable.setGradientType(GradientDrawable.SWEEP_GRADIENT);
22 setCornerRadii(mDrawable, 0, r, 0, r);
23 mDrawable.draw(canvas);
24 ...
25 static void setCornerRadii(GradientDrawable drawable,
26  float r0, float r1, float r2, float r3) {
27  drawable.setCornerRadii(new float[] { r0, r0, r1, r1,
28  r2, r2, r3, r3 });
29 }

转载于:https://my.oschina.net/u/857882/blog/90651

GradientDrawable相关推荐

  1. (转载)Android GradientDrawable(shape标签定义) 静态使用和动态使用(圆角,渐变实现)

    最近被吐槽界面太丑,还是很尴尬的,全公司就一个UI设计师,所以很多事情还是不忍直视,一个同事问我,背景可不可以使用渐变的感觉,然后我就有种突然感觉眼前一亮的感觉.还真的没有做过这方面的东西,单纯使用渐 ...

  2. 用了GradientDrawable后,当点击控件时,控件大小发生变化

    android新手:发现一个很奇怪的问题,用了GradientDrawable后,当点击控件时,程序自动使我的一些控件大小保持一致,为什么呢,我就是不想它们保持一致啊 改了好久好久:GradientD ...

  3. Android开发 GradientDrawable详解

    Android开发 GradientDrawable详解 前言 GradientDrawable类似与Xml布局里的shape,常用在一些自己封装的对话框控件的背景或者其他View中,优势是不需要你在 ...

  4. android 动态渐变,Android 动态修改渐变 GradientDrawable

    Android 绘图学习 1GradientDrawable 简介 以前的文章写过 Android中渐变实现方式 前面的文章 讲解了如何实现渐变类似LinearGradient,SweepGradie ...

  5. android 背景切换动画效果代码,关于Android shape gradient背景渐变

    百度后,发现渐变色不仅可以根据xml来实现,也可以用java代码来实现,由于目前没有那么多时间,只记录xml实现的方法:以后在记录Java实现的代码. 通过Shape gradient标签来实现 首先 ...

  6. android xml opacity,Android Drawable详解

    前言 Drawable就是一个可画的对象,表示一种可以在Canvas上进行绘制的抽象的概念,其可能是一张(BitmapDrawable),也可能是一个图形(ShapeDrawable),还有可能是一个 ...

  7. 一种巧妙的drawable.xml替代方案

    如何维护(替换)drawable xml是android开发中一个老生常谈的话题.按照标准的Android布局开发模式,我们不得不为各种UI效果新建不同的xml文件进行描述,哪怕是简单的一个圆角.随着 ...

  8. Android之自定义瀑布流式的标签列表

    转载请标明出处: http://blog.csdn.net/hai_qing_xu_kong/article/details/50965588 本文出自:[顾林海的博客] ##前言 由于一些原因,马上 ...

  9. Android移动开发之【Android实战项目】DAY9-LineChart的使用

    1.添加依赖 在project的build.gradle文件配置添加一下内容 allprojects {repositories {maven { url "https://jitpack. ...

  10. Android 10 中有关限制非 SDK 接口的更新

    Android 10 中有关限制非 SDK 接口的更新 目录 浅灰和深灰列表的命名发生变化 非 SDK 接口的代码注释 在 Android 10 中授予对非 SDK 接口的访问权限 Android 1 ...

最新文章

  1. 0-1背包 一维数组为什么逆序枚举
  2. 业界 |「多巴胺」来袭!谷歌推出新型强化学习框架Dopamine
  3. 华硕k555l拆光驱_2L大小的迷你电脑用起来有什么区别?华硕VC66
  4. c语言 bmp白底黑字,用c语言把bmp格式的彩色图片转换成黑白的
  5. linux sed删除指定行_shell三剑客之sed!
  6. 企业应用的Ant模组编译环境
  7. 内蒙古大学计算机组成原理难吗,内蒙古大学计算机组成原理期末练习0.doc
  8. python文件操作的方法_python文件操作的方法介绍
  9. windows whistler系统安装
  10. moss2007 是什么_MOSS 2007站点权限
  11. Java-学校项目3---类与对象
  12. 关于echart 饼图显示不出来 挖坑总结
  13. 苹果发布iOS9.1 Beta 3:新增壁纸和表情
  14. Maya---骨骼的创建
  15. R12 Customer新建或更新时的工作过程 - DQM Serial Sync Index Program
  16. 设计一可控同步四进制可逆计数器, 其由输入X1, X2控制, 用D触发器和74151及必要的门电路实现
  17. 在科学史上,“革命”意味着什么?
  18. pyecharts折线图上symbol(小圆圈)颜色的修改方法
  19. win10玩cf不能全屏_神奇的工作室ghost 不能启动
  20. 【毕设项目问题】IDEA打开springboot项目,启动项上有红色叉叉

热门文章

  1. 一个用于分布式DNN训练加速的通用通信调度器
  2. WPF XMAL获取元素的父元素,子元素
  3. swift中的category,扩展
  4. Python 基礎 - 函數介紹
  5. Java的8大排序的基本思想及实例解读
  6. 程序员揭秘 一些鲜为人知的编程真相
  7. C#.NET软件项目中程序开发外包经验分享【从接包者转变为发包者】
  8. 基于vue2.0+svg 拓扑组件
  9. Xcode的插件的路径
  10. selenium+testng+reprotng+ant配置