为什么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,
|
分别使用Liner,Radial 和Sweep三种渐变模式,并配合指定矩形四个角圆角半径,显示GradientDrawable的不同用法:
1
|
mDrawable.setGradientType(GradientDrawable.LINEAR_GRADIENT);
|
2
|
setCornerRadii(mDrawable, r, r, 0, 0);
|
3
|
mDrawable.draw(canvas);
|
5
|
mDrawable.setGradientType(GradientDrawable.RADIAL_GRADIENT);
|
6
|
setCornerRadii(mDrawable, 0, 0, r, r);
|
7
|
mDrawable.draw(canvas);
|
9
|
mDrawable.setGradientType(GradientDrawable.SWEEP_GRADIENT);
|
10
|
setCornerRadii(mDrawable, 0, r, r, 0);
|
11
|
mDrawable.draw(canvas);
|
13
|
mDrawable.setGradientType(GradientDrawable.LINEAR_GRADIENT);
|
14
|
setCornerRadii(mDrawable, r, 0, 0, r);
|
15
|
mDrawable.draw(canvas);
|
17
|
mDrawable.setGradientType(GradientDrawable.RADIAL_GRADIENT);
|
18
|
setCornerRadii(mDrawable, r, 0, r, 0);
|
19
|
mDrawable.draw(canvas);
|
21
|
mDrawable.setGradientType(GradientDrawable.SWEEP_GRADIENT);
|
22
|
setCornerRadii(mDrawable, 0, r, 0, r);
|
23
|
mDrawable.draw(canvas);
|
25
|
static void setCornerRadii(GradientDrawable drawable,
|
26
|
float r0, float r1, float r2, float r3) {
|
27
|
drawable.setCornerRadii(new float[] { r0, r0, r1, r1,
|
- (转载)Android GradientDrawable(shape标签定义) 静态使用和动态使用(圆角,渐变实现)
最近被吐槽界面太丑,还是很尴尬的,全公司就一个UI设计师,所以很多事情还是不忍直视,一个同事问我,背景可不可以使用渐变的感觉,然后我就有种突然感觉眼前一亮的感觉.还真的没有做过这方面的东西,单纯使用渐 ...
- 用了GradientDrawable后,当点击控件时,控件大小发生变化
android新手:发现一个很奇怪的问题,用了GradientDrawable后,当点击控件时,程序自动使我的一些控件大小保持一致,为什么呢,我就是不想它们保持一致啊 改了好久好久:GradientD ...
- Android开发 GradientDrawable详解
Android开发 GradientDrawable详解 前言 GradientDrawable类似与Xml布局里的shape,常用在一些自己封装的对话框控件的背景或者其他View中,优势是不需要你在 ...
- android 动态渐变,Android 动态修改渐变 GradientDrawable
Android 绘图学习 1GradientDrawable 简介 以前的文章写过 Android中渐变实现方式 前面的文章 讲解了如何实现渐变类似LinearGradient,SweepGradie ...
- android 背景切换动画效果代码,关于Android shape gradient背景渐变
百度后,发现渐变色不仅可以根据xml来实现,也可以用java代码来实现,由于目前没有那么多时间,只记录xml实现的方法:以后在记录Java实现的代码. 通过Shape gradient标签来实现 首先 ...
- android xml opacity,Android Drawable详解
前言 Drawable就是一个可画的对象,表示一种可以在Canvas上进行绘制的抽象的概念,其可能是一张(BitmapDrawable),也可能是一个图形(ShapeDrawable),还有可能是一个 ...
- 一种巧妙的drawable.xml替代方案
如何维护(替换)drawable xml是android开发中一个老生常谈的话题.按照标准的Android布局开发模式,我们不得不为各种UI效果新建不同的xml文件进行描述,哪怕是简单的一个圆角.随着 ...
- Android之自定义瀑布流式的标签列表
转载请标明出处: http://blog.csdn.net/hai_qing_xu_kong/article/details/50965588 本文出自:[顾林海的博客] ##前言 由于一些原因,马上 ...
- Android移动开发之【Android实战项目】DAY9-LineChart的使用
1.添加依赖 在project的build.gradle文件配置添加一下内容 allprojects {repositories {maven { url "https://jitpack. ...
- Android 10 中有关限制非 SDK 接口的更新
Android 10 中有关限制非 SDK 接口的更新 目录 浅灰和深灰列表的命名发生变化 非 SDK 接口的代码注释 在 Android 10 中授予对非 SDK 接口的访问权限 Android 1 ...