美文网首页
Android4.4 TextView跑马灯卡顿问题

Android4.4 TextView跑马灯卡顿问题

作者: 天竺168 | 来源:发表于2017-11-20 15:32 被阅读0次

前段时间在维护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以上卡很多,具体原因没有过多去跟了,有继续往下跟的大神,找到原因了的话,可以分享一下,感谢!

相关文章

网友评论

      本文标题:Android4.4 TextView跑马灯卡顿问题

      本文链接:https://www.haomeiwen.com/subject/xduvvxtx.html