组件介绍
这个组件简便了android开中使用PopupWindow,不需要写更多繁琐的代码,即可实现具有自定义动画、显示位置的PopupWindow。
动态图
使用场景
android中所有的弹窗,如输入密码框、列表选项等都可以使用,目前有两种类型的PopupWindow样式支持。
一种是气泡的:
一种是普通样式的:
如何使用
第一种:气泡样式
View inflate = View.inflate(mContext, R.layout.dialog_anim_popup_bubble_text, null);
TextView tv = (TextView) inflate.findViewById(R.id.tv_bubble);
BubblePopup bubblePopup = new BubblePopup(mContext, inflate);
tv.setText("最美的不是下雨天,是曾与你躲过雨的屋檐~");
bubblePopup.anchorView(mTvTopLeft)
.gravity(Gravity.BOTTOM)
.show();
tv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
T.showShort(mContext, "tv_bubble");
}
});
R.layout.dialog_anim_popup_bubble_text布局文件:
<?xml version="1.0" encoding="utf-8"?>
<TextView
android:id="@+id/tv_bubble"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="18dp"
android:text="最美的不是下雨天~"
android:textColor="#ffffff"
android:textSize="15sp"/>
第二步:普通样式
private SimpleCustomPop mQuickCustomPopup;
mQuickCustomPopup = new SimpleCustomPop(mContext);
mQuickCustomPopup
.anchorView(mTvTopLeft)
.gravity(Gravity.BOTTOM)
.offset(0, 0)
.showAnim(new BounceTopEnter())
.dismissAnim(new SlideTopExit())
.dimEnabled(false)
.show();
class SimpleCustomPop extends BasePopup<SimpleCustomPop> {
@Bind(R.id.tv_item_1)
TextView mTvItem1;
@Bind(R.id.tv_item_2)
TextView mTvItem2;
@Bind(R.id.tv_item_3)
TextView mTvItem3;
@Bind(R.id.tv_item_4)
TextView mTvItem4;
public SimpleCustomPop(Context context) {
super(context);
// setCanceledOnTouchOutside(false);
}
@Override
public View onCreatePopupView() {
View inflate = View.inflate(mContext, R.layout.dialog_anim_popup_custom, null);
ButterKnife.bind(this, inflate);
return inflate;
}
@Override
public void setUiBeforShow() {
mTvItem1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
T.showShort(mContext, mTvItem1.getText());
}
});
mTvItem2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
T.showShort(mContext, mTvItem2.getText());
}
});
mTvItem3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
T.showShort(mContext, mTvItem3.getText());
}
});
mTvItem4.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
T.showShort(mContext, mTvItem4.getText());
}
});
}
}
R.layout.dialog_anim_popup_custom布局文件:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<LinearLayout
android:id="@+id/ll_content"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#ffffff"
android:orientation="vertical"
android:paddingLeft="15dp"
android:paddingRight="15dp">
<TextView
android:id="@+id/tv_item_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="15dp"
android:text="标记已读"
android:textColor="#666666"
android:textSize="15sp"/>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#eeeeee"/>
<TextView
android:id="@+id/tv_item_2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="15dp"
android:text="全部标记已读"
android:textColor="#666666"
android:textSize="15sp"/>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#eeeeee"/>
<TextView
android:id="@+id/tv_item_3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="15dp"
android:text="标签"
android:textColor="#666666"
android:textSize="15sp"/>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#eeeeee"/>
<TextView
android:id="@+id/tv_item_4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="15dp"
android:text="添加星标"
android:textColor="#666666"
android:textSize="15sp"/>
</LinearLayout>
</RelativeLayout>
注意事项
使用这个通用PopupWindow需要依赖FlycoDialog_Lib.aar,Popupwindow中还有一些其他的设置可以控制,如果要Popupwindow进出场动画,需要继承BaseAnimatorSet抽象类,重写
void setAnimation(View view)
方法即可。
版本控制
版本号 | 更新内容 | 修改人 | 修改时间 |
---|---|---|---|
1.0 | 初次发布 | lucky_bear | 2017/7/13 |
项目地址
所在文件夹 | demo位置 |
---|---|
widget.FlycoDialog | com.qr.demo.widget.popupwindow.PopupActivity |