美文网首页
全局遮挡弹窗(自定义)

全局遮挡弹窗(自定义)

作者: zhengLH | 来源:发表于2018-09-10 12:14 被阅读6次

【1】Dialog

 package com.starbaba.dialog;

 import android.app.Dialog;
 import android.content.Context;
 import android.content.DialogInterface;
 import android.graphics.Bitmap;
 import android.graphics.BitmapFactory;
 import android.text.TextUtils;
 import android.view.Gravity;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.Button;
 import android.widget.ImageView;
 import android.widget.LinearLayout;
 import android.widget.TextView;

import com.bumptech.glide.Glide;
import com.loanhome.yunhuahua_driver.R;
import com.vest.util.ImageUtil;

import java.util.logging.Handler;

   /**
 * @Author Lee
 * @Time 2018/7/12
 * @Theme 全局遮挡对话框(支持 建造者模式 链式调用)
 */

   public class GlobalDialog extends Dialog {

private static Button btn2;
private static Button btn1;

public GlobalDialog(Context context) {
    super(context);
}

public GlobalDialog(Context context, int theme) {
    super(context, theme);
}

public static class Builder {

    private Context context;
    private String title;
    private String message;
    private int closeBottom = View.GONE;
    private int closeTop = View.GONE;
    private String positiveButtonText;
    private String negativeButtonText;
    private View contentView;
    private OnClickListener positiveButtonClickListener;
    private OnClickListener negativeButtonClickListener;
    private String imageurl;
    private int gravity;
    private int color2, color1;  // 按钮文本颜色
    private int bgColor1, bgColor2;   // 背景颜色
    private int hlightColor1, hlightColor2;  // 点击时背景颜色
    private float picScale;
    private Bitmap bitmap;
    private String picUrl;

    public Builder(Context context) {
        this.context = context;
    }

    public Builder setCloseBottom(int close) {
        this.closeBottom = close;
        return this;
    }

    public Builder setCloseTop(int close){
        this.closeTop = close;
        return this;
    }

    public Builder setMessage(String message) {
        this.message = message;
        return this;
    }

    /**
     * Set the Dialog message from resource
     *
     * @return
     */
    public Builder setMessage(int message) {
        this.message = (String) context.getText(message);
        return this;
    }

    /**
     * Set the Dialog title from resource
     *
     * @param title
     * @return
     */
    public Builder setTitle(int title) {
        this.title = (String) context.getText(title);
        return this;
    }

    /**
     * Set the Dialog title from String
     *
     * @param title
     * @return
     */

    public Builder setTitle(String title) {
        this.title = title;
        return this;
    }

    public Builder setContentView(View v) {
        this.contentView = v;
        return this;
    }

    /**
     * Set the Dialog pic from String
     *
     * @param
     * @return
     */

    public Builder setImage(Bitmap bitmap1 , float scale){
        bitmap = null;
        this.bitmap = bitmap1;
        this.picScale = scale;
        return this;
    }

    public Builder setTitleGravity(int gravity){
        this.gravity  = gravity;
        return  this;
    }

    /**
     *  设置 按钮 文本颜色
     * @param color
     * @return
     */

    public Builder setBtn2TextColor(int color){
        this.color2 = color;
        return this;
    }

    public Builder setBtn1TextColor(int color){
        this.color1 = color;
        return this;
    }

    /**
     *  设置 按钮 背景颜色
     * @param color
     * @return
     */
    public Builder setBtn1BgColor(int color) {
        this.bgColor1 = color;
        return this;
    }


    public Builder setBtn2BgColor(int color) {
        this.bgColor2 = color;
        return this;
    }


    /**
     * Set the positive button resource and it's listener
     *
     * @param positiveButtonText
     * @return
     */
    public Builder setPositiveButton(int positiveButtonText,
                                     OnClickListener listener) {
        this.positiveButtonText = (String) context
                .getText(positiveButtonText);
        this.positiveButtonClickListener = listener;
        return this;
    }

    public Builder setPositiveButton(String positiveButtonText,
                                     OnClickListener listener) {
        this.positiveButtonText = positiveButtonText;
        this.positiveButtonClickListener = listener;
        return this;
    }

    public Builder setNegativeButton(int negativeButtonText,
                                     OnClickListener listener) {
        this.negativeButtonText = (String) context
                .getText(negativeButtonText);
        this.negativeButtonClickListener = listener;
        return this;
    }

    public Builder setNegativeButton(String negativeButtonText,
                                     OnClickListener listener) {
        this.negativeButtonText = negativeButtonText;
        this.negativeButtonClickListener = listener;
        return this;
    }

    /**
     * 构建 自定义对话框
     *
     * @return
     */
    public GlobalDialog create() {

        LayoutInflater inflater = (LayoutInflater) context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        final GlobalDialog dialog = new GlobalDialog(context, R.style.Dialog);
        View layout = inflater.inflate(R.layout.layout_global_dialog, null);
        // 对话框 填充布局
        dialog.addContentView(layout, new ViewGroup.LayoutParams(
                ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));

        // 设置 标题
        if( !TextUtils.isEmpty(title)){

            TextView tvtitle = layout.findViewById(R.id.title);
            tvtitle.setText(title);

            if(gravity == Gravity.LEFT){
                tvtitle.setGravity(Gravity.LEFT);

            }else if(gravity == Gravity.CENTER){
                tvtitle.setGravity(Gravity.CENTER);
            }

        }

        // 设置 内容
        if (message != null) {
            ((TextView) layout.findViewById(R.id.tv_content)).setText(message);
        }

        // 设置 图片
            final ImageView mIvPic = layout.findViewById(R.id.iv_pic);
            mIvPic.post(new Runnable() {   // 否则 拿不到 图片的宽高
                @Override
                public void run() {

                    int ivWidth = mIvPic.getWidth();
                    // 动态 设置ImageView控件 的宽高
                    ViewGroup.LayoutParams params = mIvPic.getLayoutParams();
                    params.height = (int)(ivWidth/picScale);
                    params.width = ivWidth;
                    mIvPic.setLayoutParams(params);

                }
            });


        mIvPic.setImageBitmap(bitmap);


        // 设置 关闭按钮显示
        ImageView btn_close_bottom = layout.findViewById(R.id.btn_close_bottom);
        btn_close_bottom.setVisibility(closeBottom);

        ImageView btn_close_top = layout.findViewById(R.id.btn_close_top);
        btn_close_top.setVisibility(closeTop);

        btn_close_bottom.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                dialog.dismiss();
            }
        });
        btn_close_top.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                dialog.dismiss();
            }
        });


        btn2 = layout.findViewById(R.id.btn2);
        btn1 = layout.findViewById(R.id.btn1);

        // 设置 确定 按钮
        if ( !TextUtils.isEmpty(positiveButtonText)) {

            btn2.setText(positiveButtonText);
            btn2.setTextColor(color2);
            btn2.setBackgroundColor(bgColor2);
            if (positiveButtonClickListener != null) {
                btn2.setOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View v) {

                                positiveButtonClickListener.onClick(dialog,
                                        DialogInterface.BUTTON_POSITIVE);
                            }
                        });
            }
        } else {
            btn2.setVisibility(View.GONE);
        }

        // 设置 取消 按钮
        if ( ! TextUtils.isEmpty(negativeButtonText)) {

            btn1.setText(negativeButtonText);
            btn1.setTextColor(color1);
            btn1.setBackgroundColor(bgColor1);
            if (negativeButtonClickListener != null) {
               btn1.setOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View v) {
                                negativeButtonClickListener.onClick(dialog,
                                        DialogInterface.BUTTON_NEGATIVE);
                            }
                        });
            }
        } else {
            btn1.setVisibility(View.GONE);
        }
        dialog.setContentView(layout);
        return dialog;
    }
   }
}

【布局文件】

  <?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:background="@android:color/transparent"
         android:clickable="true"
         android:orientation="vertical"
         android:padding="12dp">

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:orientation="vertical">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:orientation="vertical">

        <RelativeLayout
            android:padding="10dp"
            android:gravity="center_vertical"
            android:background="@drawable/shape_global_dialog_white_circle_top"
            android:layout_width="match_parent"
            android:layout_height="55dp">

        <TextView
            android:id="@+id/title"
            android:layout_marginLeft="10dp"
            android:layout_width="match_parent"
            android:layout_height="72dp"
            android:gravity="left"
            android:text="怎么翻牌次数?"
            android:paddingRight="40dp"
            android:singleLine="true"
            android:lines="1"
            android:textColor="@color/black"
            android:textSize="22sp"
            android:textStyle="bold"
            android:visibility="visible"/>

        <ImageView
            android:id="@+id/btn_close_top"
            android:layout_width="36dp"
            android:layout_height="36dp"
            android:layout_alignParentRight="true"
            android:src="@drawable/global_popup_dismiss_btn_top"
            android:visibility="visible"/>

        </RelativeLayout>

        <View
            android:paddingRight="20dp"
            android:paddingLeft="20dp"
            style="@style/custom_horizonal_splite"/>

        <LinearLayout
            android:orientation="vertical"
            android:id="@+id/content"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="#fff"
            android:gravity="center"
            android:paddingLeft="10dp"
            android:paddingRight="10dp">

            <ScrollView
                android:id="@+id/sv_content"
                android:scrollbars="none"
                android:paddingTop="15dp"
                android:layout_width="match_parent"
                android:layout_height="wrap_content">

            <TextView
                android:id="@+id/tv_content"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="left"
                android:text="在熊花花选择任一款产品,申请并注册后,可获得一次翻牌,每天仅可参与一次;"
                android:textColor="@color/black"
                android:textSize="18sp"/>

            </ScrollView>

            <ImageView
                android:id="@+id/iv_pic"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:scaleType="fitXY"
                android:src="@drawable/global_popup_default_pic"
                android:visibility="visible"/>

        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:paddingTop="20dp"
            android:paddingBottom="20dp"
            android:layout_gravity="bottom"
            android:background="@drawable/shape_custom_dialog_bottom"
            android:gravity="center"
            android:orientation="horizontal">

            <Button
                android:id="@+id/btn1"
                android:visibility="visible"
                android:layout_width="114dp"
                android:layout_height="40dp"
                android:layout_marginRight="10dp"
                android:background="@color/vest_yellow"
                android:gravity="center"
                android:text="取消"
                android:textColor="@color/black"
                android:textSize="18sp"/>

            <Button
                android:id="@+id/btn2"
                android:layout_width="114dp"
                android:visibility="visible"
                android:layout_height="40dp"
                android:layout_marginLeft="10dp"
                android:background="@color/vest_yellow"
                android:gravity="center"
                android:text="确定"
                android:textColor="@color/black"
                android:textSize="18sp"/>

        </LinearLayout>
    </LinearLayout>

    <ImageView
        android:id="@+id/btn_close_bottom"
        android:layout_width="match_parent"
        android:layout_height="44dp"
        android:layout_gravity="center"
        android:layout_marginTop="30dp"
        android:background="@android:color/transparent"
        android:src="@drawable/btn_global_popup_dismiss"
        android:visibility="visible"/>

</LinearLayout>

</FrameLayout>

【使用】

相关文章

网友评论

      本文标题:全局遮挡弹窗(自定义)

      本文链接:https://www.haomeiwen.com/subject/dvqsgftx.html