強大美觀的通用彈窗XPopup,一個就足夠!

XPopup

功能強大,UI簡潔,交互優雅的通用彈窗!能夠替代Dialog,PopupWindow,PopupMenu,BottomSheet等組件,自帶十幾種效果良好的動畫, 支持徹底的UI和動畫自定義!java

編寫本庫的初衷有如下幾點:git

  1. 項目有這樣常見需求:中間和底部彈出甚至可拖拽的對話框,指定位置的PopupMenu或者PopupWindow,指定區域陰影的彈出層效果
  2. 市面上已有的類庫要麼功能不足夠,要麼交互效果不完美,有着廣泛的缺點,就像BottomSheet存在的問題同樣。好比:窗體消失的動畫和背景漸變更畫不一致,窗體消失後半透明背景仍然停留一下子

設計思路:github

綜合常見的彈窗場景,我將其分爲3類:ide

  1. Center類型,就是在中間彈出的彈窗,好比確認和取消彈窗,Loading彈窗
  2. Bottom類型,就是從頁面底部彈出,好比從底部彈出的分享窗體,知乎的從底部彈出的評論列表
  3. Attach類型,就是彈窗的位置須要依附於某個View,就像系統的PopupMenu效果同樣,但自定義性很強

動畫設計:svg

爲了增長交互的趣味性,遵循Material Design,在設計動畫的時候考慮了不少細節,過渡,層級的變化。具體能夠從Demo中感覺。動畫

Gradle

implementation 'com.lxj:xpopup:latest release'
複製代碼

ScreenShot

使用

爲了方便使用,已經內置了幾種常見彈窗的實現:spa

  1. 顯示確認和取消對話框設計

    XPopup.get(getContext()).asConfirm("我是標題", "我是內容",
                            new OnConfirmListener() {
                                @Override
                                public void onConfirm() {
                                   toast("click confirm");
                                }
                            })
                            .show();
    複製代碼
  2. 顯示帶輸入框的確認和取消對話框3d

    XPopup.get(getContext()).asInputConfirm("我是標題", "請輸入內容。",
                            new OnInputConfirmListener() {
                                @Override
                                public void onConfirm(String text) {
                                    toast("input text: " + text);
                                }
                            })
                            .show();
    複製代碼
  3. 顯示中間彈出的列表彈窗code

    XPopup.get(getActivity()).asCenterList("請選擇一項",new String[]{"條目1", "條目2", "條目3", "條目4"},
                            new OnSelectListener() {
                                @Override
                                public void onSelect(int position, String text) {
                                    toast("click "+text);
                                }
                            })
                            .show();
    複製代碼
  4. 顯示中間彈出的加載框

    XPopup.get(getActivity()).asLoading().show();
    複製代碼
  5. 顯示從底部彈出的列表彈窗

    XPopup.get(getActivity()).asBottomList("請選擇一項",new String[]{"條目1", "條目2", "條目3", "條目4","條目5"},
                            new OnSelectListener() {
                                @Override
                                public void onSelect(int position, String text) {
                                    toast("click "+text);
                                }
                            })
                            .show();
    複製代碼
  6. 顯示依附於某個View的彈窗

    XPopup.get(getActivity()).asAttachList(new String[]{"分享", "編輯", "不帶icon"},
                            new int[]{R.mipmap.ic_launcher, R.mipmap.ic_launcher},
                            new OnSelectListener() {
                                @Override
                                public void onSelect(int position, String text) {
                                    toast("click "+text);
                                }
                            })
                            .atView(v)  // 依附於所點擊的View,必須設置
                            .show();
    複製代碼
  7. 關閉彈窗

    XPopup.get(getContext()).dismiss();
    複製代碼
  8. 更多更多的使用方式,請查看Github Readme 說明。

聯繫方式

Github:github.com/li-xiaojun/…

QQ:16167479

這個庫是剛剛發佈,我很須要您的建議或者想法,請不要吝嗇你的需求,狠狠地在Github提issue吧。

相關文章
相關標籤/搜索