Java 将onDraw(视图)与SurfaceView关联
首先,就我个人而言,我总是很难理解自动编码和手动编码的区别。我遇到的一个问题是理解android开发中android.view.view类的onDraw(Canvas Canvas)方法。我有一些代码没有错误,但当它运行我的onDraw(画布)时,它似乎被忽略了。我不认为编译器知道我想画在哪里,我也不知道如何让它知道。以下是我的一些代码(仅添加相关代码。如果您需要更多注释,我将相应地添加更多): 主要活动Java 将onDraw(视图)与SurfaceView关联,java,android,Java,Android,首先,就我个人而言,我总是很难理解自动编码和手动编码的区别。我遇到的一个问题是理解android开发中android.view.view类的onDraw(Canvas Canvas)方法。我有一些代码没有错误,但当它运行我的onDraw(画布)时,它似乎被忽略了。我不认为编译器知道我想画在哪里,我也不知道如何让它知道。以下是我的一些代码(仅添加相关代码。如果您需要更多注释,我将相应地添加更多): 主要活动 protected void onCreate(Bundle savedInstanceS
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
backGround = (RelativeLayout) findViewById(R.id.bG);
GFX screen = new GFX();
}
GFX
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上的教程
如何指定要绘制的位置?因此我最终发现自己只是添加了
setContentView(新的MyBringBack(this))代码>起作用了我不知道你在这里干什么。您不应该在另一个活动中实例化一个活动。你能详细说明一下吗
至于为什么onDraw不起作用。可能是因为你应该打电话
Canvas.save()
画完之后。此外,如果要确保调用ondraw,您需要执行以下操作
someView.invalidate()
这将告诉视图调用
onMeasure and onDraw
onMeasure and onDraw