In uno Scrabble word game app Sto provando a disegnare lettere e valori neri su riquadri gialli.Definizione delle dimensioni del testo per Canvas.drawText() in res/values / dimens.xml
Anche se questo funziona a emulatori Android sotto Windows e Mac:
questo non funziona (la dimensione del testo è troppo grande) su dispositivi reali come Moto G, Nexus 1 e 4:
definisco le dimensioni del testo di 60SP e 20SP (ho provato dp troppo) in res/values/dimens.xml:
<resources>
<dimen name="big_tile_letter">60sp</dimen>
<dimen name="big_tile_value">20sp</dimen>
</resources>
e poi li uso nel mio BigTile.java classe:
int letterSize = context.getResources().getDimensionPixelSize(R.dimen.big_tile_letter);
mLetterPaint = new Paint();
mLetterPaint.setTextSize(letterSize);
mLetterPaint.setAntiAlias(true);
Rect letterBounds = new Rect();
mLetterPaint.getTextBounds(letter, 0, letter.length(), letterBounds);
mLetterX = 0.45f * (width - letterBounds.width());
mLetterY = 0.45f * (height + letterBounds.height());
canvas.drawText(letter, mLetterX, mLetterY, mLetterPaint);
Che cosa sto facendo di sbagliato?
Utilizza la stessa unità di misura ('sp',' dp', qualunque sia) per entrambe le lettere e la casella in cui lo stai disegnando. – laalto
+1 ma il problema è: le tessere sono [immagini png] (https://github.com/afarber/android-newbie/blob/q4/TestScroll2/res/drawable-mdpi/big_tile.png) e la lettera e valore sono stringhe disegnate con il metodo 'canvas.drawText()'. –
Ridimensionare il PNG in modo proporzionale alle dimensioni del testo o impostare le dimensioni del testo come proporzione della dimensione PNG. – laalto