0
this.invalidate
を初めて呼び出すときに、onDraw()
というメソッドが2回呼び出される理由を理解できません変数)。その後、ユーザーがボタンを押すたびに、onDraw()
が1回呼び出されます。ここでは、コードは次のとおりです。最初に 'invalidate'が呼び出されたときに 'onDraw()'が2回呼び出されました
MyActivity
MyView mCustomView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_interval_identification);
mCustomView = (MyView) findViewById(R.id.my_view);
Button mButton = (Button) findViewById(R.id.id_btn);
mButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
newDrawing();
}
});
newDrawing();
}
private void newDrawing() {
int a;
int b;
//some operations on 'a' and 'b'
mCustomView.newDrawing(a, b);
}
MYVIEW
int x;
int y;
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Drawable object = ContextCompat.getDrawable(getContext(), R.drawable.object);
//some operations
object.draw(canvas); //based on 'x' and 'y'
}
public void newDrawing(int a, int b) {
x = a;
y = b;
this.invalidate();
}
動作しません。 'a'と 'b'が設定されていないため、オブジェクトが正しく描画されません。 –
パラメータ 'a'と' b'が 'onDraw'メソッド(既に' boolean'など)で設定されているかどうかを調べることができるので、 'a'、' b'が知られている。 – user35603
しかし、この方法では、ユーザがボタンを押してnewDrawing()が呼び出されるまで、オブジェクトは描画されません。 –