.setOffsetY(8)
.calBar(true)
.show();
当想要输入框随软键盘上移时
new BubbleDialog(this)
.addContentView(LayoutInflater.from(this).inflate(R.layout.dialog_view, null))
.setClickedView(mButton12)
.setPosition(mPosition)
.calBar(true)
.softShowUp()
.show();
自定义 BubbleLayout.
BubbleLayout bl = new BubbleLayout(this);
bl.setBubbleColor(Color.BLUE);
bl.setShadowColor(Color.RED);
bl.setLookLength(Util.dpToPx(this, 54));
bl.setLookWidth(Util.dpToPx(this, 48));
new BubbleDialog(this)
.addContentView(LayoutInflater.from(this).inflate(R.layout.dialog_view5, null))
.setClickedView(mButton8)
.setPosition(mPosition)
.calBar(true)
.setBubbleLayout(bl)
.show();
自定义 BubbleDialog,可交互的 BubbleDialog.
<?xml version="1.0" encoding="utf-8"?>1、布局
2、自定义 BubbleDialog
/**
- 自定义可操作性dialog
- Created by JiajiXu on 17-12-11.
*/
public class CustomOperateDialog extends BubbleDialog implements View.OnClickListener {
private ViewHolder mViewHolder;
private OnClickCustomButtonListener mListener;
public CustomOperateDialog(Context context) {
super(context);
calBar(true);
setTransParentBackground();
setPosition(Position.TOP);
View rootView = LayoutInflater.from(context).inflate(R.layout.dialog_view4, null);
mViewHolder = new ViewHolder(rootView);
addContentView(rootView);
mViewHolder.btn13.setOnClickListener(this);
mViewHolder.btn14.setOnClickListener(this);
mViewHolder.btn15.setOnClickListener(this);
}
@Override
public void onClick(View v) {
if (mListener != null)
{
mListener.onClick(((Button)v).getText().toString());
}
}
private static class ViewHolder {
Button btn13, btn14, btn15;
public ViewHolder(View rootView) {
btn13 = rootView.findViewById(R.id.button13);
btn14 = rootView.findViewById(R.id.button14);
btn15 = rootView.findViewById(R.id.button15);
}
}
public void setClickListener(OnClickCustomButtonListener l) {
this.mListener = l;
}
public interface OnClickCustomButtonListener {
void onClick(String str);
}
}
3、显示
CustomOperateDialog codDialog = new CustomOperateDialog(this)
.setPosition(mPosition)
.setClickedView(mButton10);
codDialog.setClickListener(new CustomOperateDialog.OnClickCustomButtonListener()
{
@Override
public void onClick(String str) {
mButton10.setText(“点击了:” + str);
}
});
codDialog.show();
查看关于BappyDialog的使用代码
写法建议
根据@hm该朋友在文章中反馈的多次点击后位置不对的问题,是由于多次对BappyDialog进行了设置导致,所以建议下方写法。(当然如果对重复调用setClickedView()方法设置不同的被点击的控件来更新位置有需要,是需要写在外面的。)
if(mBubbleDialog == null)
{
mBubbleDialog = new BubbleDialog(this)
.addContentView(LayoutInflater.from(this).inflate(R.layout.dialog_view3, null))
.setClickedView(mButton4)
.setPosition(mPosition)
.setOffsetY(8)
.calBar(true);
}
mBubbleDialog.show();
如何使用 HappyBubble-BubbleLayout?
在XML代码中设置属性值
属性参照表
属性 | 值 | 描述 |
---|---|---|
lookAt | left, top, right, bottom | 箭头指向 |
lookLength | dimension | 箭头的长度 |
lookPosition | dimension | 箭头相对于x或y轴的位置 |
lookWidth | dimension | 箭头的宽度 |
bubbleColor | color | 气泡的颜色 |
bubbleRadius | dimension | 气泡四角的圆弧 |
bubblePadding | dimension | 气泡边缘到内容的距离 |
shadowRadius | dimension | 阴影的扩散大小 |
shadowX | dimension | 阴影在x轴方向的偏移 |
shadowY | dimension | 阴影在y轴方向的偏移 |
shadowColor | color | 阴影的颜色 |
xml 例子
<com.xujiaji.happybubble.BubbleLayout
xmlns:app=“http://schemas.android.com/apk/res-auto”
android:id=“@+id/bubbleLayout”
android:layout_width=“match_parent”
android:layout_height=“200dp”
android:layout_margin=“16dp”
app:lookAt=“left”
app:lookLength=“16dp”
app:lookPosition=“20dp”
app:lookWidth=“16dp” />
在java代码中定义属性值。
BubbleLayout 通过“set属性名”方法和invalidate方法来更新BubbleLayout。
mBubbleLayout.setLook(BubbleLayout.Look.LEFT);
查看更多
Demo 下载
[
](https://github.com/xujiaji/HappyBubble/releases)
感谢您的使用、Star与建议!
最后
由于题目很多整理答案的工作量太大,所以仅限于提供知识点,详细的很多问题和参考答案我都整理成了 PDF文件
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!