对于初学者来说,我个人总是发现很难理解代码会自动与手动相比发生什么。我特别遇到麻烦的一个领域是了解android开发中android.view.View类的onDraw(Canvas canvas)方法。我有一些没有错误的代码但是当它运行时我的onDraw(Canvas画布)似乎被忽略了。我不认为编译器知道我想要绘制的地方,我不知道如何让它知道。这是我的一些代码(仅添加相关代码。如果您需要更多评论,我会相应添加更多代码):
主要活动
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
backGround = (RelativeLayout) findViewById(R.id.bG);
GFX screen = new GFX();
}
GFX
public class GFX extends Activity{
MyBringBack ourView;
@Override
protected void onCreate(Bundle savedInstanceCreate){
super.onCreate(savedInstanceCreate);
ourView = new MyBringBack(this);
setContentView(ourView);
}
}
MyBringBack
public class MyBringBack extends View {
Paint paint = new Paint();
public MyBringBack(Context context){
super(context);
}
@Override
protected void onDraw(Canvas canvas){
super.onDraw(canvas);
paint.setColor(Color.BLACK);
paint.setStrokeWidth(3);
canvas.drawRect(30, 30, 80, 80, paint);
}
}
我一直关注youtube上的these教程。
如何指定要绘制的位置?
答案 0 :(得分:0)
所以我最终发现自己只是添加了setContentView(new MyBringBack(this));
这个技巧
答案 1 :(得分:0)
我不确定你在这做什么。您不应该在另一个活动中实例化一个活动。你能详细说明吗?
至于为什么onDraw不起作用。可能是因为你应该打电话给
Canvas.save()
完成绘图后。另外,如果你想确保调用ondraw,你需要做
someView.invalidate()
这将告诉视图调用
onMeasure and onDraw