扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
1.在res/drawable/里新建XML文件(background_color.xml)
成都创新互联从2013年开始,是专业互联网技术服务公司,拥有项目网站设计、网站制作网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元宁波做网站,已为上家服务,为宁波各地企业和个人服务,联系电话:13518219792
内容:
?xml version="1.0" encoding="UTF-8"?
shape xmlns:android=""
gradient
android:startColor="#000000"
android:endColor="#FFFFFF"
android:angle="90"
/
/shape
备:angle(角度)的值只可为:45 90 135 180等45的倍数
2.在res/layout里使用时:
颜色设置段:Android:src="@drawable/background_color
画图的话
LinearGradient lg = new LinearGradient(statrX, statrY, statrX,
stopY, new int[] { Color.rgb(5, 254, 4),
Color.rgb(189, 254, 0), Color.rgb(255, 142, 4),
Color.rgb(248, 0, 1), Color.rgb(148, 0, 78),
Color.rgb(121, 2, 43) }, new float[] { 0, 0.2f, 0.4f,
0.6f, 0.8f, 1.0f }, TileMode.MIRROR);
//这个是y轴上的变化从绿色到橘黄色到大红色到黑红色。。。
//float数组相当于把Y轴平分为5段
paint.setShader(lg);
线程的话
Handler handler=new Handler(){
public void handleMessage(android.os.Message msg) {
switch (msg.what) {
case 100:
textView.setTextColor(colors[msg.arg1]);//颜色的数组,和下面的for的次数要等
break;
default:
break;
}
};
};
private void huatu() {
// TODO Auto-generated method stub
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
try {
for (int i = 0; i 5; i++) {
Thread.sleep(200);
Message message=new Message();
message.what=100;
message.arg1=i;
handler.sendMessage(message);
}
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}).start();
}
LinearGradient 和 SweepGradient,这次讲解RadialGradient;
RadialGradient被称为放射渐变,就是从中心向外圆形渐变。
两个构造函数,第一个构造函数可以实现两种颜色的渐变,第二个构造函数可以实现多个颜色的渐变。
参数说明:
centerX ,centerY:shader的中心坐标,开始渐变的坐标。
radius:渐变的半径,
centerColor,edgeColor:中心点渐变颜色,边界的渐变颜色,
colors:渐变颜色数组,
stoops:渐变位置数组,类似扫描渐变的positions数组,取值[0,1],中心点为0,半径到达位置为1.0f,
tileMode:shader未覆盖以外的填充模式。
构造函数:
RadialGradient(float centerX, float centerY, float radius, @ColorInt int centerColor, @ColorInt int edgeColor, @NonNull TileMode tileMode);
提供中心坐标,半径,颜色值,TileMode
Stops数组取值为[0-1],一般为从小到大,表示每个位置对应的颜色值,如果stops不为null,colors必须和stops一一对应,否则可能导致崩溃,如果stops为null,各颜色从中心到边界线性渐变。
stops数组为null,四种颜色线性渐变:
stops数组不为null:
如果数组多余颜色个数:
大致做个小例子,如果需要线上使用需要考虑很多问题,类似ondraw最好不要声明对象等:
替换为多颜色 private int[] colors = {Color.YELLOW, Color.RED, Color.BLUE, Color.GREEN};
android绘图之Paint(1)
android绘图之Canvas基础(2)
Android绘图之Path(3)
Android绘图之drawText绘制文本相关(4)
Android绘图之Canvas概念理解(5)
Android绘图之Canvas变换(6)
Android绘图之Canvas状态保存和恢复(7)
Android绘图之PathEffect (8)
Android绘图之LinearGradient线性渐变(9)
Android绘图之SweepGradient(10)
Android绘图之RadialGradient 放射渐变(11)
Android绘制之BitmapShader(12)
Android绘图之ComposeShader,PorterDuff.mode及Xfermode(13)
Android绘图之drawText,getTextBounds,measureText,FontMetrics,基线(14)
Android绘图之贝塞尔曲线简介(15)
Android绘图之PathMeasure(16)
Android 动态修改渐变 GradientDrawable
android 颜色渐变是指通知xml或者java代码,设置相关参数,是界面的某个指定的视图显示成从开始位置的颜色,逐渐过度到结尾位置的颜色的技术。
android颜色渐变的分类有:
LinearGradient线性渐变
RadialGradient镜像渐变
SweepGradient角度渐变
一、LinearGradient线性渐变
顾名思义,是只颜色在一个直线方向上逐渐改变。
文件代码:
?xml version="1.0" encoding="utf-8"?
shape xmlns:android=""
android:shape="oval"
gradient
android:endColor="#0000FF"
android:startColor="#FF0000"
android:type="linear" /
/shape
效果:
二、RadialGradient镜像渐变
镜像渐变就是楼主问的问题了:只要将type设置为oval,然后增加
android:gradientRadius
属性。
楼主特殊要求是圆形的话,需要在shape里面添加
android:shape="oval"
文件代码:
?xml version="1.0" encoding="utf-8"?
shape xmlns:android=""
android:shape="oval"
gradient
android:endColor="#0000FF"
android:gradientRadius="100%p"
android:startColor="#FF0000"
android:type="linear" /
/shape
效果:
三、 SweepGradient角度渐变
是指以中心点为射线的一个断点,顺时针旋转所扫过的区域,颜色逐渐改变的一种渐变方式
?xml version="1.0" encoding="utf-8"?
shape xmlns:android=""
gradient
android:endColor="#0000FF"
android:startColor="#FF0000"
android:type="sweep" /
/shape
效果图:
●使用XML的方式为背景添加渐变效果
1、在res/drawable文件夹里添加一个jbshape.xml文件,然后写入如下代码:
?xml version="1.0" encoding="utf-8"?
gradient
android:angle="270"
android:centerColor="#00FFFF"
android:centerX="0.5"
android:centerY="0.5"
android:endColor="#666666"
android:startColor="#0099FF" /
padding
android:bottom="7dp"
android:left="7dp"
android:right="7dp"
android:top="7dp" /
corners android:radius="4dp" /
/shape
说明:
(1)shape节点配置的是图形的形式,主要包括方形、圆形等,上边代码为方形。
(2)gradient节点主要配置起点颜色、终点颜色及中间点的颜色、坐标、渐变效果(0,90,180从左到右渐变,270从上到下渐变)默认从左到右。
(3)corners节点配置四周圆角的半径。
1.在res/drawable/里新建XML文件(background_color.xml)
内容:
?xml version="1.0" encoding="UTF-8"?
shape xmlns:android=""
gradient
android:startColor="#000000"
android:endColor="#FFFFFF"
android:angle="90"
/
/shape
备:angle(角度)的值只可为:45 90 135 180等45的倍数
2.在res/layout里使用时:
颜色设置段:Android:src="@drawable/background_color
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流