创建这个简单的代码在android中绘制圆圈,它在模拟器上没有显示任何内容

时间:2016-02-15 08:53:15

标签: java android xml android-studio

我在android中创建了这个简单的代码,它在模拟器上没有显示它应该显示一个圆圈。我是否还必须在xml文件中编辑某些内容?

这是我的主要活动

public class MainActivity extends AppCompatActivity {
    Circlexy ourview;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        ourview = new Circlexy(this);
        setContentView(ourview);
    }
}

这是我的Circlexy课程:

public class Circlexy extends View {
    Bitmap ball;
    public Circlexy (Context context){
        super(context);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        Paint paint= new Paint();
        paint.setColor(Color.BLUE);
        canvas.drawCircle(canvas.getWidth()/2,canvas.getHeight()/2,100,paint);
    }
}

1 个答案:

答案 0 :(得分:0)

您没有为您的活动设置布局,因此您所做的任何更改,无论是程序化还是xml,您都无法看到它。

setContentView()方法用于将布局(xml)文件设置为当前活动,但是您将圆圈视图传递给它,您应该使用“R”参考将内容设置为xml文件。 类似的东西:

setContentView(R.layout.activity_main);

其中,您的活动xml名为activity_main.xml

此外,在另一个注释中,您还应该更新您的Circlexy类以包含其他构造函数以实现良好实践。

public class Circlexy extends View {


public Circlexy(Context context) {
    super(context);
}

public Circlexy(Context context, AttributeSet attrs) {
    super(context, attrs);
}

public Circlexy(Context context, AttributeSet attrs, int defStyleAttr) {
    super(context, attrs, defStyleAttr);
}

@Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);
    Paint paint= new Paint();
    paint.setColor(Color.BLUE);
    canvas.drawCircle(canvas.getWidth() / 2, canvas.getHeight() / 2, 100, paint);
 }

}