android4.4 卡顿,Android4.4 TextView跑马灯卡顿问题

博主在解决Android系统中TextView添加跑马灯后UI卡顿的难题时,深入分析了TextView的源码,并进行了相关测试。发现卡顿与TextView左右的阴影效果有关,通过注释掉设置阴影的代码,虽然不是根本解决方案,但能有效优化问题。在Android 4.4系统上,UI绘制相比5.0以上版本显得更卡,具体原因未深究。欢迎有研究的大神分享更多细节。
摘要由CSDN通过智能技术生成

前段时间在维护Android系统的时候,遇到TextView,一旦添加了跑马灯后,UI就出现卡顿的情况。针对这个情况,对Android TextView的源码进行了一系列的分析和测试,最终找到了原因,如下:

在构造函数里面的一段代码

修改前:

public TextView(Context context, AttributeSet attrs, int defStyle) {

......

switch (ellipsize) {

case 1:

setEllipsize(TextUtils.TruncateAt.START);

break;

case 2:

setEllipsize(TextUtils.TruncateAt.MIDDLE);

break;

case 3:

setEllipsize(TextUtils.TruncateAt.END);

break;

case 4:

if (ViewConfiguration.get(context).isFadingMarqueeEnabled()) {

setHorizontalFadingEdgeEnabled(true);

mMarqueeFadeMode = MARQUEE_FADE_NORMAL;

} else {

setHorizontalFadingEdgeEnabled(false);

mMarqueeFadeMode = MARQUEE_FADE_SWITCH_SHOW_ELLIPSIS;

}

setEllipsize(TextUtils.TruncateAt.MARQUEE);

break;

}

......

}

修改后:

public TextView(Context context, AttributeSet attrs, int defStyle) {

......

switch (ellipsize) {

case 1:

setEllipsize(TextUtils.TruncateAt.START);

break;

case 2:

setEllipsize(TextUtils.TruncateAt.MIDDLE);

break;

case 3:

setEllipsize(TextUtils.TruncateAt.END);

break;

case 4:

/*if (ViewConfiguration.get(context).isFadingMarqueeEnabled()) {

setHorizontalFadingEdgeEnabled(true);

mMarqueeFadeMode = MARQUEE_FADE_NORMAL;

} else {

setHorizontalFadingEdgeEnabled(false);

mMarqueeFadeMode = MARQUEE_FADE_SWITCH_SHOW_ELLIPSIS;

}*/

setEllipsize(TextUtils.TruncateAt.MARQUEE);

break;

}

......

}

总结:

注释掉的地方的功能是TextView左右的阴影部分,注释掉后,跑马灯左右没有阴影效果,所以也不算是根治此问题,只能够说变相的优化了。但是我对比过要不要阴影的效果,不特别去注意的话是看不出有什么不同的。Android4.4绘制UI感觉是有些问问题,在Server使用WindowManager画UI的时候,明显比Android5.0以上卡很多,具体原因没有过多去跟了,有继续往下跟的大神,找到原因了的话,可以分享一下,感谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值