用另一种方法在位图内绘制圆

时间:2015-05-18 15:52:11

标签: java android bitmap

在不同方法中绘制圆是否有任何可能性。这是一步:

  1. 在onCreate方法中,我调用方法loadFloorPlanImage(); < ---它是 使用位图绘制来自IndoorAtlas的平面图。
  2. 接下来我想在loadFloorPlanImage方法中绘制圆圈 不同     方法
  3. 所以这就是代码:

    public onCreate(Bundle savedInstanceState)
    {
    initIndoorAtlas(); <-- cobtain connection with IndoorAtlas.
    }
    

    内部initIndoorAtlas();有调用loadFloorPlan();方法

    public void loadFloorPlanImage(FloorPlan floorPlan) {
        BitmapFactory.Options options = createBitmapOptions(floorPlan);
        FutureResult<Bitmap> result = mIndoorAtlas.fetchFloorPlanImage(floorPlan,options);
        result.setCallback(new ResultCallback<Bitmap>() {
            @Override
            public void onResult(final Bitmap result) {
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        ImageView imageView = (ImageView) findViewById(R.id.imageView);
                        imageView.setImageBitmap(result);
                        log("oNResult LoadFloorPlanImage");
                    }
                });
            }
            @Override
            public void onSystemError(IOException e) {
    
            }
    
            @Override
            public void onApplicationError(IndoorAtlasException e) {
    
            }
        });
    }
    

    直到我成功使用位图在UI线程中绘制平面图。接下来我想绘制蓝色圆圈以获得不同方法的当前位置。它的:

     public void onServiceUpdate(ServiceState state){
        final double x,y;
        int i,j;
        x = state.getMetricPoint().getX();
        y = state.getMetricPoint().getY();
        i = state.getImagePoint().getI();
        j = state.getImagePoint().getJ();
    
    //here is to draw circle based on i,j pixel.
    }
    

    请注意,onServiceUpdate(ServiceState状态)在电话移动时给予响应。

    有人可以提供帮助吗?

1 个答案:

答案 0 :(得分:0)

请参阅基本数学计算其他问题中的正确位置:Draw Circle in ImageView when getting current location IndoorAtlas SDK

绘制位置,存储从服务器返回的最后位置,调用invalidate到您用来显示平面图位图的ImageView,覆盖它的onDraw(Canvas),先调用super.onDraw(canvas),然后使用https://developer.android.com/reference/android/graphics/Canvas.html#drawCircle(float,float,float,android.graphics.Paint)绘制蓝点(使用上面引用的数学)。您可以绘制一个半透明圆圈以获得精确度(较大的半径)和一个圆圈用于实际的蓝点。