MultipleVerticalTextView.java 文件源码

java
阅读 18 收藏 0 点赞 0 评论 0

项目:Diary 作者:
private void CalculateText() {
        paint.setTextSize(mFontSize);
        //获得字宽
        if (mLineWidth == 0) {
            paint.getTextWidths("正", widths);//获取单个汉字的宽度
            paint.getTextWidths(" ", space);
//            mLineWidth = (int) Math.ceil((widths[0] + space[0]) * 1.1 + 2);
            mLineWidth = (int) Math.ceil((widths[0] + space[0]) * 1.1 + 2)  //获得字体宽度
                    + DisplayUtil.dp2px(getContext(), 2);                  //增加间距
        }

        FontMetrics fm = paint.getFontMetrics();
//        mFontHeight = (int) (Math.ceil(fm.descent - fm.top) * 0.9);// 获得字体高度
        mFontHeight = (int) (Math.ceil(fm.descent - fm.ascent)) // 获得字体高度
                + DisplayUtil.dp2px(getContext(), 2);          //增加间距
        //计算文字行数
        mRealLine = 0;
        for (int i = 0; i < this.TextLength; i++) {
            ch = this.text.charAt(i);
            if (ch == '\n') {
                mRealLine++;// 真实的行数加一
                h = 0;
            } else {
                h += mFontHeight;
                if (h > this.mTextHeight) {
                    mRealLine++;// 真实的行数加一
                    i--;
                    h = 0;
                } else {
                    if (i == this.TextLength - 1) {
                        mRealLine++;// 真实的行数加一
                    }
                }
            }
        }
        mRealLine += 1;//额外增加一行
        mTextWidth = mLineWidth * mRealLine;//计算文字总宽度
        measure(mTextWidth, getHeight());//重新调整大小
        layout(getLeft(), getTop(), getLeft() + mTextWidth, getBottom());//重新绘制容器
    }
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号