Nola lor dezaket ikuspegi pertsonalizatu baten mihise tamaina onDraw metodoa?

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);
}
27
задан dfetter88 11 July 2011 в 17:48
поделиться