@@ -5,11 +5,14 @@ import android.graphics.*
55import android.os.Build
66import android.text.BoringLayout
77import android.text.StaticLayout
8+ import android.text.TextUtils
89import android.widget.FrameLayout
910import android.widget.ImageView
1011import com.opensource.svgaplayer.SVGADynamicEntity
1112import com.opensource.svgaplayer.SVGAVideoEntity
1213import com.opensource.svgaplayer.entities.SVGAVideoShapeEntity
14+ import java.lang.Exception
15+ import java.lang.reflect.Field
1316
1417/* *
1518 * Created by cuiminghui on 2017/3/29.
@@ -271,7 +274,21 @@ internal class SVGACanvasDrawer(videoItem: SVGAVideoEntity, val dynamicItem: SVG
271274 textBitmap = it
272275 } ? : kotlin.run {
273276 it.paint.isAntiAlias = true
274- var layout = StaticLayout (it.text, 0 , it.text.length, it.paint, drawingBitmap.width, it.alignment, it.spacingMultiplier, it.spacingAdd, false )
277+ var layout = if (Build .VERSION .SDK_INT >= Build .VERSION_CODES .M ) {
278+ var lineMax = try {
279+ val field = StaticLayout ::class .java.getDeclaredField(" mMaximumVisibleLineCount" )
280+ field.isAccessible = true
281+ field.getInt(it)
282+ } catch (e: Exception ) { Int .MAX_VALUE }
283+ StaticLayout .Builder
284+ .obtain(it.text, 0 , it.text.length, it.paint, drawingBitmap.width)
285+ .setAlignment(it.alignment)
286+ .setMaxLines(lineMax)
287+ .setEllipsize(TextUtils .TruncateAt .END )
288+ .build()
289+ } else {
290+ StaticLayout (it.text, 0 , it.text.length, it.paint, drawingBitmap.width, it.alignment, it.spacingMultiplier, it.spacingAdd, false )
291+ }
275292 textBitmap = Bitmap .createBitmap(drawingBitmap.width, drawingBitmap.height, Bitmap .Config .ARGB_8888 )
276293 val textCanvas = Canvas (textBitmap)
277294 textCanvas.translate(0f , ((drawingBitmap.height - layout.height) / 2 ).toFloat())
0 commit comments