为什么不能从对象外部调用invalidate()?

时间:2019-03-18 11:25:09

标签: java android user-interface object view

我正在使用java在android studio中实现自定义视图。在此过程中,我必须将值更新为从自定义视图创建的自定义对象。我无法这样做,这是我的示例代码: 自定义视图->

public class simpleclass extends View{
private simple_line line;

constructors[..
line=new simple_line(0);
];

public void update_line(float up_val){
line.set_xval=up_val;
}

onmeasuremethod[..];
@Override
protected void onDraw(Canvas canvas){line.draw_line(canvas); }

private class simple_line{
 private Paint mpaint;
 private float xval;

 public simple_line(float val){
 xval=val;
 mpaint=new Paint();
 mpaint.setStrokeWidth(10);
 mpaint.setStyle(Paint.Style.STROKE);
 mpaint.setColor(Color.BLUE);
 }

 public void set_xval(float val){
     this.xval=val;
     invalidate();
 }
 public float get_xval(){
     return xval;
 }
 public draw_line(Canvas canvas){
     Path mypath=new Path();
     mypath.moveTo(getwidth/2+xval,0);
     mypath.lineTo(getwidth/2+xval,getHeight);
     mypath.close();
     canvas.drawPath(mypath,mpaint);
  }
 }
}

主要活动->

simple_object=new simpleclass(this);
button.setOnClickListener(new View.OnClickListener() {
     @Override
     public void onClick(View v) {
         simple_object.update_line(100);
     }
});

在创建对象(simple_object)时,按钮更新不起作用,但是在未创建对象后才起作用。

为什么会这样? 创建对象后如何更新?

0 个答案:

没有答案