简书链接:阴影的实现多种方案研究
文章字数:75,阅读全文大约需要1分钟
要实现阴影,解决方法有很多,有直接当前控件携带阴影 移动自己的背景图层,或者是让父容器进行背景图层绘制阴影,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
| public class CustomShadowLayerView extends View {
public CustomShadowLayerView(Context context) { super(context); }
public CustomShadowLayerView(Context context, @Nullable AttributeSet attrs) { super(context, attrs); }
public CustomShadowLayerView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); }
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) public CustomShadowLayerView(Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); }
@Override protected void onDraw(Canvas canvas) { canvas.scale(1,1);
Paint paint = new Paint(); paint.setColor(Color.WHITE); paint.setStyle(Paint.Style.FILL); setLayerType( LAYER_TYPE_SOFTWARE , null); paint.setStrokeWidth(50);
paint.setShadowLayer(50, 30, 30, Color.RED); canvas.drawRect(new Rect(0,0,getWidth()-50,getHeight()-50),paint);
super.onDraw(canvas);
/* paint.setShadowLayer(5, 30, 30, Color.RED);
canvas.drawRect(new Rect(0,0,50,50),paint);*/
} }
|