我正在尝试扩展/子类ShapeDrawable。结果真的令人困惑。我的简单代码应该创建一个小圆点和一个小三角形。事实上,这些形状确实出现在地图视图中,它们就是在地图视图中绘制的。然而,另一个形状稍有不同的三角形也出现了,我不知道为什么会这样。为什么我的ShapeDrawable子类要创建一个额外的三角形?
示例屏幕截图->> http://www.activemetrics.com/DrawableProb.png
private class CustomDrawable extends ShapeDrawable
{
public CustomDrawable() //GeoPoint point, MapView mapView)
{
}
public void draw(Canvas canvas)
{
canvas.drawCircle(0, 0, 2/*radius*/, getPaint());
Paint paint = new Paint();
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(2);
paint.setColor(Color.RED);
Path path = new Path();
path.reset();
path.moveTo(0, -10);
path.lineTo(5, 0);
path.lineTo(-5, 0);
path.close();
path.offset(10, 40);
canvas.drawPath(path, paint);
}
} 发布于 2013-01-14 18:03:33
我想也许这个问题太难了。也许这个子类之外的某个地方出了问题。(但奇怪的是,通过删除此处的绘制逻辑,鬼影三角形消失了,而这确实发生了。)无论如何,我有一个更好的体验,通过创建一个覆盖图,我将其添加到mapview,然后重载绘图方法……
private class MapOverlay extends com.google.android.maps.Overlay
{
@Override
public boolean draw(Canvas canvas, MapView mapView,
boolean shadow, long when)
{
super.draw(canvas, mapView, shadow);
Bitmap bmp = BitmapFactory.decodeResource(
getResources(), R.drawable.ic_launcher);
//---translate the GeoPoint to screen pixels---
Point screenPts1 = new Point();
mapView.getProjection().toPixels(p1, screenPts1);
//---translate the GeoPoint to screen pixels---
Point screenPts2 = new Point();
mapView.getProjection().toPixels(p2, screenPts2);
//---add the first marker---
canvas.drawBitmap(bmp, screenPts1.x - bmp.getWidth()/2,
screenPts1.y - bmp.getHeight()/2, null);(...snip...)
https://stackoverflow.com/questions/14304500
复制相似问题