繁体   English   中英

Android:ImageButton上的ShapeDrawable:像素化

[英]Android: ShapeDrawable on ImageButton: pixelated

我正在尝试在ImageButton内显示一个图标。 该图标作为路径给出。 现在,问题在于路径显示为像素化。
有什么想法可以为ImageButton或ShapeDrawable启用抗锯齿功能吗? 还是我做错了什么?

Path path = new Path();
path.moveTo(0f, 192f); path.lineTo(115, 365); path.cubicTo(123, 377, 135, 384, 149, 384); path.lineTo(469, 384); path.cubicTo(493, 384, 512, 365, 512, 341); path.lineTo(512, 43); path.cubicTo(512, 19, 493, 0, 469, 0); path.lineTo(149, 0); path.cubicTo(135, 0, 123, 7, 115, 19); path.close(); path.moveTo(192, 268); path.lineTo(222, 299); path.lineTo(299, 222); path.lineTo(375, 299); path.lineTo(405, 268); path.lineTo(329, 192); path.lineTo(405, 116); path.lineTo(375, 85); path.lineTo(299, 162); path.lineTo(222, 85); path.lineTo(192, 116); path.lineTo(268, 192); path.close();
path.setFillType(Path.FillType.EVEN_ODD);

PathShape shape = new PathShape(path, 512f, 384f);

ShapeDrawable drawable = new ShapeDrawable(shape);
drawable.setIntrinsicWidth(512);
drawable.setIntrinsicHeight(384);

ImageButton button = new ImageButton(context);
button.setScaleType(ImageView.ScaleType.FIT_CENTER);
button.setImageDrawable(drawable);
button.setBackgroundColor(0xFFFAFADA);

像素化按钮放大了5:
像素化按钮放大了5

尝试以下

Paint psPaint = drawable.getPaint();
psPaint.setAntiAlias(true);
psPaint.setStrokeJoin(Paint.Join.ROUND);
psPaint.setStrokeCap(Paint.Cap.ROUND);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM