Android仿ios的自定义dialog,loading和to

作者: 马木木_1991 | 来源:发表于2019-04-19 11:31 被阅读269次
    之前写的三篇自定义文章如下:
    将以上三篇文章组合封装成为如下的一个依赖库。以后会对该库做不定期更新。以上三个不会再更新。推荐使用如下引用。使用方法如下:
    allprojects {
            repositories {
                ...
                maven { url 'https://jitpack.io' }
            }
        }
    
    dependencies {
                implementation 'com.github.mamumu:mmDialog:1.2.0'
        }
    

    1,效果图如下:

    loading toast 普通dialog 协议dialog 图片dialog

    2,如何使用:toast和loading可以写在baseActivity中,而dialog直接在对应activity中使用。

    baseActivity代码如下:

    package com.mumu.mmdialog.base;
    
    import android.os.Bundle;
    import android.support.annotation.Nullable;
    import android.support.v7.app.AppCompatActivity;
    
    import com.mumu.dialog.MMLoading;
    import com.mumu.dialog.MMToast;
    
    
    /**
     * @author : zlf
     * date    : 2019/4/17
     * github  : https://github.com/mamumu
     * blog    : https://www.jianshu.com/u/281e9668a5a6
     */
    public class BaseActivity extends AppCompatActivity {
    
        private MMLoading mmLoading;
        private MMToast mmToast;
    
        @Override
        protected void onCreate(@Nullable Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
        }
    
        @Override
        protected void onDestroy() {
            super.onDestroy();
        }
    
        @Override
        protected void onPause() {
            super.onPause();
        }
    
        @Override
        protected void onResume() {
            super.onResume();
        }
    
        protected void showLoading() {
            if (mmLoading == null) {
                MMLoading.Builder builder = new MMLoading.Builder(this)
                        .setMessage("加载中...")
                        .setCancelable(false)
                        .setCancelOutside(false);
                mmLoading = builder.create();
            }else {
                mmLoading.dismiss();
                MMLoading.Builder builder = new MMLoading.Builder(this)
                        .setMessage("加载中...")
                        .setCancelable(false)
                        .setCancelOutside(false);
                mmLoading = builder.create();
            }
            mmLoading.show();
        }
    
        protected void showLoading(String msg) {
            if (mmLoading == null) {
                MMLoading.Builder builder = new MMLoading.Builder(this)
                        .setMessage(msg)
                        .setCancelable(false)
                        .setCancelOutside(false);
                mmLoading = builder.create();
            }else {
                mmLoading.dismiss();
                MMLoading.Builder builder = new MMLoading.Builder(this)
                        .setMessage(msg)
                        .setCancelable(false)
                        .setCancelOutside(false);
                mmLoading = builder.create();
            }
            mmLoading.show();
        }
    
        protected void hideLoading() {
            if (mmLoading != null && mmLoading.isShowing()) {
                mmLoading.dismiss();
            }
        }
    
        protected void showToastSuccess(String msg) {
            if (mmToast == null) {
                MMToast.Builder builder=new MMToast.Builder(this)
                        .setMessage(msg)
                        .setSuccess(true);
                mmToast=builder.create();
            }else {
                mmToast.cancel();
                MMToast.Builder builder=new MMToast.Builder(this)
                        .setMessage(msg)
                        .setSuccess(true);
                mmToast=builder.create();
            }
            mmToast.show();
        }
    
        protected void showToastFailure(String msg) {
            if (mmToast == null) {
                MMToast.Builder builder=new MMToast.Builder(this)
                        .setMessage(msg)
                        .setSuccess(false);
                mmToast=builder.create();
            }else {
                mmToast.cancel();
                MMToast.Builder builder=new MMToast.Builder(this)
                        .setMessage(msg)
                        .setSuccess(false);
                mmToast=builder.create();
            }
            mmToast.show();
        }
    }
    

    activity代码如下:

    package com.mumu.mmdialog;
    
    import android.content.DialogInterface;
    import android.os.Bundle;
    import android.os.Handler;
    import android.view.View;
    import android.widget.Button;
    import android.widget.Toast;
    
    import com.mumu.dialog.MMAlertDialog;
    import com.mumu.mmdialog.base.BaseActivity;
    
    import butterknife.BindView;
    import butterknife.ButterKnife;
    import butterknife.OnClick;
    
    public class MainActivity extends BaseActivity {
    
        @BindView(R.id.button1)
        Button button1;
        @BindView(R.id.button2)
        Button button2;
    
        private String webUrl = "https://www.jianshu.com/u/281e9668a5a6";
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            ButterKnife.bind(this);
            initView();
        }
    
        private void initView() {
        }
    
        private void showDialog1() {
            MMAlertDialog.showDialog(MainActivity.this,
                    "标题",
                    "我是中国人,我爱我的祖国",
                    null,
                    "确定",
                    false,
                    null,
                    new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            Toast.makeText(MainActivity.this, "确定", Toast.LENGTH_SHORT).show();
                            dialog.dismiss();
                        }
                    });
        }
    
        private void showDialog2() {
            MMAlertDialog.showDialog(this,
                    "标题",
                    "我是中国人,我爱我的祖国。祝祖国繁荣富强",
                    "取消",
                    "确定",
                    false,
                    new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            Toast.makeText(MainActivity.this, "取消", Toast.LENGTH_SHORT).show();
                            dialog.dismiss();
                        }
                    },
                    new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            Toast.makeText(MainActivity.this, "确定", Toast.LENGTH_SHORT).show();
                            dialog.dismiss();
                        }
                    });
        }
    
        private void showDialogXieYi() {
            final boolean[] misChecked = {false};
            MMAlertDialog.showDialogXieYi(this,
                    "个人协议",
                    webUrl,
                    "我知道了",
                    "我已阅读并同意以上条款,下次不再提示",
                    false,
                    new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            Toast.makeText(MainActivity.this, "取消", Toast.LENGTH_SHORT).show();
                            dialog.dismiss();
                        }
                    },
                    new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            if (misChecked[0]) {
                                Toast.makeText(MainActivity.this, "checkbox选中了--我知道了", Toast.LENGTH_SHORT).show();
                            }
                            dialog.dismiss();
                        }
                    }, new DialogInterface.OnMultiChoiceClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which, boolean isChecked) {
                            if (isChecked) {
                                misChecked[0] = true;
                            } else {
                                misChecked[0] = false;
                            }
                        }
                    });
        }
    
        private void showImageDialog() {
            MMAlertDialog.showDialogImage(this,
                    "http://img0.imgtn.bdimg.com/it/u=3295048120,2386838883&fm=214&gp=0.jpg",
                    false,
                    new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            Toast.makeText(MainActivity.this, "取消", Toast.LENGTH_SHORT).show();
                            dialog.dismiss();
                        }
                    },
                    new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            Toast.makeText(MainActivity.this, "确定", Toast.LENGTH_SHORT).show();
                            dialog.dismiss();
                        }
                    });
        }
    
        @OnClick({R.id.button1, R.id.button2, R.id.button3, R.id.button4,
                R.id.button5, R.id.button6, R.id.button7, R.id.button8})
        public void onViewClicked(View view) {
            switch (view.getId()) {
                case R.id.button1:
                    showLoading();
                    //延迟3秒关闭
                    new Handler().postDelayed(new Runnable() {
                        @Override
                        public void run() {
                            hideLoading();
                        }
                    }, 3000);
                    break;
                case R.id.button2:
                    showLoading("正在校验信息");
                    //延迟3秒关闭
                    new Handler().postDelayed(new Runnable() {
                        @Override
                        public void run() {
                            hideLoading();
                        }
                    }, 5000);
                    break;
                case R.id.button3:
                    showToastSuccess("加载成功");
                    break;
                case R.id.button4:
                    showToastFailure("加载失败");
                    break;
                case R.id.button5:
                    showDialog1();
                    break;
                case R.id.button6:
                    showDialog2();
                    break;
                case R.id.button7:
                    showDialogXieYi();
                    break;
                case R.id.button8:
                    showImageDialog();
                    break;
            }
        }
    }
    

    3,如果有发现错误欢迎指正我及时修改,如果有好的建议欢迎留言。如果觉得对你有帮助欢迎给小星星,谢谢。

    相关文章

      网友评论

        本文标题:Android仿ios的自定义dialog,loading和to

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