2010-05-20 105 views
5

我在做一個AppWidget,並在其設置中讓用戶啓用/禁用文本陰影。由於我無法通過RemoteViews類調用shadow方法,因此我正在執行一個「繪製」方法,該方法動態地繪製小部件及其容器。在Android中使用Canvas.drawText呈現清晰文本

雖然在繪製文字時,它會變得模糊不清,就像在使用TextView時一樣。我用於文字繪製的唯一代碼是:

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

我還需要什麼其他的魔法才能讓它變得更清脆?

回答

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

的伎倆,我

1

這些都是我的文字繪畫設置:

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

似乎對我很好地工作。

+1

Paint paint = new Paint(Paint.LINEAR_TEXT_FLAG | Paint.ANTI_ALIAS_FLAG);爲我做了詭計 – Tomas 2011-03-04 17:08:10

+0

感謝您的提示。將嘗試一下,看看我的文字現在看起來更好。 :) – Abhinav 2011-03-06 02:30:55

0

textsetAntiAlias(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); 
    } 
+1

假。 https://developer.android.com/reference/android/graphics/Paint.html#setAntiAlias(boolean) 自API級別1以來一直在sdk中 – Tomas 2014-03-08 13:06:28

+0

@Tomas請檢查我編輯的答案。在API 18中,它們停止了軟件層中的AntiAlias功能。 – 2014-03-09 18:28:23

+0

啊,是的。以備日後參考:http://developer.android.com/guide/topics/graphics/hardware-accel.html#unsupported – Tomas 2014-03-11 11:45:42

相關問題