組件介紹
這個(gè)組件簡(jiǎn)便了android開(kāi)中使用PopupWindow,不需要寫(xiě)更多繁瑣的代碼,即可實(shí)現(xiàn)具有自定義動(dòng)畫(huà)、顯示位置的PopupWindow。
動(dòng)態(tài)圖
pop.gif
使用場(chǎng)景
android中所有的彈窗,如輸入密碼框、列表選項(xiàng)等都可以使用,目前有兩種類型的PopupWindow樣式支持。
一種是氣泡的:
1.png
一種是普通樣式的:
2.png
如何使用
第一種:氣泡樣式
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("最美的不是下雨天,是曾與你躲過(guò)雨的屋檐~");
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="標(biāo)記已讀"
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="全部標(biāo)記已讀"
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="標(biāo)簽"
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="添加星標(biāo)"
android:textColor="#666666"
android:textSize="15sp"/>
</LinearLayout>
</RelativeLayout>
注意事項(xiàng)
使用這個(gè)通用PopupWindow需要依賴FlycoDialog_Lib.aar,Popupwindow中還有一些其他的設(shè)置可以控制,如果要Popupwindow進(jìn)出場(chǎng)動(dòng)畫(huà),需要繼承BaseAnimatorSet抽象類,重寫(xiě)
void setAnimation(View view)
方法即可。
版本控制
版本號(hào) | 更新內(nèi)容 | 修改人 | 修改時(shí)間 |
---|---|---|---|
1.0 | 初次發(fā)布 | lucky_bear | 2017/7/13 |
項(xiàng)目地址
所在文件夾 | demo位置 |
---|---|
widget.FlycoDialog | com.qr.demo.widget.popupwindow.PopupActivity |