前言
根据启舰 的博客所学习的自定义View。
一、setShadowLayer构造函数
public void setShadowLayer(float radius, float dx, float dy, int color)
radius:模糊半径,radius越大越模糊,越小越清晰,但是如果radius设置为0,则阴影消失不见
dx:阴影的横向偏移距离,正值向右偏移,负值向左偏移
dy:阴影的纵向偏移距离,正值向下偏移,负值向上偏移
color: 绘制阴影的画笔颜色,即阴影的颜色(对图片阴影无效)
注意:这里有一点需要非常注意的是setShadowLayer只有文字绘制阴影支持硬件加速,其它都不支持硬件加速,所以为了方便起见,我们需要在自定义控件中禁用硬件加速。
二、实现对文本,图形,Image的阴影效果
void init(){
setLayerType(LAYER_TYPE_SOFTWARE, null);//对单独的View在运行时阶段禁用硬件加速
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
paint.setColor(Color.RED);
paint.setStrokeWidth(2);
paint.setAntiAlias(true);
paint.setTextSize(50);
paint.setShadowLayer(5, 15, 20, Color.GREEN);</