Android防IOS提示框

本周做项目时,Android自带的提示框太难看,这里做个防IOS的提示框:

效果图:

Android防IOS提示框

一,创建一个自定义的布局文件(其中,像颜色,文字,最好在values文件下创建,然后引入,这里就直接创建):

layout_dialog.xml:

<?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="#FFFFFF"
    android:orientation="vertical">

    <TextView
        android:id="@+id/vi_title"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textColor="#000000"
        android:paddingTop="10dp"
        android:gravity="center"
        android:textSize="18sp"/>

    <TextView
        android:id="@+id/vi_content"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:minHeight="30dp"
        android:gravity="center"
        android:textColor="@color/black"
        android:paddingTop="0dp"
        android:paddingBottom="10dp"
        android:textSize="14sp"/>

    <View
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:background="#CCC"/>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <TextView
            android:id="@+id/vi_cancel_button"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:textColor="#007AFF"
            android:padding="10dp"
            android:textSize="16sp"
            android:textStyle="bold"/>

        <View
            android:layout_width="1dp"
            android:layout_height="match_parent"
            android:background="#CCC"/>

        <TextView
            android:id="@+id/vi_confirm_button"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:textColor="#007AFF"
            android:padding="10dp"
            android:textSize="16sp"
            android:textStyle="bold"/>
    </LinearLayout>

</LinearLayout>

二、创建一个工具类,可能经常使用,进行封装:

DialogUtil:

public class DialogUtil {

    private Context mContext;
    private Activity mActivity;
    private OnItemClickListener mOnItemClickListener;

    public DialogUtil(Activity activity, Context context){
        mActivity = activity;
        mContext = context;
    }

    /** 定义一个接口,当用户点击按钮时,可在主页面进行逻辑操作 */
    public interface OnItemClickListener{
        /** 取消 */
        void onItemCancelClick();
        /** */
        void onItemConfirmClick();
    }

    public void setOnItemClickListener(OnItemClickListener onItemClickListener ){
        this.mOnItemClickListener=onItemClickListener;
    }

    /** 提示框,自定义标题,内容,按钮 */
    public void dialog(String title,String content, String cancelString, String confirmString){
        LayoutInflater inflater = mActivity.getLayoutInflater();
        View view = inflater.inflate(R.layout.layout_dialog, null);
        TextView titleView = view.findViewById(R.id.vi_title);
        TextView contentVIew = view.findViewById(R.id.vi_content);
        TextView cancelButtonView = view.findViewById(R.id.vi_cancel_button);
        TextView confirmButtonView = view.findViewById(R.id.vi_confirm_button);
        titleView.setText(title);
        contentVIew.setText(content);
        cancelButtonView.setText(cancelString);
        confirmButtonView.setText(confirmString);

        AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
        final Dialog dialog = builder.create();
        dialog.setCancelable(false);
        dialog.show();
        WindowManager.LayoutParams lp = dialog.getWindow().getAttributes();
        /** 设置宽为屏幕的0.8大小 */
        lp.width = (int) (mActivity.getWindowManager().getDefaultDisplay().getWidth() * 0.8);
        dialog.getWindow().setAttributes(lp);
        /** 自定义布局应该在这里添加,要在dialog.show()的后面 */
        dialog.getWindow().setContentView(view);
        cancelButtonView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mOnItemClickListener.onItemCancelClick();
                dialog.dismiss();
            }
        });
        confirmButtonView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mOnItemClickListener.onItemConfirmClick();
                dialog.dismiss();
            }
        });
    }
}

三、测试

private void dialog(){
    DialogUtil dialogUtil = new DialogUtil(MainActivity.this,MainActivity.this);
    dialogUtil.dialog("提示","欢迎使用App","取消","确定");
    dialogUtil.setOnItemClickListener(new DialogUtil.OnItemClickListener(){
        @Override
        public void onItemCancelClick() {
            Log.d("onItemClick","你点击了取消");
        }

        @Override
        public void onItemConfirmClick() {
            Log.d("onItemClick","你点击了确定");
        }
    });
}

/** 添加一个按钮进行测试 */
@Override
public void onClick(View v) {
    switch (v.getId()){
        case R.id.dialog_hint:
            dialog();
            break;
    }
}

效果:

Android防IOS提示框

点击取消:

Android防IOS提示框

点击确定:

Android防IOS提示框