Android 自定义Dialog,ContentLoadingProgressBar

1,976 阅读1分钟

1.DialogActivity

class DialogActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_dialog)
//系统自带dialog
        button4.setOnClickListener {
            AlertDialog.Builder(this).setTitle("标题").setMessage("信息")
                .setPositiveButton("确认") { dialog, which ->
                    Toast.makeText(this, "点击了确定", Toast.LENGTH_SHORT).show()
                }.setNegativeButton("取消") { dialog, which ->
                    //                    Toast.makeText(this, "点击了取消", Toast.LENGTH_SHORT).show()
                }.show()
        }
//ContentLoadingProgressBar加载
        button5.setOnClickListener {
            loading.show()
            loading1.show()
        }
        //自定义dialog
        button6.setOnClickListener {
            MyDialogK<Any>(this).show()
        }
        button7.setOnClickListener {
            MyDialogK(this,DialogType.LIST, mutableListOf("nihao","hahaha","xiyanyan")).show()
        }
    }
}

2.MyDialog

class MyDialog<T : Any>(
    mcontext: Context,
    type: Int = DialogType.SIMPLE,
    mdata: MutableList<T> = mutableListOf()
) :
    Dialog(mcontext) {

    init {
        when (type) {
            DialogType.SIMPLE -> {
                //setCanceledOnTouchOutside(false)
                setContentView(R.layout.simple_dialog)
                dialog_cancel.setOnClickListener {
                    dismiss() //控制对话框消失
                }
                dialog_confirm.setOnClickListener {
                    val selectActivity = mcontext as SelectActivity
                    selectActivity.finish()
                    dismiss()
                }
            }
        }

    }
}

3.加载

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".ui.DialogActivity">

    <androidx.core.widget.ContentLoadingProgressBar
        android:id="@+id/loading"
        style="?android:attr/progressBarStyle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:visibility="invisible" />
        ...

simple_dialog

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/custom_dialog"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_centerInParent="true"
    android:gravity="center_horizontal"
    android:orientation="vertical">

    <TextView
        android:id="@+id/dialog_title"
        android:layout_width="match_parent"
        android:layout_height="@dimen/dp_42"
        android:textColor="@color/colorAccent"
        android:gravity="center_vertical"
        android:paddingLeft="@dimen/dp_16"
        android:text="温馨提示"
        android:textSize="@dimen/sp_18" />

    <View
        android:layout_width="match_parent"
        android:layout_height="@dimen/dp_1"
        android:background="@color/colorAccent" />

    <TextView
        android:id="@+id/dialog_message"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:gravity="center"
        android:lineSpacingExtra="@dimen/dp_5"
        android:paddingLeft="@dimen/dp_16"
        android:paddingTop="@dimen/dp_20"
        android:paddingRight="@dimen/dp_16"
        android:paddingBottom="@dimen/dp_30" />

    <View
        android:layout_width="match_parent"
        android:layout_height="@dimen/dp_05"
        android:background="@color/default_click" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <TextView
            android:id="@+id/dialog_cancel"
            android:layout_width="0dp"
            android:layout_height="@dimen/dp_38"
            android:layout_weight="1"
            android:gravity="center"
            android:background="@drawable/default_ripple_bg"
            android:text="取消"
            android:textSize="@dimen/sp_15" />

        <View
            android:layout_width="@dimen/dp_05"
            android:layout_height="match_parent"
            android:background="@color/default_click" />

        <TextView
            android:id="@+id/dialog_confirm"
            android:layout_width="0dp"
            android:layout_height="@dimen/dp_38"
            android:layout_weight="1"
            android:gravity="center"
            android:background="@drawable/default_ripple_bg"
            android:text="确定"
            android:textSize="@dimen/sp_15" />
    </LinearLayout>

</LinearLayout>