我对编程很陌生,所以可能是我在这里把整个想法弄错了。

我有两个类,另一个是主类(Main),第二个类(DrawingLines)只是普通类。我正在尝试从主类中的DrawingLines调用onDraw方法。

我做了一些研究,但是发现

DrawingLines draw = new DrawingLines ();
draw.onDraw


我认为这应该是这样,但我只是想不出应该使用什么参数。您可以在下面的示例中看到我一直在尝试使用的参数,但是AndroidStudio仅给出了“无法解析符号”。

主班:

public class Main extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    final LinearLayout parent = (LinearLayout) findViewById(R.id.parent);
    final TextView text = (TextView) findViewById(R.id.text);
    parent.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View view, MotionEvent ev) {
            text.setText("Touch at " + (int)ev.getX() + ", " + (int)ev.getY());
            return true;
        }
    });

}

DrawingLines draw = new DrawingLines(Context context);
draw.onDraw(canvas);

}


DrawingLines类:

class DrawingLines extends View {

public DrawingLines(Context context) {
    super(context);

}

@Override
public void onDraw(Canvas canvas) {
    super.onDraw(canvas);

    Rect pallo = new Rect();
    pallo.set(0, 0, canvas.getWidth(), canvas.getHeight() / 2);

    Paint blue = new Paint();
    blue.setColor(Color.BLUE);
    blue.setStyle(Paint.Style.FILL);

    canvas.drawRect(pallo, blue);
}
}

最佳答案

首先,如果您想绘制某些东西,则不必以编程方式强制它。 DrawingLines draw = new DrawingLines(Context context);draw.onDraw(canvas)
将视图DrawingLines放在布局R.layout.activity_main内,并使用findViewById创建变量。
然后,您可以在该视图上执行drawingLines.invalidate(),因此将重绘该视图(将调用方法void onDraw(Canvas canvas))。

10-08 17:28