Android 安卓:我如何将它分为两类?

Android 安卓:我如何将它分为两类?,android,Android,我在网上读了一篇关于画圆的教程(教程的第一部分): 我成功了。现在我想将它们分为两类: MainActivity.java public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(new Simp

我在网上读了一篇关于画圆的教程(教程的第一部分):

我成功了。现在我想将它们分为两类:

MainActivity.java

public class MainActivity extends AppCompatActivity {


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(new SimpleView(this));

    }

}
public class SimpleView extends SurfaceView {

public SimpleView(Context context) {

    super(context);
}

@Override
protected void onDraw(Canvas canvas) {

    super.onDraw(canvas);
    int x = getWidth();
    int y = getHeight();
    int radius;
    radius = 100;
    Paint paint = new Paint();
    paint.setStyle(Paint.Style.FILL);
    paint.setColor(Color.GREEN);
    canvas.drawPaint(paint);
    // Use Color.parseColor to define HTML colors
    paint.setColor(Color.parseColor("#CD5C5C"));
    canvas.drawCircle(x / 2, y / 2, radius, paint);

}

}
SimpleView.java

public class MainActivity extends AppCompatActivity {


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(new SimpleView(this));

    }

}
public class SimpleView extends SurfaceView {

public SimpleView(Context context) {

    super(context);
}

@Override
protected void onDraw(Canvas canvas) {

    super.onDraw(canvas);
    int x = getWidth();
    int y = getHeight();
    int radius;
    radius = 100;
    Paint paint = new Paint();
    paint.setStyle(Paint.Style.FILL);
    paint.setColor(Color.GREEN);
    canvas.drawPaint(paint);
    // Use Color.parseColor to define HTML colors
    paint.setColor(Color.parseColor("#CD5C5C"));
    canvas.drawCircle(x / 2, y / 2, radius, paint);

}

}
然而,我没能让他们工作:它从不画任何东西


我在这里做错了什么?

如果您想使用SurfaceView,您只需在构造函数上调用
setWillNotDraw(false)
,这样类就会如下所示:

public class SimpleView extends SurfaceView {

    public SimpleView(Context ctx) {
        super(ctx);
        setWillNotDraw(false); //notice this method call IMPORTANT
    }

    @Override
    protected void onDraw(Canvas canvas) {

        super.onDraw(canvas);
        int x = getWidth();
        int y = getHeight();
        int radius;
        radius = 100;
        Paint paint = new Paint();
        paint.setStyle(Paint.Style.FILL);
        paint.setColor(Color.GREEN);
        canvas.drawPaint(paint);
        // Use Color.parseColor to define HTML colors
        paint.setColor(Color.parseColor("#CD5C5C"));
        canvas.drawCircle(x / 2, y / 2, radius, paint);


    }
}

SurfaceView
更改为
View
@ssh为什么
SurfaceView扩展视图
@cricket_007是的,但绘图场景不同。@ssh如果您认为这是解决方案,您可以在回答中解释这一点。噢,在我将其更改为视图后,它会起作用,请问有什么区别?如果我想保持SurfaceView,我该怎么做?