自定義彈窗--統(tǒng)一app中的彈窗

目的:為了app中有統(tǒng)一的彈窗顯示
1.代碼

  public class CustomDialog extends AlertDialog{
    private Button mBtnOk;
    private Button mBtnCancel;
    private TextView tvTitle;
    private TextView tvContent;
    protected CustomDialog(Context context) {
        super(context);
    }

    protected CustomDialog(Context context, boolean cancelable, OnCancelListener cancelListener) {
        super(context, cancelable, cancelListener);
    }

    protected CustomDialog(Context context, int themeResId) {
        super(context, themeResId);
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if(getWindow()!=null){
            getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
        }
        setContentView(R.layout.customdialog);
        initView();
    }
    private void initView() {
        mBtnOk = (Button) findViewById(R.id.ok);
        mBtnCancel = (Button) findViewById(R.id.cancel);
        tvTitle = (TextView) findViewById(R.id.dialog_title);
        tvContent = (TextView) findViewById(R.id.dialog_content);

    }
    public void setTexts(CharSequence title,CharSequence content,CharSequence ok,CharSequence cancle){
        //標(biāo)題和內(nèi)容有一個(gè)為空,則在內(nèi)容區(qū)顯示
        if(TextUtils.isEmpty(title)||TextUtils.isEmpty(content)){
            tvTitle.setVisibility(View.GONE);
            tvContent.setText(TextUtils.isEmpty(title)?content:title);
        }else{
            tvTitle.setText(title);
            tvContent.setText(content);
        }
        if(TextUtils.isEmpty(ok)||TextUtils.isEmpty(cancle)){
            mBtnCancel.setVisibility(View.GONE);
            mBtnOk.setText(TextUtils.isEmpty(ok)?cancle:ok);
        }else{
            mBtnOk.setText(ok);
            mBtnCancel.setText(cancle);
        }
    }
    public void setListeners(final OnClickListener positiveListener,
                             final OnClickListener negativeListener){
            mBtnOk.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if(positiveListener!=null) {
                        dismiss();
                        positiveListener.onClick(CustomDialog.this, 1);
                    }else{
                        dismiss();
                    }
                }
            });
            mBtnCancel.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if (negativeListener != null) {
                        negativeListener.onClick(CustomDialog.this,2);
                        dismiss();
                    }else{
                        dismiss();
                    }
                }
            });
    }
    public void setCanOutSide(boolean isCanTouchOutSize){
        setCanceledOnTouchOutside(isCanTouchOutSize);
    }
    public void setKeyBack(final boolean flag){
        setOnKeyListener(new OnKeyListener() {
            @Override
            public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
                return flag;
            }
        });
    }

}

2.布局文件

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@android:color/transparent">

    <LinearLayout
        android:layout_width="270dp"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:background="@drawable/update_backgroud"
        android:gravity="center_horizontal"
        android:minHeight="180dp"
        android:orientation="vertical"
        android:visibility="visible">
        <!--標(biāo)題-->
        <TextView
            android:id="@+id/dialog_title"
            android:layout_width="match_parent"
            android:layout_height="45dp"
            android:gravity="center"
            android:visibility="visible"
            android:textSize="17sp"
            android:textColor="@android:color/holo_orange_light" />

        <!--內(nèi)容-->
        <TextView
            android:id="@+id/dialog_content"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:gravity="center"
            android:padding="22dp"
            android:textColor="@android:color/black"
            android:textSize="15sp" />

        <View
            android:layout_width="match_parent"
            android:layout_height="1dp"
            android:background="@android:color/darker_gray" />

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="45dp"
            android:orientation="horizontal"
            android:showDividers="middle"
            android:divider="@drawable/divier">
            <Button
                android:id="@+id/cancel"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:background="@null"
                android:textSize="17sp"
                android:visibility="visible"
                android:textColor="#dedede" />
            <Button
                android:id="@+id/ok"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:background="@null"
                android:textSize="17sp"
                android:textColor="@android:color/holo_orange_dark" />
        </LinearLayout>
    </LinearLayout>
</RelativeLayout>

3.封裝使用

public class TipsUtils {
    /**
     *
     * @param activity
     * @param title 標(biāo)題
     * @param content 內(nèi)容
     * @param positiveListener 確定按鈕點(diǎn)擊監(jiān)聽(tīng)
     * @param negativeListener 取消按鈕點(diǎn)擊監(jiān)聽(tīng)
     * @param positiveText 確定按鈕
     * @param negativeText 取消按鈕
     * @param touchOutside 點(diǎn)擊彈窗外部彈窗是否消失
     */
    public static void showDialog(Activity activity, CharSequence title
            , CharSequence content, OnClickListener positiveListener,
                                 OnClickListener negativeListener,
                                  CharSequence positiveText, CharSequence negativeText,
                                  boolean touchOutside) {
        if (activity != null && !activity.isFinishing()) {
            CustomDialog dialog = new CustomDialog(activity, touchOutside, null);
            dialog.show();
            dialog.setTexts(title, content, positiveText, negativeText);
            dialog.setListeners(positiveListener, negativeListener);
            dialog.setCanOutSide(touchOutside);
            if(!touchOutside) {
                dialog.setCancelable(touchOutside);
            }
        }
    }

    /**
     * 只展示內(nèi)容班巩,沒(méi)有標(biāo)題,只有一個(gè)確定按鈕
     * 點(diǎn)擊外部彈窗可消失
     * @param content
     */
    public static void showDialog(Activity activity,CharSequence content){
        showDialog(activity,"",content,null,null,"確定","",true);
    }

    /**
     * 只展示內(nèi)容和標(biāo)題,只有一個(gè)確定按鈕
     * @param activity
     * @param titile
     * @param content
     */
    public static void showDialog(Activity activity,CharSequence titile,CharSequence content){
        showDialog(activity,titile,content,null,null,"確定","",true);
    }

    /**
     *
     * @param activity
     * @param content
     * @param close 關(guān)閉當(dāng)前activity
     */
    public static void showDialog(final Activity activity, CharSequence content, final boolean close){
        showDialog(activity, "", content, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                if(close) {
                    activity.finish();
                }
            }
        }, null, "確定", "", true);
    }
   
   TipsUtils.showDialog(this,"內(nèi)容");
   TipsUtils.showDialog(this,"標(biāo)題","內(nèi)容");
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末死宣,一起剝皮案震驚了整個(gè)濱河市怎栽,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖谋逻,帶你破解...
    沈念sama閱讀 219,539評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件殷绍,死亡現(xiàn)場(chǎng)離奇詭異染苛,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)主到,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評(píng)論 3 396
  • 文/潘曉璐 我一進(jìn)店門茶行,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人登钥,你說(shuō)我怎么就攤上這事畔师。” “怎么了牧牢?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,871評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵看锉,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我塔鳍,道長(zhǎng)伯铣,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,963評(píng)論 1 295
  • 正文 為了忘掉前任轮纫,我火速辦了婚禮腔寡,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蜡感。我一直安慰自己蹬蚁,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,984評(píng)論 6 393
  • 文/花漫 我一把揭開(kāi)白布郑兴。 她就那樣靜靜地躺著犀斋,像睡著了一般。 火紅的嫁衣襯著肌膚如雪情连。 梳的紋絲不亂的頭發(fā)上叽粹,一...
    開(kāi)封第一講書(shū)人閱讀 51,763評(píng)論 1 307
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼虫几。 笑死锤灿,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的辆脸。 我是一名探鬼主播但校,決...
    沈念sama閱讀 40,468評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼啡氢!你這毒婦竟也來(lái)了状囱?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,357評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤倘是,失蹤者是張志新(化名)和其女友劉穎亭枷,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體搀崭,經(jīng)...
    沈念sama閱讀 45,850評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡叨粘,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,002評(píng)論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了瘤睹。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片升敲。...
    茶點(diǎn)故事閱讀 40,144評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖默蚌,靈堂內(nèi)的尸體忽然破棺而出冻晤,到底是詐尸還是另有隱情,我是刑警寧澤绸吸,帶...
    沈念sama閱讀 35,823評(píng)論 5 346
  • 正文 年R本政府宣布鼻弧,位于F島的核電站,受9級(jí)特大地震影響锦茁,放射性物質(zhì)發(fā)生泄漏攘轩。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,483評(píng)論 3 331
  • 文/蒙蒙 一码俩、第九天 我趴在偏房一處隱蔽的房頂上張望度帮。 院中可真熱鬧,春花似錦稿存、人聲如沸笨篷。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,026評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)率翅。三九已至,卻和暖如春袖迎,著一層夾襖步出監(jiān)牢的瞬間冕臭,已是汗流浹背腺晾。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,150評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留辜贵,地道東北人悯蝉。 一個(gè)月前我還...
    沈念sama閱讀 48,415評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像托慨,于是被迫代替她去往敵國(guó)和親鼻由。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,092評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,190評(píng)論 25 707
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫(kù)榴芳、插件嗡靡、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,109評(píng)論 4 62
  • 人生是個(gè)圈,兜兜轉(zhuǎn)轉(zhuǎn)最后還是要面對(duì)自己窟感。 不太清楚有多少人和我有著同樣的經(jīng)歷,上學(xué)的時(shí)候身邊的人都在抱怨自己所學(xué)的...
    說(shuō)書(shū)客閱讀 269評(píng)論 5 1
  • 純屬夢(mèng)境歉井,第一次寫作柿祈,文筆不好,敬請(qǐng)見(jiàn)諒哩至。
    Mttttt閱讀 969評(píng)論 0 0
  • 插上耳機(jī)我假意在聽(tīng)歌躏嚎, 列車滾滾的輪音穿不透玻璃, 我的目的不是目的地菩貌, 中途的某站已經(jīng)寫入我心里卢佣, 天暗了心更明...
    古者閱讀 431評(píng)論 0 1