Happy Guy happybubble( 二 )


文章插图
自定义气泡样式


BubbleLayout bl = new BubbleLayout(this);bl.setBubbleColor(Color.YELLOW);bl.setShadowColor(Color.RED);bl.setLookLength(Util.dpToPx(this, 18));bl.setLookWidth(Util.dpToPx(this, 24));bl.setBubbleRadius(Util.dpToPx(this, 3));new BubbleDialog(this).addContentView(LayoutInflater.from(this).inflate(R.layout.dialog_view5, null)).setClickedView(mButton8).setPosition(mPosition).setBubbleLayout(bl).show();

Happy Guy happybubble

文章插图
交互后变化了
1、布局
【Happy Guy happybubble】

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="160dp"android:layout_height="match_parent"android:orientation="vertical"><Buttonandroid:id="@+id/button13"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="Button1" /><Buttonandroid:id="@+id/button14"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="Button2" /><Buttonandroid:id="@+id/button15"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="Button3" /></LinearLayout>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);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);}@Overridepublic 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(){@Overridepublic void onClick(String str){mButton10.setText("点击了:" + str);}});codDialog.show();TestDialogActivity 代码
根据@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);}mBubbleDialog.show();属性参照表
属性值描述lookAtleft, top, right, bottom箭头指向lookLengthdimension箭头的长度lookPositiondimension箭头相对于x或y轴的位置lookWidthdimension箭头的宽度bubbleColorcolor气泡的颜色bubbleRadiusdimension气泡四角的圆弧bubblePaddingdimension气泡边缘到BubbleLayout边缘的距离shadowRadiusdimension阴影的扩散大小shadowXdimension阴影在x轴方向的偏移shadowYdimension阴影在y轴方向的偏移shadowColorcolor阴影的颜色
xml 例子
<com.xujiaji.happybubble.BubbleLayoutxmlns: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" />


特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。