簡(jiǎn)單封裝一個(gè)AlertDialog,調(diào)用只需要兩行代碼

AlertDialog.png

直接上代碼

在創(chuàng)建自定義AlertDialog的時(shí)候需要三個(gè)參數(shù):

Context :上下文
String [] : item的名稱(chēng)
OnClickListener : 監(jiān)聽(tīng)

initDialog是創(chuàng)建之后進(jìn)行實(shí)例化的部分,
在initDialog中需要設(shè)置彈窗的位置,如果是0,則默認(rèn)居中

如果要設(shè)置居頂部或者底部可以參考

    private int GRAVITY_CENTER = Gravity.CENTER;
    private int GRAVITY_BOTTOM = Gravity.BOTTOM;
    private int GRAVITY_TOP = Gravity.TOP;
    private int GRAVITY_RIGHT = Gravity.RIGHT;
    private int GRAVITY_LEFT = Gravity.LEFT;

比如我要設(shè)置右上角的選擇框就是
dialog.initDialog(Gravity.RIGHT|Gravity.TOP);

dialogSize是用來(lái)設(shè)置大小和坐標(biāo)。如果是參數(shù)是0 則默認(rèn)。

在設(shè)置大小的地方

MyAlertDialog

public class MyAlertDialog {
    private Context context;
    private String[] strings;
    AlertDialog dialog;
    DialogInterface.OnClickListener onClick;
    private int GRAVITY_CENTER = Gravity.CENTER;
    private int GRAVITY_BOTTOM = Gravity.BOTTOM;
    private int GRAVITY_TOP = Gravity.TOP;
    private int GRAVITY_RIGHT = Gravity.RIGHT;
    private int GRAVITY_LEFT = Gravity.LEFT;
    private Window window;
    private WindowManager.LayoutParams params;
    public MyAlertDialog(Context context, String[] strings,DialogInterface.OnClickListener onClick) {
        this.context = context;
        this.strings = strings;
        this.onClick = onClick;
    }

    /**
     *
     * @param gravity 窗體位置
     */
    public void initDialog(int gravity) {
        AlertDialog.Builder builder = new AlertDialog.Builder(context);
        builder.setItems(strings, onClick);
        dialog = builder.create();
        dialog.show();

        initGravity(gravity);
    }

    public void initDialog(){
        AlertDialog.Builder builder = new AlertDialog.Builder(context);
        builder.setItems(strings, onClick);
        dialog = builder.create();
        dialog.show();
    }

    /**
     *
     * @param width 寬度
     * @param hight 高度
     * @param x x坐標(biāo)
     * @param y y坐標(biāo)
     */
    public void dialogSize(int width,int hight,int x,int y){
        if (width!=0){
            params.width = UIUtils.dip2px(context, width);
        }
        if (hight!=0){
            params.height=UIUtils.dip2px(context, hight);
        }
        if (x!=0){
            params.x = UIUtils.dip2px(context, x);
        }
        if (y!=0){
            params.y = UIUtils.dip2px(context, y);
        }
        dialog.getWindow().setAttributes(params);
    }


    public void initGravity(int gravity){
        window = dialog.getWindow();
        params = window.getAttributes();
        if (gravity!=0) {
            window.setGravity(gravity);
        }
    }

}

這里使用了一個(gè)工具將dp轉(zhuǎn)化成像素。

UIUtils

public class UIUtils {

    /**
     * 根據(jù)手機(jī)的分辨率從 dp 的單位 轉(zhuǎn)成為 px(像素)
     */
    public static int dip2px(Context context, float dpValue) {
        final float scale = context.getResources().getDisplayMetrics().density;
        return (int) (dpValue * scale + 0.5f);
    }

    /**
     * 根據(jù)手機(jī)的分辨率從 px(像素) 的單位 轉(zhuǎn)成為 dp
     */
    public static int px2dip(Context context, float pxValue) {
        final float scale = context.getResources().getDisplayMetrics().density;
        return (int) (pxValue / scale + 0.5f);
    }

}

使用:

在需要用的地方

MyAlertDialog dialog=new MyAlertDialog(getActivity(), strings,new DialogInterface.OnClickListener() );

dialog.initDialog(0);

如果需要自定義大小和位置
再調(diào)用 dialog.dialogSize();


就這么多內(nèi)容,如果有其他問(wèn)題歡迎留言

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容