Извлечь четкий текст с помощью Canvas.drawText в Android

Я делаю AppWidget, и в его настройках я разрешаю пользователю включать / отключать тень текста. Поскольку я не могу вызвать теневой метод через класс RemoteViews, я делаю метод «draw», который динамически рисует виджет и его контейнер.

Однако при рисовании текста он становится размытым и не таким хрустящим, как при использовании TextView. Единственный код, который я использовал для рисования текста:

Paint p = new Paint(); p.setAntiAlias(true); p.setColor(Color.WHITE); 

Есть ли какая-нибудь другая магия, которую мне нужно сделать, чтобы она стала более хрустящей?

 Paint paint = new Paint(Paint.LINEAR_TEXT_FLAG | Paint.ANTI_ALIAS_FLAG); 

Сделал трюк для меня

Это мои настройки текстовой краски:

  textPaint = new Paint(); textPaint.setStyle(Paint.Style.FILL); textPaint.setAntiAlias(true); textPaint.setARGB(255, 255, 255, 255); textPaint.setFakeBoldText(true); textPaint.setTextSize(textSize); 

Кажется, это хорошо работает для меня.

text setAntiAlias(true) (в аппаратном режиме) работает только с API 18 и выше, поэтому используйте этот код для установки типа вашего слоя.

 int currentapiVersion = android.os.Build.VERSION.SDK_INT; if (currentapiVersion >= android.os.Build.VERSION_CODES.HONEYCOMB && currentapiVersion < android.os.Build.VERSION_CODES.JELLY_BEAN_MR2) { this.setLayerType(View.LAYER_TYPE_SOFTWARE, null); }