我想在我的 android 应用程序中绘制一个圆形叠加层,我当然可以轻松地完成它并为其添加颜色。
但我真正想做的是保持圆圈透明,并用浅灰色遮蔽圆圈的外部(世界其他地方)。
我尝试将圆圈添加为路径,遮蔽世界并将圆圈剪掉,但我的设备上的圆圈周围有一个边界框(尽管它在模拟器上看起来不错)。
任何帮助表示赞赏。下面是一个代码片段:
public void draw(Canvas canvas, MapView mapView, boolean shadow) { super.draw(canvas, mapView, shadow);
Projection projection = mapView.getProjection();
Point pt = new Point();
GeoPoint geo = new GeoPoint((int) (mLat * 1e6), (int) (mLon * 1e6));
projection.toPixels(geo, pt);
float circleRadius = projection.metersToEquatorPixels(mRadius)
* (1 / FloatMath.cos((float) Math.toRadians(mLat)));
Paint innerCirclePaint;
innerCirclePaint = new Paint();
innerCirclePaint.setColor(Color.TRANSPARENT);
innerCirclePaint.setAlpha(35);
innerCirclePaint.setAntiAlias(true);
innerCirclePaint.setStyle(Paint.Style.FILL);
Path path = new Path();
path.setFillType(Path.FillType.WINDING);
path.addCircle((float) pt.x, (float) pt.y, circleRadius, Path.Direction.CCW);canvas.drawPath(path, innerCirclePaint);
canvas.drawARGB(150, 0, 0, 0 );
canvas.clipPath(path);
}