android – 绘制具有圆角的LinearLayout

我试图实现一个LinearLayout子类,它使用圆角绘制自己.从我的研究中,我设置setwillNotDraw(false)并覆盖onDraw()在画布中绘制一个圆角矩形:
@Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);

    int sc = canvas.saveLayer(0,getWidth(),getHeight(),drawPaint,Canvas.MATRIX_SAVE_FLAG | Canvas.CLIP_SAVE_FLAG | Canvas.HAS_ALPHA_LAYER_SAVE_FLAG
            | Canvas.FULL_COLOR_LAYER_SAVE_FLAG | Canvas.CLIP_TO_LAYER_SAVE_FLAG);
    canvas.drawRoundRect(bounds,mCornerRadius,roundPaint);
    canvas.restoretoCount(sc);
}

哪里:

drawPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
drawPaint.setColor(0xffffffff);
drawPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_IN));

roundPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
roundPaint.setColor(0xffffffff);

DST_IN在这里是正确的选择(根据APIDemos的例子),但是应该是透明的区域(圆角的)改为黑色背景,孩子的角落仍然可见.这是使用Android 4.2.2的galaxy Nexus的结果:

任何提示

编辑:这是我想要实现的,对于拍摄的粗鲁感到遗憾:)

编辑2:我向GitHub添加一个可运行的示例项目:https://github.com/venator85/RoundClippingLayout

谢谢

相关文章

这篇“android轻量级无侵入式管理数据库自动升级组件怎么实现...
今天小编给大家分享一下Android实现自定义圆形进度条的常用方...
这篇文章主要讲解了“Android如何解决字符对齐问题”,文中的...
这篇文章主要介绍“Android岛屿数量算法怎么使用”的相关知识...
本篇内容主要讲解“Android如何开发MQTT协议的模型及通信”,...
本文小编为大家详细介绍“Android数据压缩的方法是什么”,内...