StaticTextView ---TextView优化

StaticTextView —TextView优化

最近项目在做RecycerView的相关优化工作,发现系统提供的TextView效率不够高,setText方法每次总会消耗大概3-5ms左右,TextView作为很多view的基类,处理了很多事情比如文字变化的监听等,大大影响了bindViewHolder的时间,所以自定义了一个功能简化的TextView。

由于不需要其它特殊的功能支持,比如富文本等等,只需要提供简单的文字展示,所以使用StaticLayout去实现文字的layout控制,TextView内部有DynamicLayout、BoringLayout、StaticLayout三种,分别支持动态文本,单行文本,多行文本。

因为需要适配低版本android,StaticLayout在低版本安卓不支持builder创建,没有maxlines,ellipse相关属性,所以通过代码去实现maxline效果,对text做截取

public class StaticTextView extends View {
   

    //行文本记录集
    private List<LineText> lineTexts = new ArrayList<>();
    //最大显示文本行数
    private int mMaxLines = 2;
    //最大显示文本行对应的本视图高度
    private int maxLinesHeight;
    //当前文本
    private String mText;

    private boolean needMeasure = true;

    private TextPaint mTextPaint;

    public StaticTextView(Context context) {
   
        this(context, null);
    }

    public StaticTextView(Context context, AttributeSet attrs) {
   
        this(context, attrs, 0);
    }

    public StaticTextView(Context context, AttributeSet attrs, int defStyleAttr) {
   
        super(context, attrs, defStyleAttr);
        initFontSize();
    }

    private void initFontSize() {
   
        if (isInEditMode()) {
   
            return;
        }
        mTextPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG);
        mTextPaint.setTypeface(Typeface.create("sans-serif-medium", Typeface.NORMAL));
        mTextPaint.density = getContext().getResources().getDisplayMetrics().density;
        mTextPaint.setColor(Color.BLACK);
        mTextPaint.setStyle(Paint.Style.FILL_AND_STROKE);
        mTextPaint.setTextSize(UIUtils.sp2px(getContext(), 18f));
    }



    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值