重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
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
shape Android:shape=["rectangle" | "oval" | "line" | "ring"] 其中rectagle矩形,oval椭圆,line水平直线,ring环形
shape中子节点的常用属性:
gradient 渐变
Android:startColor 起始颜色
Android:endColor 结束颜色
Android:angle 渐变角度,0从左到右,90表示从下到上,数值为45的整数倍,默认为0;
Android:type 渐变的样式 liner线性渐变 radial环形渐变 sweep solid 填充
Android:color 填充的颜色
stroke 描边
Android:width 描边的宽度
Android:color 描边的颜色
Android:dashWidth 表示'-'横线的宽度
Android:dashGap 表示'-'横线之间的距离
corners 圆角
Android:radius 圆角的半径 值越大角越圆
Android:topRightRadius 右上圆角半径
Android:bottomLeftRadius 右下圆角角半径
Android:topLeftRadius 左上圆角半径
Android:bottomRightRadius 左下圆角半径
padding 填充
android:bottom="1.0dip" 底部填充
android:left="1.0dip" 左边填充
android:right="1.0dip" 右边填充
android:top="0.0dip" 上面填充
Selector
根据不同的选定状态来定义不同的现实效果 分为四大属性:
android:state_selected 是选中
android:state_focused 是获得焦点
android:state_pressed 是点击
android:state_enabled 是设置是否响应事件,指所有事件
android:state_window_focused 默认时的背景图片 引用位置:res/drawable/文件的名称.xml
使用的方法:
Java代码中:R.drawable.文件的名称 XML中:Android:background="@drawable/文件的名称"
示例:
?xml version="1.0" encoding="utf-8" ?
selector xmlns:Android=""
!-- 默认时的背景图片--
item Android:drawable="@drawable/pic1" /
!-- 没有焦点时的背景图片 --
item
Android:state_window_focused="false"
android:drawable="@drawable/pic_blue"
/
!-- 非触摸模式下获得焦点并单击时的背景图片 --
item
Android:state_focused="true"
android:state_pressed="true"
android:drawable= "@drawable/pic_red"
/
!-- 触摸模式下单击时的背景图片--
item
Android:state_focused="false"
Android:state_pressed="true"
Android:drawable="@drawable/pic_pink"
/
!--选中时的图片背景--
item
Android:state_selected="true"
android:drawable="@drawable/pic_orange"
/
!--获得焦点时的图片背景--
item
Android:state_focused="true"
Android:drawable="@drawable/pic_green"
/
/selector
layer-list(多个shape)
将多个图片或上面两种效果按照顺序层叠起来
示例:
?xml version="1.0" encoding="utf-8"?
layer-list xmlns:android=""
item
bitmap android:src="@drawable/android_red"
android:gravity="center" /
/item
item android:top="10dp" android:left="10dp"
bitmap android:src="@drawable/android_green"
android:gravity="center" /
/item
item android:top="20dp" android:left="20dp"
bitmap android:src="@drawable/android_blue"
android:gravity="center" /
/item
/layer-list
感觉很像多个drawable
三者可以结合使用
selector xmlns:android=""
item android:state_pressed="true"
layer-list
item android:bottom="8.0dip"
shape
solid android:color="#ffaaaaaa" /
/shape
/item
item
shape
corners android:bottomLeftRadius="4.0dip" android:bottomRightRadius="4.0dip" android:topLeftRadius="1.0dip" android:topRightRadius="1.0dip" /
solid android:color="#ffaaaaaa" /
padding android:bottom="1.0dip" android:left="1.0dip" android:right="1.0dip" android:top="0.0dip" /
/shape
/item
item
shape
corners android:bottomLeftRadius="3.0dip" android:bottomRightRadius="3.0dip" android:topLeftRadius="1.0dip" android:topRightRadius="1.0dip" /
solid android:color="@color/setting_item_bgcolor_press" /
/shape
/item
/layer-list
/item
item
layer-list
item android:bottom="8.0dip"
shape
solid android:color="#ffaaaaaa" /
/shape
/item
item
shape
corners android:bottomLeftRadius="4.0dip" android:bottomRightRadius="4.0dip" android:topLeftRadius="1.0dip" android:topRightRadius="1.0dip" /
solid android:color="#ffaaaaaa" /
padding android:bottom="1.0dip" android:left="1.0dip" android:right="1.0dip" android:top="0.0dip" /
/shape
/item
item
shape
corners android:bottomLeftRadius="3.0dip" android:bottomRightRadius="3.0dip" android:topLeftRadius="1.0dip" android:topRightRadius="1.0dip" /
solid android:color="@color/setting_item_bgcolor" /
/shape
/item
/layer-list
/item
/selector
在android.graphics中提供了有关Gradient字样的类,例如LinearGradient线性渐变、RadialGradient径向渐变和SweepGradient角度渐变三种,他们的基类为android.graphics.Shader。为了演示图像渐变效果,下面给出一个简单的实例。一、LinearGradient线性渐变在android平台中提供了两种重载方式来实例化该类分别为,他们的不同之处为参数中第一种方法可以用颜色数组,和位置来实现更细腻的过渡效果,比如颜色采样int[]colors数组中存放20种颜色,则渐变将会逐一处理。而第二种方法参数仅为起初颜色color0和最终颜色color1。LinearGradient(floatx0,floaty0,floatx1,floaty1,int[]colors,float[]positions,Shader.TileModetile)LinearGradient(floatx0,floaty0,floatx1,floaty1,intcolor0,intcolor1,Shader.TileModetile)使用实例如下:Paintp=newPaint();LinearGradientlg=newLinearGradient(0,0,100,100,Color.RED,Color.BLUE,Shader.TileMode.MIRROR);//参数一为渐变起初点坐标x位置,参数二为y轴位置,参数三和四分辨对应渐变终点,最后参数为平铺方式,这里设置为镜像刚才已经讲到Gradient是基于Shader类,所以我们通过Paint的setShader方法来设置这个渐变,代码如下:p.setShader(lg);canvas.drawCicle(0,0,200,p);//参数3为画圆的半径,类型为float型。二、RadialGradient镜像渐变有了上面的基础,我们一起来了解下径向渐变。和上面参数唯一不同的是,径向渐变第三个参数是半径,其他的和线性渐变相同。RadialGradient(floatx,floaty,floatradius,int[]colors,float[]positions,Shader.TileModetile)RadialGradient(floatx,floaty,floatradius,intcolor0,intcolor1,Shader.TileModetile)三、SweepGradient角度渐变对于一些3D立体效果的渐变可以尝试用角度渐变来完成一个圆锥形,相对来说比上面更简单,前两个参数为中心点,然后通过载入的颜色来平均的渐变渲染。SweepGradient(floatcx,floatcy,int[]colors,float[]positions)//对于最后一个参数SDK上的描述为MaybeNULL.Therelativepositionofeachcorrespondingcolorinthecolorsarray,beginningwith0andendingwith1.0.Ifthevaluesarenotmonotonic,thedrawingmayproduceunexpectedresults.IfpositionsisNULL,thenthecolorsareautomaticallyspacedevenly.,所以建议使用下面的重载方法,本方法一般为NULL即可。SweepGradient(floatcx,floatcy,intcolor0,intcolor1)到此,希望大家对图像特效处理有了一定的认识,了解这些对打好Android游戏开发的基础很有好处。转载
●使用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节点配置四周圆角的半径。
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