android开发分享Android 自定义对话框Dialog

开发时候需要对整个APP风格统一,所以对话框这种都是需要统一样式的,这种就需要自定义对话框了,可以自定义设置左右按钮文字,标题、内容提示、标题下面还有图标效果图:代码使用:CommonDialog dialog = new CommonDialog(getActivity()); dialog.setMessage(message) .setTitle(“提示”) .setSingle(false)

开发时候需要对整个APP风格统一,所以对话框这种都是需要统一样式的,这种就需要自定义对话框了,可以自定义设置左右按钮文字,标题、内容提示、标题下面还有图标
效果图:
Android 自定义对话框Dialog

代码使用:

CommonDialog dialog = new CommonDialog(getActivity());         dialog.setMessage(message)                 .setTitle("提示")                 .setSingle(false)                 .setNegtive("取消")                 .setPositive("确定").setOnClickBottomListener(new CommonDialog.OnClickBottomListener() {             @Override             public void onPositiveClick() {                 dialog.dismiss();                 //确定操作             }              @Override             public void onNegtiveClick() {                 dialog.dismiss();                 //取消操作             }         }).show(); 

具体实现代码

import android.app.Dialog; import android.content.Context; import android.graphics.Color; import android.os.Bundle; import android.text.TextUtils; import android.view.Display; import android.view.Gravity; import android.view.View; import android.view.WindowManager; import android.widget.Button; import android.widget.ImageView; import android.widget.TextView;  import com.blankj.utilcode.util.BarUtils; import com.blankj.utilcode.util.ScreenUtils; import java.util.Objects;  /**  * 统一提示框  */ public class CommonDialog extends Dialog {     /**      * 显示的图片      */     private ImageView imageIv;      /**      * 显示的标题      */     private TextView titleTv;      /**      * 显示的消息      */     private TextView messageTv;      /**      * 确认和取消按钮      */     private TextView negtiveBn, positiveBn;       public CommonDialog(Context context) {         super(context, R.style.CustomDialog);     }      /**      * 都是内容数据      */     private String message;     private String title;     private String positive, negtive;     private int imageResId = -1;      /**      * 底部是否只有一个按钮      */     private boolean isSingle = false;      @Override     protected void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.layout_tips);         //按空白处能取消动画         setCanceledOnTouchOutside(true);         //初始化界面控件         initView();         //初始化界面数据         refreshView();         //初始化界面控件的事件         initEvent();          getWindow().setGravity(Gravity.BOTTOM);//设置显示在底部         WindowManager windowManager=getWindow().getWindowManager();         Display display= windowManager.getDefaultDisplay();         WindowManager.LayoutParams layoutParams=getWindow().getAttributes();         layoutParams.width=display.getWidth();//设置Dialog的宽度为屏幕宽度         layoutParams.height = display.getHeight();         getWindow().setAttributes(layoutParams);     }      /**      * 初始化界面的确定和取消监听器      */     private void initEvent() {         //设置确定按钮被点击后,向外界提供监听         positiveBn.setOnClickListener(new View.OnClickListener() {             @Override             public void onClick(View v) {                 if (onClickBottomListener != null) {                     onClickBottomListener.onPositiveClick();                 }             }         });         //设置取消按钮被点击后,向外界提供监听         negtiveBn.setOnClickListener(new View.OnClickListener() {             @Override             public void onClick(View v) {                 if (onClickBottomListener != null) {                     onClickBottomListener.onNegtiveClick();                 }             }         });     }      /**      * 初始化界面控件的显示数据      */     private void refreshView() {         //如果用户自定了title和message         if (!TextUtils.isEmpty(title)) {             titleTv.setText(title);             titleTv.setVisibility(View.VISIBLE);         } else {             titleTv.setVisibility(View.GONE);         }         if (!TextUtils.isEmpty(message)) {             messageTv.setText(message);         }         //如果设置按钮的文字         if (!TextUtils.isEmpty(positive)) {             positiveBn.setText(positive);         } else {             positiveBn.setText("确定");         }         if (!TextUtils.isEmpty(negtive)) {             negtiveBn.setText(negtive);         } else {             negtiveBn.setText("取消");         }          if (imageResId != -1) {             imageIv.setImageResource(imageResId);             imageIv.setVisibility(View.VISIBLE);         } else {             imageIv.setVisibility(View.GONE);         }         /**          * 只显示一个按钮的时候隐藏取消按钮,回掉只执行确定的事件          */         if (isSingle) {             negtiveBn.setVisibility(View.GONE);         } else {             negtiveBn.setVisibility(View.VISIBLE);         }     }      @Override     public void show() {         super.show();         refreshView();         Objects.requireNonNull(this.getWindow()).getDecorView().setBackgroundColor(Color.parseColor("#00000000")); //        Objects.requireNonNull(this.getWindow()).setLayout(ScreenUtils.getScreenWidth(), ScreenUtils.getScreenHeight() - BarUtils.getActionBarHeight()); //        getWindow().setGravity(Gravity.BOTTOM);//设置显示在底部     }      /**      * 初始化界面控件      */     private void initView() {         negtiveBn = findViewById(R.id.cancel_btn);         positiveBn = findViewById(R.id.submit_btn);         titleTv = findViewById(R.id.tip_tv);         messageTv = findViewById(R.id.message_tv);         imageIv = findViewById(R.id.image);     }      /**      * 设置确定取消按钮的回调      */     public OnClickBottomListener onClickBottomListener;      public CommonDialog setOnClickBottomListener(OnClickBottomListener onClickBottomListener) {         this.onClickBottomListener = onClickBottomListener;         return this;     }      public interface OnClickBottomListener {         /**          * 点击确定按钮事件          */         public void onPositiveClick();          /**          * 点击取消按钮事件          */         public void onNegtiveClick();     }      public String getMessage() {         return message;     }      public CommonDialog setMessage(String message) {         this.message = message;         return this;     }      public String getTitle() {         return title;     }      public CommonDialog setTitle(String title) {         this.title = title;         return this;     }      public String getPositive() {         return positive;     }      public CommonDialog setPositive(String positive) {         this.positive = positive;         return this;     }      public String getNegtive() {         return negtive;     }      public CommonDialog setNegtive(String negtive) {         this.negtive = negtive;         return this;     }      public int getImageResId() {         return imageResId;     }      public boolean isSingle() {         return isSingle;     }      public CommonDialog setSingle(boolean single) {         isSingle = single;         return this;     }      public CommonDialog setImageResId(int imageResId) {         this.imageResId = imageResId;         return this;     }  } 

布局文件:

<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="https://schemas.android.com/apk/res/android"     xmlns:app="https://schemas.android.com/apk/res-auto"     xmlns:tools="https://schemas.android.com/tools"     android:id="@+id/update_con_layout"     android:layout_width="match_parent"     android:layout_height="match_parent"     android:visibility="visible"     app:layout_constraintBottom_toBottomOf="parent"     app:layout_constraintLeft_toLeftOf="parent"     app:layout_constraintRight_toRightOf="parent"     app:layout_constraintTop_toTopOf="parent">      <View         android:id="@+id/back_view"         android:layout_width="match_parent"         android:layout_height="0dp"         android:background="@drawable/top_corners_12dp_white"         app:layout_constraintBottom_toBottomOf="parent"         app:layout_constraintHeight_percent="0.33"         app:layout_constraintLeft_toLeftOf="parent"         app:layout_constraintRight_toRightOf="parent" />      <TextView         android:id="@+id/tip_tv"         android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:layout_marginTop="18dp"         android:text="提示"         android:textColor="@color/colorMainTitleBody"         android:textSize="18sp"         android:textStyle="bold"         app:layout_constraintLeft_toLeftOf="@id/back_view"         app:layout_constraintRight_toRightOf="@id/back_view"         app:layout_constraintTop_toTopOf="@id/back_view" />      <ImageView         android:id="@+id/image"         android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:layout_gravity="center"         android:layout_marginLeft="16dp"         android:layout_marginRight="16dp"         android:layout_marginBottom="10dp"         android:maxWidth="150dp"         android:maxHeight="150dp"         android:visibility="gone"         android:layout_marginTop="10dp"         app:layout_constraintTop_toBottomOf="@id/tip_tv"         app:layout_constraintLeft_toLeftOf="@id/back_view"         app:layout_constraintRight_toRightOf="@id/back_view"         />      <TextView         android:id="@+id/message_tv"         android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:layout_marginTop="30dp"         android:text="发现新版本"         android:textColor="@color/colorMainTitleBody"         android:textSize="16sp"         app:layout_constraintLeft_toLeftOf="@id/back_view"         app:layout_constraintRight_toRightOf="@id/back_view"         app:layout_constraintTop_toBottomOf="@id/image" />      <TextView         android:id="@+id/cancel_btn"         android:layout_width="0dp"         android:layout_height="0dp"         android:layout_marginBottom="32dp"         android:background="@drawable/four_corners_5dp_line"         android:gravity="center"         android:text="@string/cancel"         android:textColor="@color/colorMainStyle"         android:textSize="16sp"         app:layout_constraintBottom_toBottomOf="parent"         app:layout_constraintDimensionRatio="14:5"         app:layout_constraintLeft_toLeftOf="parent"         app:layout_constraintRight_toLeftOf="@id/submit_btn"         app:layout_constraintWidth_percent="0.375" />      <TextView         android:id="@+id/submit_btn"         android:layout_width="0dp"         android:layout_height="0dp"         android:layout_marginBottom="32dp"         android:background="@drawable/four_corners_5dp"         android:gravity="center"         android:text="@string/update"         android:textColor="@color/cardview_light_background"         android:textSize="16sp"         app:layout_constraintBottom_toBottomOf="parent"         app:layout_constraintDimensionRatio="14:5"         app:layout_constraintLeft_toRightOf="@id/cancel_btn"         app:layout_constraintRight_toRightOf="parent"         app:layout_constraintWidth_percent="0.375"         tools:ignore="PrivateResource" />   </androidx.constraintlayout.widget.ConstraintLayout> 

style定义:

<style name="CustomDialog" parent="@android:style/Theme.Dialog">         <item name="android:windowFrame">@null</item>         <item name="android:windowIsFloating">true</item>         <item name="android:windowIsTranslucent">true</item>         <item name="android:windowNoTitle">true</item>         <item name="android:windowBackground">@drawable/dialog_confirm</item>         <item name="android:backgroundDimEnabled">true</item>         <item name="android:background">#00000000</item>     </style> 

圆角背景图:

<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="https://schemas.android.com/apk/res/android"     android:shape="rectangle">      <size         android:width="40dp"         android:height="20dp" />     <solid android:color="#FFFFFF" />     <corners android:radius="12dp" />  </shape> 

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/addevelopment/895482.html

(0)
上一篇 2021年10月21日
下一篇 2021年10月21日

精彩推荐