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);
}