试图用对象填充屏幕

看来我在理解课程方面有问题。如果有人可以提供帮助,那就太好了。


我正在尝试用 3 个不同颜色的圆圈填充我的智能手机屏幕(android)。我的问题是,通过使用下面的代码,我只能得到一个(蓝色)圆圈。


我认为问题在于 y 值设置不正确,并且 3 个圆圈相互隐藏(因此只有蓝色的圆圈可见)。但是当我记录 3 个圆形对象的 y 值时,y 值似乎是正确的(200,500,800)


我在做什么错?


提前感谢您的帮助。


public class MainActivity extends Activity {


    public Circle circleR;

    public Circle circleG;

    public Circle circleB;


    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);


        circleR = new Circle(this, 200, 255, 0, 0);

        setContentView(circleR);


        circleG = new Circle(this, 500, 0, 255, 0);

        setContentView(circleG);


        circleB = new Circle(this, 800, 0, 0, 255);

        setContentView(circleB);


    }

}

public class Circle extends View {


    public Paint paint;

    public int y;


    public Circle(Context context,int y, int r, int g, int b){

        super(context);


        paint=new Paint();

        paint.setColor(Color.rgb(r,g,b));


        this.y=y;

    }


    @Override

    protected void onDraw(Canvas canvas){

        canvas.drawCircle(30, this.y,30, paint);

    }

}


MMTTMM
浏览 117回答 1
1回答

至尊宝的传说

问题在于多次设置内容视图。只有最后设置的视图(带有蓝色圆圈的视图)可见。如果您希望多个圆圈同时可见,您应该在一个视图内的一个画布上绘制它们。我重新排列了您的代码,以便它执行您想要的操作:public class MainActivity extends Activity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        CirclesView circlesView = new CirclesView(this);        setContentView(circlesView);    }}public class CirclesView extends View {    public Circle circleR;    public Circle circleG;    public Circle circleB;    public CirclesView(Context context) {        super(context);        circleR = new Circle(200, 255, 0, 0);        circleG = new Circle(500, 0, 255, 0);        circleB = new Circle(800, 0, 0, 255);    }    @Override    protected void onDraw(Canvas canvas){        circleR.draw(canvas);        circleG.draw(canvas);        circleB.draw(canvas);    }}public class Circle {    public Paint paint;    public int y;    public Circle(int y, int r, int g, int b) {        paint = new Paint();        paint.setColor(Color.rgb(r,g,b));        this.y=y;    }    public void draw(Canvas canvas) {        canvas.drawCircle(30, this.y,30, paint);    }}Circle 知道如何在画布上绘制自己,该画布将由视图提供给它。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java