zoukankan      html  css  js  c++  java
  • Android开发 自定义Dialog开发

    前言

      记录一些自己项目上自定义的Dialog

    例子1:单选对话框

    布局

    <?xml version="1.0" encoding="utf-8"?>
    <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/public_shape_white_rectangle_corners10dp">
    
        <TextView
            android:id="@+id/title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingTop="10dp"
            android:paddingBottom="10dp"
            android:textColor="@color/public_color_181818"
            android:textSize="18sp"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toTopOf="parent" />
    
        <View
            android:id="@+id/line1"
            android:layout_width="match_parent"
            android:layout_height="1dp"
            android:background="@color/public_color_f2f2f2"
            app:layout_constraintTop_toBottomOf="@id/title"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"/>
    
        <TextView
            android:id="@+id/content"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:textSize="16sp"
            android:textColor="@color/public_color_666666"
            android:paddingTop="31dp"
            android:paddingBottom="31dp"
            android:paddingLeft="48dp"
            android:paddingRight="48dp"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toBottomOf="@id/line1"/>
    
        <View
            android:id="@+id/line2"
            android:layout_width="match_parent"
            android:layout_height="1dp"
            android:background="@color/public_color_f2f2f2"
            app:layout_constraintTop_toBottomOf="@id/content"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"/>
    
        <TextView
            android:id="@+id/left"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:textColor="@color/public_color_111111"
            android:textSize="17sp"
            android:gravity="center"
            android:paddingTop="15dp"
            android:paddingBottom="15dp"
            android:background="@drawable/public_pressed_white_to_gray_left_radius"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toLeftOf="@id/line3"
            app:layout_constraintTop_toBottomOf="@id/line2" />
    
        <View
            android:id="@+id/line3"
            android:layout_width="1dp"
            android:layout_height="0dp"
            android:background="@color/public_color_f2f2f2"
            app:layout_constraintTop_toTopOf="@id/left"
            app:layout_constraintBottom_toBottomOf="@id/left"
            app:layout_constraintLeft_toRightOf="@id/left"
            app:layout_constraintRight_toLeftOf="@id/right"/>
    
        <TextView
            android:id="@+id/right"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:textColor="@color/public_colorPrimary"
            android:textSize="17sp"
            android:gravity="center"
            android:paddingTop="15dp"
            android:paddingBottom="15dp"
            android:background="@drawable/public_pressed_white_to_gray_right_radius"
            app:layout_constraintLeft_toRightOf="@id/line3"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toBottomOf="@id/line2" />
    
    </androidx.constraintlayout.widget.ConstraintLayout>

    代码

    package net.yt.whale.common.views;
    
    import android.app.Dialog;
    import android.content.Context;
    import android.graphics.Color;
    import android.graphics.drawable.ColorDrawable;
    import android.os.Bundle;
    import android.text.SpannableString;
    import android.util.DisplayMetrics;
    import android.view.View;
    import android.view.WindowManager;
    import android.widget.TextView;
    
    import androidx.annotation.NonNull;
    import androidx.annotation.StringRes;
    
    import net.yt.whale.common.R;
    
    
    
    /**
     * content: 单选对话框
     * time: 2020-3-16
     *
     * @author: zhouqiang
     */
    public class SelectDialog extends Dialog {
        public TextView mTitle;
        public View mLine1;
        public TextView mContent;
        public View mLine2;
        public TextView mLeftButton;
        public View mLine3;
        public TextView mRightButton;
        private OnDialogListener mOnDialogListener = null;
    
        private SelectDialog(@NonNull Context context) {
            super(context);
        }
    
        private SelectDialog(@NonNull Context context, int themeResId) {
            super(context, themeResId);
        }
    
        public SelectDialog(@NonNull Context context, boolean cancelable, String title, String content, String leftButton, String rightButton) {
            super(context, cancelable, null);
            initView();
            mTitle.setText(title);
            mContent.setText(content);
            mLeftButton.setText(leftButton);
            mRightButton.setText(rightButton);
            initListener();
    
        }
    
        public SelectDialog(@NonNull Context context, boolean cancelable, @StringRes int title, @StringRes int content, @StringRes int leftButton, @StringRes int rightButton) {
            super(context, cancelable, null);
            initView();
            mTitle.setText(title);
            mContent.setText(content);
            mLeftButton.setText(leftButton);
            mRightButton.setText(rightButton);
            initListener();
    
        }
    
        public SelectDialog(@NonNull Context context, boolean cancelable, @StringRes int title, String content, @StringRes int leftButton, @StringRes int rightButton) {
            super(context, cancelable, null);
            initView();
            mTitle.setText(title);
            mContent.setText(content);
            mLeftButton.setText(leftButton);
            mRightButton.setText(rightButton);
            initListener();
    
        }
    
        public SelectDialog(@NonNull Context context, boolean cancelable, @StringRes int title, SpannableString content, @StringRes int leftButton, @StringRes int rightButton) {
            super(context, cancelable, null);
            initView();
            mTitle.setText(title);
            mContent.setText(content);
            mLeftButton.setText(leftButton);
            mRightButton.setText(rightButton);
            initListener();
    
        }
    
        public SelectDialog(@NonNull Context context, boolean cancelable, String title, String content, @StringRes int leftButton, @StringRes int rightButton) {
            super(context, cancelable, null);
            initView();
            mTitle.setText(title);
            mContent.setText(content);
            mLeftButton.setText(leftButton);
            mRightButton.setText(rightButton);
            initListener();
    
        }
    
        private void initView() {
            setContentView(R.layout.public_dialog_select);
            this.mTitle = (TextView) findViewById(R.id.title);
            this.mContent = (TextView) findViewById(R.id.content);
            this.mLeftButton = (TextView) findViewById(R.id.left);
            this.mRightButton = (TextView) findViewById(R.id.right);
            this.mLine1 = (View) findViewById(R.id.line1);
            this.mLine2 = (View) findViewById(R.id.line2);
            this.mLine3 = (View) findViewById(R.id.line3);
        }
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            DisplayMetrics displayMetrics = getContext().getResources().getDisplayMetrics();
            int width = (int) (displayMetrics.widthPixels * 0.90);
            WindowManager.LayoutParams layoutParams = getWindow().getAttributes();
            layoutParams.width = width;
            getWindow().setAttributes(layoutParams);
            getWindow().getDecorView().setBackground(new ColorDrawable(Color.TRANSPARENT));
    
        }
    
        private void initListener() {
            mLeftButton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if (mOnDialogListener != null) {
                        mOnDialogListener.onClickLeft(SelectDialog.this);
                    }
    
                }
            });
            mRightButton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if (mOnDialogListener != null) {
                        mOnDialogListener.onClickRight(SelectDialog.this);
                    }
    
                }
            });
        }
    
        public void setOnDialogListener(OnDialogListener listener) {
            this.mOnDialogListener = listener;
        }
    
        public interface OnDialogListener {
            void onClickLeft(SelectDialog dialog);
    
            void onClickRight(SelectDialog dialog);
        }
    
        public TextView getTitle() {
            return mTitle;
        }
    
        public View getLine1() {
            return mLine1;
        }
    
        public TextView getContent() {
            return mContent;
        }
    
        public View getLine2() {
            return mLine2;
        }
    
        public TextView getLeftButton() {
            return mLeftButton;
        }
    
        public View getLine3() {
            return mLine3;
        }
    
        public TextView getRightButton() {
            return mRightButton;
        }
    }

    end

  • 相关阅读:
    【leetcode】1009. 十进制整数的反码
    【leetcode】1446. 连续字符
    __getattr__在python2.x与python3.x中的区别及其对属性截取与代理类的影响
    Python 中异常嵌套
    python 变量搜寻顺序法则LEGB之E注意事项
    %%的一个应用
    python中__str__与__repr__
    052-180
    052-177
    052-176
  • 原文地址:https://www.cnblogs.com/guanxinjing/p/14154232.html
Copyright © 2011-2022 走看看