DashPathEffect not working

因爲公司的文字渲染引擎是本身實現的,在對單詞進行標識時用到了虛線下劃線的效果,經過 Paint 設置 setPathEffect() 方法,其中 DashPathEffect 類是官方提供的設置虛線的顯示效果。在源碼註釋中明確說明 Paint 的 style 設置成 STROKE or FILL_AND_STROKE 纔會生效。最近發如今高版本的 Android 設備(8.0)上,本來應該顯示的虛線變成了實線。this

官方的 API 在最新的 Android P 中並未對 DashPathEffect 類的說明進行修改code

The intervals array must contain an even number of entries (>=2), with the even indices specifying the "on" intervals, and the odd indices specifying the "off" intervals. phase is an offset into the intervals array (mod the sum of all of the intervals). The intervals array controls the length of the dashes. The paint's strokeWidth controls the thickness of the dashes. Note: this patheffect only affects drawing with the paint's style is set to STROKE or FILL_AND_STROKE. It is ignored if the drawing is done with style == FILL.ci

然而,莫名其妙的在高版本失效,確定是版本致使的問題。文檔

Paint 中的 setPathEffect() 方法都是調用 Native 方法實現的,未能看到具體的實現邏輯。源碼

因此只能嘗試修改 Paint 的一些設置。it

最終發現, style 設置成 FILL_AND_STROKE 是無效的, 設置成 STROKE 才能在高版本中完美展現虛線效果。渲染

雖然是一個很小的問題,可是文檔沒有更新真心很坑。方法

相關文章
相關標籤/搜索