java - 如何在Android谷歌地图中使圆形颜色变亮

标签 java android android-mapview

下面是我在 Android 中的 Google map 上画圆圈的代码。它对我来说工作得很好。

问题陈述:-

目前在谷歌地图上绘制的圆圈非常暗。我需要让那个圆圈稍微亮一点,颜色与我当前的颜色相同。是否可以通过调整油漆或颜色中的一些参数来使该圆圈稍微变亮?中间部分比较暗,不知道为什么。我只需要让我当前拥有的所有四个圆圈都变亮即可。

   class MapOverlay extends Overlay {
    private GeoPoint pointToDraw;
    int[] imageNames=new int[6];
    private Point mScreenPoints;
    private Bitmap mBitmap;
    private Paint mCirclePaint;


    public MapOverlay(GPSLocationListener gpsLocationListener, int currentUser) {
        imageNames[0]=currentUser;
        mCirclePaint = new Paint(Paint.ANTI_ALIAS_FLAG);
        mCirclePaint.setColor(0x30000000);
        mCirclePaint.setStyle(Style.FILL_AND_STROKE);
        mBitmap = BitmapFactory.decodeResource(getResources(),imageNames[0]);
        mScreenPoints = new Point();
    }

    public void setPointToDraw(GeoPoint point) {
        pointToDraw = point;
    }

    public GeoPoint getPointToDraw() {
        return pointToDraw;
    }

    @Override
    public boolean draw(Canvas canvas, MapView mapView, boolean shadow, long when) {
        super.draw(canvas, mapView, shadow);
        if (pointToDraw == null) {
            return true;
        }
        mScreenPoints = mapView.getProjection().toPixels(pointToDraw, mScreenPoints);
        int totalCircle=5;
        int radius=40;
        int centerimagesize=35;
        for (int i = 1; i <= totalCircle; i ++) { 
            canvas.drawCircle(mScreenPoints.x,mScreenPoints.y, i*radius, mCirclePaint); 
        } 
        canvas.drawBitmap(mBitmap, (mScreenPoints.x-(centerimagesize/2)),(mScreenPoints.y-(centerimagesize/2)), null);
        super.draw(canvas,mapView,shadow);
        return true;
    }


} 

当前我的圈子快照enter image description here -

任何建议都会有很大帮助。

最佳答案

问题

中心变暗的原因是因为您正在绘制四个圆圈,一个在另一个之上。当你画第二个圆圈时,两个圆圈共有的部分被画了两次,所以它变得更暗。当你画第三个圆圈时,它会变得更暗......

解决方案

如果您希望所有圆圈具有相同的颜色,则应为所有圆圈使用 Style.STROKE,但较大的圆圈除外,该圆圈应使用 Style.FILL_AND_STROKE。这样,您只需为小圆圈绘制线条,并在绘制大圆圈时填充所有区域。

代码

    mCirclePaint.setStyle(Style.STROKE); 
    for (int i = 1; i <= totalCircle-1; i ++) {  
        canvas.drawCircle(mScreenPoints.x,mScreenPoints.y, i*radius, mCirclePaint);  
    }  
    mCirclePaint.setStyle(Style.FILL_AND_STROKE); 
    canvas.drawCircle(mScreenPoints.x,mScreenPoints.y, totalCircle*radius, mCirclePaint);  

问候

关于java - 如何在Android谷歌地图中使圆形颜色变亮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12963765/

相关文章:

android - 客户端拒绝AUDIO_OUTPUT_FLAG_FAST

android - 在android map v2中单击后不要捕捉到标记

java - 带有滑动操作菜单的 RecyclerView

java - 异步任务无法访问原始线程

javascript - ionic android 图标不相同的原始大小/比例

Android:在整个动画中保持图像可见

android - Android 中的 Google map 标记集群

android - 如何将 GeoPoint 转换为硬件屏幕点

java - 使用 Spring Boot 和嵌入式 Tomcat 启用 session 持久性

java - 如何将字符串的字符与数组的索引相匹配