渐变在使用自定义的XML,<gradient> </gradient> 也可以实现,下边要记录的是使用android提供的API完成的

一 、阴影

阴影在开发中一般使用与文字和图形,在绘图中又一个叫layer的层的概念,默认情况下,一般绘制都在叫main layer层上,当然,也可以绘制在新建的layer层上,实际上阴影就是在main layer层下面添加一个阴影层(shader layer) 层,可以为阴影添加模糊程度、偏移量、阴影的颜色等,
在paint中,setShadowLayer()方法

方法名

作用

setShadowLayer(float radius, float dx, float dy,int shadowColor)

radius 阴影的半径,dx x 方向的编译,shadowColor 阴影的颜色

阴影layer显示阴影是shader layer 两种类型

方法名

作用

View.LAYER_TYPE_SOFTWARE

阴影只能在这个环境下工作

View.LAYER_TYPE_HARDWARE

默认

调用View类中的setLayerType(int layerType,Paint paint) 为paint对象指定层的类型,

/** 
 * Created by mr.kong on 2017/8/21. 
 */class ShaderView : View {
private var mPaint: Paint? = null
constructor(context: Context) : this(context,null) {}

constructor(context: Context, attrs: AttributeSet?) : this(context, attrs,0) {}

constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr) {
    init()
}

private fun init() {
    mPaint = Paint(Paint.ANTI_ALIAS_FLAG) //抗锯齿
    mPaint?.textSize = 100F

}

override fun onDraw(canvas: Canvas?) {
    super.onDraw(canvas)
    this.setLayerType(View.LAYER_TYPE_SOFTWARE,mPaint)
    /**
     * 定义的是一个半径为10,x轴和y轴偏移都为1 的红色阴影
     */
    mPaint?.setShadowLayer(10F,1F,1F,Color.RED)
    canvas?.drawText("我是红色发光效果",100F,100F,mPaint)
    mPaint?.setShadowLayer(10F,5F,5F,Color.BLUE)
    canvas?.drawText("绘图技术",100F,220F,mPaint)
}
private var mPaint: Paint? = null
constructor(context: Context) : this(context,null) {}

constructor(context: Context, attrs: AttributeSet?) : this(context, attrs,0) {}

constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr) {
    init()
}

private fun init() {
    mPaint = Paint(Paint.ANTI_ALIAS_FLAG) //抗锯齿
    mPaint?.textSize = 100F

}

override fun onDraw(canvas: Canvas?) {
    super.onDraw(canvas)
    this.setLayerType(View.LAYER_TYPE_SOFTWARE,mPaint)
    /**
     * 定义的是一个半径为10,x轴和y轴偏移都为1 的红色阴影
     */
    mPaint?.setShadowLayer(10F,1F,1F,Color.RED)
    canvas?.drawText("我是红色发光效果",100F,100F,mPaint)
    mPaint?.setShadowLayer(10F,5F,5F,Color.BLUE)
    canvas?.drawText("绘图技术",100F,220F,mPaint)
}

}

运行 效果

android 显示隐藏view动画效果 android view设置阴影_方法名

二、渐变

渐变,用比较官方的解释就是,绘图的过程中颜色货位图一特定的规律进行变化,能增强物体的质感和审美的情趣,还可以,能理解哈,

种类

说明

LinerGradient

线性渐变

RadialGradient

径向渐变

SweepGradient

扫描渐变

BitmapGradient

位图渐变

ComposeShader

混合渐变

⚠️ 其中线性渐变、径向渐变和扫描渐变属于颜色的渐变,指定2��️或以上的颜色,根据颜色过渡算法自动计算出中间的过度颜色

渐变的分类

种类

说明

ABAB

A、B两种颜色重复变化,通过TileMode类的PEPEAT常量表示

ABBA

A、B两种颜色镜像变化,通过TileMode类的MIRROR常量表示

AABB

A、B两种颜色只出现一次,通过TileMode类的CLAMP常量表示

android 显示隐藏view动画效果 android view设置阴影_线性渐变_02


从左到右分别为 CLAMP、MIRROR、PEPEAT

定义渐变的时候必须指定一个渐变区域,更具定义的渐变内容和渐变模式填满该区域,调用setShader()指定一种简便类型

2.1 线性渐变 LinearGradient

线性渐变更具指定的角度、颜色和模式使用渐变颜色填充绘图区域,定义两个点,渐变的方向线的方向垂直

LinearGradient 构造方法
public LinearGradient(float x0, float y0, float x1, float y1, int colors[], float positions[],TileMode tile)
public LinearGradient(float x0, float y0, float x1, float y1, int color0, int color1, TileMode tile)

其他几种就不一一记录了,