似乎我在理解课程时遇到问题。如果有人可以帮助,那就太好了。
我正在尝试用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);
}
}
答案 0 :(得分:0)
问题在于多次设置内容视图。只有最后设置的视图(带有蓝色圆圈的视图)将可见。如果要同时显示多个圆圈,则应在一个视图中本地化的一张画布上绘制它们。我重新排列了您的代码,使其可以执行您想要的操作:
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知道如何在视图上提供的画布上绘制自己。