在Android中如何将int传递给我的onDraw(画布)?

在Android中如何将int传递给我的onDraw(画布)?,android,parameters,ondraw,Android,Parameters,Ondraw,我使用surfaceview在Android中绘制饼图。为了知道饼图切片应该有多大,我需要向onDraw()方法传递一个参数。我该怎么做?在onDraw()中,我对获取正确数据的datahelper类进行查询 我试图在一个活动中从onDraw调用一个静态函数,该函数返回一个整数。但是我想要更动态的东西,所以我可以将需要的整数从活动发送到onDraw,然后以饼图的形式得到结果 有什么建议吗 其中一种解决方案如下: public class MySurfaceView extends Surface

我使用surfaceview在Android中绘制饼图。为了知道饼图切片应该有多大,我需要向onDraw()方法传递一个参数。我该怎么做?在onDraw()中,我对获取正确数据的datahelper类进行查询

我试图在一个活动中从onDraw调用一个静态函数,该函数返回一个整数。但是我想要更动态的东西,所以我可以将需要的整数从活动发送到onDraw,然后以饼图的形式得到结果


有什么建议吗

其中一种解决方案如下:

public class MySurfaceView extends SurfaceView
{
    private MyParameter parameter;

    public void setParameter(MyParameter parameter)
    {
        this.parameter=parameter;
    }

    @Override
    public void onDraw(Canvas canvas)
    {
        if(this.parameter==null)
            return;  //nothing to draw...
        //draw here...
    }
}

//somewhere in code

MySurfaceView sView=(SurfaceView )findViewById(R.id.pie_chart);
//
sView.setParameter(new MyParameter(100,2000, false));

}

其中一种解决方案如下:

public class MySurfaceView extends SurfaceView
{
    private MyParameter parameter;

    public void setParameter(MyParameter parameter)
    {
        this.parameter=parameter;
    }

    @Override
    public void onDraw(Canvas canvas)
    {
        if(this.parameter==null)
            return;  //nothing to draw...
        //draw here...
    }
}

//somewhere in code

MySurfaceView sView=(SurfaceView )findViewById(R.id.pie_chart);
//
sView.setParameter(new MyParameter(100,2000, false));

}

这起作用了。我没有让它使用整数作为参数,所以我使用了一个字符串,是这样的还是应该进行转换?无论如何,谢谢你快速而有用的回答!实际上,您可以将其用作MyParameter Parcelable对象,并将int、String等放在其中。您好!我想知道你们是否知道我如何能用这种方式在事件期间将参数传递给我的SurfaceView?这可能吗?如果我想在MotionEvent.ACTION\u MOVE中更新此参数。@kakka47-当然有可能,我正在尝试这种方法,但它不起作用:case MotionEvent.ACTION\u UP:int xchanged=xdown-x;xscroll=String.valueOf(已交换);cv.setParameter(新字符串(xscroll));cv.setParameter(新字符串(xscroll));在touchEvent中,“setParameter()”是否不同?这是有效的。我没有让它使用整数作为参数,所以我使用了一个字符串,是这样的还是应该进行转换?无论如何,谢谢你快速而有用的回答!实际上,您可以将其用作MyParameter Parcelable对象,并将int、String等放在其中。您好!我想知道你们是否知道我如何能用这种方式在事件期间将参数传递给我的SurfaceView?这可能吗?如果我想在MotionEvent.ACTION\u MOVE中更新此参数。@kakka47-当然有可能,我正在尝试这种方法,但它不起作用:case MotionEvent.ACTION\u UP:int xchanged=xdown-x;xscroll=String.valueOf(已交换);cv.setParameter(新字符串(xscroll));cv.setParameter(新字符串(xscroll));在touchEvent中,“setParameter()”是否不同?