Я столкнулся с этой проблемой при отображении текста на SurfaceView, некоторые символы могут подняться на других, код здесь:Android дисплей Canvas.drawString проблема
private static void fakeDraw(Canvas c)
{
Paint mPaint = new Paint();
int color = 0xff000000;
mPaint.setColor(color);
mPaint.setStrokeWidth(2);
mPaint.setStyle(Style.FILL);
mPaint.setAntiAlias(true);
FontMetricsInt fm = mPaint.getFontMetricsInt();
int fh = Math.abs(fm.top);
int left = 0;
int top = 100;
Rect smallClip = new Rect(left, top-fh, left + 200, top + 30);
Rect bigClip = new Rect(0, 0, getW(), getH());
c.drawRect(bigClip, mPaint);
String text1 = "Evi";
String text2 = ">>";
String text3 = "Tom";
color = 0xff303030;
mPaint.setColor(color);
c.drawRect(smallClip, mPaint);
color = 0xffffffff;
mPaint.setColor(color);
c.drawText(text1, left, top, mPaint);
Rect bounds = new Rect();
mPaint.getTextBounds(text1, 0, text1.length(), bounds);
left += bounds.width();
c.drawText(text2, left, top, mPaint);
left -= bounds.width();
top += 12;
c.drawText(text3, left, top, mPaint);
mPaint.getTextBounds(text3, 0, text3.length(), bounds);
left += bounds.width();
c.drawText(text2, left, top, mPaint);
}
В случае второго текста Tom >> все отображается правильно, но первый текст Evi >> нет. Проблема в том, что символы >> рисуют в пространстве пробега Эви (последний символ «i») !! Можно ли увеличить изображение, что я делаю неправильно и как это исправить?
снимок экрана можно найти здесь: http://img192.imageshack.us/img192/2782/imagexs.png
Это выглядит как нормальное поведение антиалайзингового. Как он выглядит с отключенными антиалиасами? – RoToRa
RoToRa, с антиалиасами выключен, он работает greate :) спасибо! Есть ли какой-либо вариант для рисования сглаженного текста без кликов? – Arkaha
Я действительно не вижу проблемы, не могли бы вы объяснить немного больше, как вы ожидали, что код будет вести себя и что выглядит не так? – ee3509