2017-06-12 1 views
0

j'étudie l'application comme ceci, the clock UI.où sont les références des numéros?

/** 
    * draw the hour text (12、3、6、9) 
    * draw the arc 
    */ 
    private void drawTimeText() { 
     //draw the hour text 
     String timeText = "12"; 
     mTextPaint.getTextBounds(timeText, 0, timeText.length(), mTextRect); 
     int textLargeWidth = mTextRect.width();//两位数字的宽 
     mCanvas.drawText("12", getWidth()/2 - textLargeWidth/2, mPaddingTop + mTextRect.height(), mTextPaint); 
     timeText = "3"; 

     mTextPaint.getTextBounds(timeText, 0, timeText.length(), mTextRect); 
     int textSmallWidth = mTextRect.width();//一位数字的宽 
     mCanvas.drawText("3", getWidth() - mPaddingRight - mTextRect.height()/2 - textSmallWidth/2, 
       getHeight()/2 + mTextRect.height()/2, mTextPaint); 

     mCanvas.drawText("6", getWidth()/2 - textSmallWidth/2, getHeight() - mPaddingBottom, mTextPaint); 
     mCanvas.drawText("9", mPaddingLeft + mTextRect.height()/2 - textSmallWidth/2, 
       getHeight()/2 + mTextRect.height()/2, mTextPaint); 


     //draw the arc 
     mCircleRectF.set(mPaddingLeft + mTextRect.height()/2 + mCircleStrokeWidth/2, 
       mPaddingTop + mTextRect.height()/2 + mCircleStrokeWidth/2, 
       getWidth() - mPaddingRight - mTextRect.height()/2 + mCircleStrokeWidth/2, 
       getHeight() - mPaddingBottom - mTextRect.height()/2 + mCircleStrokeWidth/2); 
     for (int i = 0; i < 4; i++) { 
      mCanvas.drawArc(mCircleRectF, 5 + 90 * i, 80, false, mCirclePaint); 
     } 

je ne sais pas quand dessiner le texte d'une heure "3",

mCanvas.drawText("3", getWidth() - mPaddingRight - mTextRect.height()/2 - textSmallWidth/2, 
        getHeight()/2 + mTextRect.height()/2, mTextPaint); 

utilisation canvas.drawText(),

void drawText (String text, 
       int start, 
       int end, 
       float x, 
       float y, 
       Paint paint) 

"y" signifie la ligne de base du nombre , je ne connais pas les règles de base du nombre, comme "3", où est la référence du nombre? je recherche google le "baseline", mais il s'agit de l'alphabet anglais de base, rien sur le nombre de base.

Répondre

1

La ligne de base pour les nombres est la même que pour les lettres autant que je sache. La plupart des polices seront placées sur la ligne de base, mais certaines se prolongeront en dessous de la ligne de base, comme un 'g' ou un 'j' dans la plupart des polices (certaines polices 'old style' ou 'script' en sont un bon exemple) ......

enter image description hereenter image description here

les lignes en pointillés voici les lignes de base .

Ne pas oublier, lorsque vous envoyez la coordonnée y dans la méthode drawText, il est attend le sommet des caractères de baseet pas. J'espère que cela aide.

+1

merci beaucoup !! –