Ikuspegiaren mihisearen tamainara sartu behar dut kalkulu batzuk egiteko. Arrazoiren batengatik, tamainan igarotako ikuspegiaren tamaina
tamaina ezberdina da onDraw
. Nire uneko konponbideak ikur boolearra erabiltzen du kalkuluak noiz egin behar ditudan zehazteko.
Irtenbide ezin hobeak kalkulu horiek egiteko aukera emango luke onSizeChanged
metodoan, beraz, galdetzen diot ... Canvas
objektuaren (edo gutxienez dimentsioak) edozein modutan lor dezaket onDraw
metodotik kanpo?
Nire kodea behean dago. Zirkulu baten erradioa angelu jakin batean marrazten du. Erradioaren hasierako puntuak eta amaiera puntuak zehazteko canvas.centerX ()
erabiltzen dudanean, dena primeran funtzionatzen du. atalera pasatutako parametroak erabiltzen baditut onSizeChanged
aplikazioan, ez da urrunetik zuzena ere.
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
mSizeChanged = true;
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
if (mSizeChanged) {
RectF bounds = new RectF(canvas.getClipBounds());
float centerX = bounds.centerX();
float centerY = bounds.centerY();
float radianAngle = (float) Math.toRadians(mStartAngle);
mRadius[0] = center;
mRadius[1] = center;
mRadius[2] = center + center * FloatMath.cos(radianAngle);
mRadius[3] = center + center * FloatMath.sin(radianAngle);
mSizeChanged = false;
}
mPaint.setColor(0xFF330000);
mPaint.setStrokeWidth(1);
canvas.drawLines(mRadius, mPaint);
}