private void handleQQFaceAfterMiddleEllipsize(Canvas canvas, int res, Drawable specialDrawable, int widthStart,
int widthEnd, int ellipsizeLine, boolean isFirst, boolean isLast) {
int size = res != 0 ? mQQFaceSize : specialDrawable.getIntrinsicWidth() + (isFirst || isLast ? mSpecialDrawablePadding : mSpecialDrawablePadding * 2);
if (mMiddleEllipsizeWidthRecord == -1) {
onRealDrawQQFace(canvas, res, specialDrawable, ellipsizeLine - mLastNeedStopLineRecord, widthStart, widthEnd, isFirst, isLast);
return;
}
int endLines = mNeedDrawLine - ellipsizeLine;
int borrowWidth = (widthEnd - mMiddleEllipsizeWidthRecord) - mCurrentCalWidth;
int needStopLine = borrowWidth > 0 ? mLines - endLines - 1 : mLines - endLines;
int needStopWidth = (borrowWidth > 0 ? widthEnd - borrowWidth :
mMiddleEllipsizeWidthRecord - (widthEnd - mCurrentCalWidth)) +
QMUIDisplayHelper.dp2px(getContext(), 5);
if (mCurrentDrawLine < needStopLine) {
if (size + mCurrentDrawUsedWidth > widthEnd) {
toNewDrawLine(widthStart);
onDrawQQFace(canvas, res, specialDrawable, widthStart, widthEnd, isFirst, isLast);
} else {
mCurrentDrawUsedWidth += size;
}
} else if (mCurrentDrawLine == needStopLine) {
if (size + mCurrentDrawUsedWidth < needStopWidth) {
mCurrentDrawUsedWidth += size;
} else {
mCurrentDrawUsedWidth = mMiddleEllipsizeWidthRecord;
mMiddleEllipsizeWidthRecord = -1;
mLastNeedStopLineRecord = needStopLine;
}
} else {
onRealDrawQQFace(canvas, res, specialDrawable, ellipsizeLine - needStopLine, widthStart, widthEnd, isFirst, isLast);
}
}
QMUIQQFaceView.java 文件源码
java
阅读 34
收藏 0
点赞 0
评论 0
项目:QMUI_Android
作者:
评论列表
文章目录