通用PopupWindow

组件介绍

这个组件简便了android开中使用PopupWindow,不需要写更多繁琐的代码,即可实现具有自定义动画、显示位置的PopupWindow。

动态图

通用PopupWindow_第1张图片
pop.gif

使用场景

android中所有的弹窗,如输入密码框、列表选项等都可以使用,目前有两种类型的PopupWindow样式支持。

一种是气泡的:

通用PopupWindow_第2张图片
1.png

一种是普通样式的:

通用PopupWindow_第3张图片
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("最美的不是下雨天,是曾与你躲过雨的屋檐~");
        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布局文件:



第二步:普通样式

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 {
        @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布局文件:



    
        
        
        
        
        
        
        
    

注意事项

使用这个通用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

你可能感兴趣的:(通用PopupWindow)