BubbleView源码解析
做IM应用时, 聊天界面的消息一般都有一个背景, 我们叫它为"气泡",
一般这个气泡都使用9patch图片, 但是还有一种方法就是 "自定义View".
下面就来看看github上的一个开源项目吧
BubbleView地址: https://github.com/lguipeng/BubbleView
作者定义了三个BubbleView分别为: BubbleImageView,BubbleTextVew,BubbleLinearLayout
当然最主要的功能类是: BubbleDrawable
关于这些类的用法 ==> 请看这里
效果图如下:
一. 类结构
下面是BubbleView的整体类图:
BubbleImageView, BubbleTextView, BubbleLinearLayoutView都引用了一个BubbleDrawable的实例,
都是通过BubbleDrawable的实例实现"气泡" 功能的, 但是各有不同;
二. BubbleTextView
BubbleTextView重写了onDraw()方法
@Override
protected void onDraw(Canvas canvas) {
if (bubbleDrawable != null)
bubbleDrawable.draw(canvas);
super.onDraw(canvas);
}
当然在onDraw方法之前(会收集创建bubbleDrawable对象所需的相关信息并实例化一个对象)会生成bubbleDrawable对象
此方法会先绘制背景, 即气泡背景, 然后调用父类的onDraw()绘制文本
三. BubbleLinearLayoutView
BubbleLinearLayout则重写了onSizeChanged()方法, 在此方法中收集bubbleDrawable对象所需的相关信息, 并实例化, 然后将bubbleDrawable设置为背景
代码如下:
@Override
</