我试图实现一个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的结果:
任何提示?
编辑:这是我想要实现的,对于拍摄的粗鲁感到遗憾:)
谢谢
总结
如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
小编个人微信号 jb51ccc
喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!