Dialog笔记

1、自定义dialog

新建dialog布局,在构造导入即可

2、生命周期

只有在调用show()方法时,才会开始生命周期方法调用,初次show(),会依次onCreate()、onStart()。之后show(),直接走onStart(),不再走onCreate()。

3、全屏显示

在style.xml中定义全屏风格,在Dialog构造中导入即可

<style name="Dialog_Fullscreen">
        <item name="android:windowFullscreen">true</item>
        <item name="android:windowNoTitle">true</item>
</style>

4、代码示例


public class MyDialog extends Dialog {

    private Context mContext;
    private ImageView mImageView;
    private TextView mTitleTextView, mContentView;
    private Button mBackButton;
    private IClickListener mListener;
    private boolean mSuccess;
    private String mTitle;
    private String mContent;

    public MyDialog(@NonNull Context context) {
        super(context, R.style.Dialog_Fullscreen);
    }


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.dialog);
        initView();
    }

    private void initView() {
        setCancelable(false);
        setCanceledOnTouchOutside(false);
        this.mTitleView = (RelativeLayout)findViewById(R.id.title);
        this.mContentView = (RelativeLayout)findViewById(R.id.content);
        this.mImageView = (RelativeLayout)findViewById(R.id.img);
        this.mBackButton = (RelativeLayout)findViewById(R.id.btn);
        this.mBackButton.setOnClickListener(new View.OnClickListener() {
            public void onClick(View view) {
                dismiss();
                if (mListener != null) {
                    mListener.onClick();
                }
            }
        });
    }

    @Override
    protected void onStart() {
        super.onStart();
        setTitle();
        setContent();
        changeStyle();
    }

    public MyDialog title(String title) {
        mTitle = title;
        return this;
    }

    public MyDialog listener(IClickListener listener) {
        mListener = listener;
        return this;
    }

    public MyDialog message(String content) {
        mContent = content;
        return this;
    }

    public MyDialog success(boolean isSuccess) {
        mSuccess = isSuccess;
        return this;
    }

    private void setTitle() {
        if (TextUtils.isEmpty(mTitle)) {
            return;
        }
        this.mTitleTextView.setText(mTitle);
    }

    private void setContent() {
        if (mContent == null) {
            return;
        }
        this.mContentView.setText(mContent);
    }

    private void changeStyle() {
        if (!mSuccess) {
            this.mTitleTextView.setTextColor(Color.RED);
            this.mBackButton.setBackgroundResource(drawable.error);
            this.mContentTextView.setTextColor(Color.RED);
            this.mImageView.setImageResource(drawable.error);
        } else {
            this.mTitleTextView.setTextColor(Color.Green);
            this.mBackButton.setBackgroundResource(drawable.success);
            this.mContentTextView.setTextColor(Color.GREEN);
            this.mImageView.setImageResource(drawable.success);
        }
    }

    public interface IClickListener {
        void onClick();
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值