@@ -5,11 +5,14 @@ import android.graphics.*
5
5
import android.os.Build
6
6
import android.text.BoringLayout
7
7
import android.text.StaticLayout
8
+ import android.text.TextUtils
8
9
import android.widget.FrameLayout
9
10
import android.widget.ImageView
10
11
import com.opensource.svgaplayer.SVGADynamicEntity
11
12
import com.opensource.svgaplayer.SVGAVideoEntity
12
13
import com.opensource.svgaplayer.entities.SVGAVideoShapeEntity
14
+ import java.lang.Exception
15
+ import java.lang.reflect.Field
13
16
14
17
/* *
15
18
* Created by cuiminghui on 2017/3/29.
@@ -271,7 +274,21 @@ internal class SVGACanvasDrawer(videoItem: SVGAVideoEntity, val dynamicItem: SVG
271
274
textBitmap = it
272
275
} ? : kotlin.run {
273
276
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
+ }
275
292
textBitmap = Bitmap .createBitmap(drawingBitmap.width, drawingBitmap.height, Bitmap .Config .ARGB_8888 )
276
293
val textCanvas = Canvas (textBitmap)
277
294
textCanvas.translate(0f , ((drawingBitmap.height - layout.height) / 2 ).toFloat())
0 commit comments