【发布时间】:2017-12-15 03:17:15
【问题描述】:
我需要使用 surfaceview 绘制折线图,因此从主要活动中我将按照这个 [link][1] 解决方案将 2 个参数传递给 surfaceview
[1]: Passing arguments to SurfaceView via Constructor 但是我在surfaceview draw方法中传递的参数仍然是0,请帮助
MySurfaceView.java: 私人 int len,theta;
public void setParameter(int length, int angle){
this.len = length;
this.theta = angle;
System.out.println("inside setParameter, len: "+len+" ,theta: "+theta);
}
protected void drawSomething(Canvas canvas) {
System.out.println("Inside drawSomething() , len: "+len+" ,theta: "+theta);
canvas.drawColor(Color.WHITE);
} MainActivity.java
MySurfaceView myView = new MySurfaceView(MainActivity.this);
myView.setParameter(90,30);
myView.invalidate();
值仅在 setParameter() 内而不在 drawSomething() 内打印,我需要在 drawSomething() 内使用这些值,请帮助 在下面编辑了我的代码,
public MySurfaceView(Context context) {
super(context);
init();
}
private void init(){
paint = new Paint();
paint.setColor(Color.BLUE);
paint.setStrokeWidth(3);
paint.setStyle(Paint.Style.STROKE);
surfaceHolder = getHolder();
surfaceHolder.addCallback(new SurfaceHolder.Callback(){
@Override
public void surfaceCreated(SurfaceHolder holder) {
canvas = holder.lockCanvas(null);
drawSomething(canvas);
holder.unlockCanvasAndPost(canvas);
}
@Override
public void surfaceChanged(SurfaceHolder holder,
int format, int width, int height) {
// TODO Auto-generated method stub
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
// TODO Auto-generated method stub
}});
}
【问题讨论】:
-
drawSomething(Canvas canvas)在哪里调用?
-
@andras drawSomething 在 init() 方法中被调用, init() 在构造函数中被调用,我通过编辑我的问题添加了这些代码。在 init() 内部我也尝试打印这些值但没有运气
标签: android android-activity parameters parameter-passing surfaceview