admin 管理员组文章数量: 887007
Android直播间上下,Android直播间消息流图文混排
刚收到需求无脑想了想TextView加上ImageSpan就可以完美解决这个问题,做的时候发现不对,如果用户等级有100级,就要放置最少100张图片到APK里面,如果区分男女不同级别展示背景色不一致或者样式不一致,那就是灾难。
怎么办?
如果用多个View来实现,复杂度直线上升,单行文本没有问题,多行文本时候就是灾难,需要考虑的东西太多。
这时候想到之前自定义ImageSpan,让图片和文本对齐时候做的一些小操作,里面有Canvas对象,灵光乍现,直接在ImageSpan的onDraw方法里面绘制要显示的数字就可以了。
上代码:
···
@Override
public void draw(@NonNull Canvas canvas, CharSequence text,
int start, int end, float x,
int top, int y, int bottom, @NonNull Paint paint) {
// image to draw
Drawable b = getDrawable();
int halfWidth = (int) (b.getIntrinsicWidth()/2f);
// font metrics of text to be replaced
Paint.FontMetricsInt fm = paint.getFontMetricsInt();
int transY = (y + fm.descent + y + fm.ascent) / 2
- b.getBounds().bottom / 2;
canvas.save();
canvas.translate(x, transY);
b.draw(canvas);
canvas.restore();
canvas.drawText(level, x + halfWidth, y, levelTextPaint);
}
···
基本就可以解决上述问题。
本文标签: Android直播间上下 Android直播间消息流图文混排
版权声明:本文标题:Android直播间上下,Android直播间消息流图文混排 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1732354495h1534040.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论