1.主代码看 public static class Builder package com.seeknature.audio.utils; import android.app.AlertDialog; import android.app.Dialog; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.WindowManager; import android.widget.TextView; import com.seeknature.audio.R; import me.grantland.widget.AutofitHelper; public class TipDialogUtils { private Context mContext; private String title; private String message; private String sure; private String cancle; private float withPercent; private boolean cancelable; private TipDialogUtils(Builder builder) { this.title = builder.title; this.message = builder.message; this.sure = builder.sure; this.cancle = builder.cancle; this.mContext = builder.mContext; this.withPercent = builder.withPercent; this.cancelable = builder.cancelable; } private Dialog tipDialog; /** * desc: 提示连接蓝牙dialog */ public void showConnectDialog() { dismiss(); tipDialog = new AlertDialog.Builder(mContext).create(); View view = LayoutInflater.from(mContext).inflate(R.layout.sava_dialog_tip_attunu, null, false); TextView tvTitle = view.findViewById(R.id.tv_sava_dialog_title); TextView tvMsg = view.findViewById(R.id.tv_sava_dialog_message); TextView tvcancle = view.findViewById(R.id.tv_sava_dialog_cancel); TextView tvsure = view.findViewById(R.id.tv_sava_dialog_confirg); AutofitHelper.create(tvcancle);//自适应的字体大小根据字数和手机分辨率动态改变字体大小 AutofitHelper.create(tvcancle); if (!this.title.isEmpty()) { tvTitle.setText(this.title); } if (!this.message.isEmpty()) { tvMsg.setText(this.message); } if (!this.cancle.isEmpty()) { tvcancle.setText(this.cancle); } if (!this.sure.isEmpty()) { tvsure.setText(this.sure); } view.findViewById(R.id.tv_sava_dialog_cancel).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { tipDialog.dismiss(); } }); tvsure.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (listener != null) { listener.sureClick(); } tipDialog.dismiss(); } }); tipDialog.show(); tipDialog.setCancelable(true); tipDialog.getWindow().setContentView(view); //tipDialog.getWindow().setWindowAnimations(R.style.DialogBottom); // 添加动画 WindowManager.LayoutParams params = tipDialog.getWindow().getAttributes(); tipDialog.getWindow().setAttributes(params); } public void dismiss() { if (tipDialog != null) { if (tipDialog.isShowing()) { tipDialog.dismiss(); } tipDialog = null; } } public interface onTipItemClickListener { void sureClick(); } private onTipItemClickListener listener; public void setonTipItemClickListener(onTipItemClickListener listener) { this.listener = listener; } public static class Builder { private Context mContext; private String title = ""; private String message = ""; private String sure = ""; private String cancle = ""; private float withPercent = 0.8f; private boolean cancelable = true; public Builder(Context context) { this.mContext = context; } public Builder title(String title) { this.title = title; return this; } public Builder message(String message) { this.message = message; return this; } public Builder sure(String sure) { this.sure = sure; return this; } public Builder cancle(String cancle) { this.cancle = cancle; return this; } public Builder withPercent(float withPercent) { this.withPercent = withPercent; return this; } public Builder cancelable(boolean cancelable) { this.cancelable = cancelable; return this; } public TipDialogUtils build() { return new TipDialogUtils(this); } } }
注意:
AutofitHelper.create(tvcancle);这是一个可以自动调整字体大小的框架类,GitHub可以找到
布局:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/black_tip" android:orientation="vertical"> <TextView android:id="@+id/tv_sava_dialog_title" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/white" android:gravity="center" android:paddingBottom="20dp" android:paddingTop="32dp" android:text="@string/tip_title" android:textColor="@color/black_1e" android:textSize="18sp" /> <TextView android:id="@+id/tv_sava_dialog_message" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/white" android:gravity="center" android:paddingBottom="32dp" android:text="@string/tips" android:textColor="@color/black_1e" android:textSize="@dimen/sp_16" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <TextView android:id="@+id/tv_sava_dialog_cancel" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginTop="1dp" android:layout_weight="1" android:background="@color/white" android:clickable="true" android:foreground="?android:selectableItemBackground" android:gravity="center" android:paddingBottom="15dp" android:paddingTop="15dp" android:text="@string/cancel" android:textColor="@color/text_tip_item" android:textSize="15sp" /> <TextView android:id="@+id/tv_sava_dialog_confirg" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginLeft="1dp" android:layout_marginTop="1dp" android:layout_weight="1" android:background="@color/white" android:clickable="true" android:foreground="?android:selectableItemBackground" android:gravity="center" android:paddingBottom="15dp" android:paddingTop="15dp" android:text="@string/confirm" android:textColor="@color/text_tip_item" android:textSize="15sp" /> </LinearLayout> </LinearLayout>