Android之仿IOS对话框

版权声明:本文为博主原创文章,未经博主允许不的转载。谢谢! https://blog.csdn.net/niu9799/article/details/80853711

Android之仿IOS对话框

开发过程中经常用到对话框,单选的,多选的 ,列表式的各式各样。

老规矩先上图。我是直接拿了项目的切图,背景,文字颜色或者图片可以自行替换。


核心代码

// 自定义对话框
private void fifthResult() {
final Dialog dialog = new Dialog(this, R.style.AlertDialogStyle);
View view = View.inflate(this, R.layout.view_alertdialog, null);
TextView mCancel = (TextView) view.findViewById(R.id.cancel_tv);
TextView mConfirm = (TextView) view.findViewById(R.id.confirm_tv);
mCancel.setText("取消");
mConfirm.setText("确定");
dialog.setContentView(view);
// 使得点击对话框外部不消失对话框
dialog.setCanceledOnTouchOutside(true);
// 设置对话框的大小
view.setMinimumHeight((int) (ScreenSizeUtils.getInstance(this).getScreenHeight() * 0.23f));
Window dialogWindow = dialog.getWindow();
WindowManager.LayoutParams lp = dialogWindow.getAttributes();
lp.width = (int) (ScreenSizeUtils.getInstance(this).getScreenWidth() * 0.75f);
lp.height = WindowManager.LayoutParams.WRAP_CONTENT;
lp.gravity = Gravity.CENTER;
dialogWindow.setAttributes(lp);
mCancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
mConfirm.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
dialog.show();

}

----------------------------------------

计算手机屏幕的宽高

public static class ScreenSizeUtils {
private static ScreenSizeUtils instance = null;
private int screenWidth, screenHeight;
public static ScreenSizeUtils getInstance(Context mContext) {
if (instance == null) {
synchronized (ScreenSizeUtils.class) {
if (instance == null)
instance = new ScreenSizeUtils(mContext);
}
}
return instance;
}
private ScreenSizeUtils(Context mContext) {
WindowManager manager=(WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE);
DisplayMetrics dm = new DisplayMetrics();
manager.getDefaultDisplay().getMetrics(dm);
screenWidth = dm.widthPixels;// 获取屏幕分辨率宽度
screenHeight = dm.heightPixels;// 获取屏幕分辨率高度
}
// 获取屏幕宽度
public int getScreenWidth() {
return screenWidth;
}
// 获取屏幕高度
public int getScreenHeight() {
return screenHeight;
}
}

----------------------------------

style

    <style name="AlertDialogStyle" parent="@android:style/Theme.Dialog">
        <item name="android:windowBackground">@android:color/transparent</item>
        <item name="android:windowContentOverlay">@null</item>
        <item name="android:windowIsFloating">true</item>
        <item name="android:windowFrame">@null</item>
        <item name="android:backgroundDimEnabled">true</item>
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowIsTranslucent">true</item>

    </style>

----------------------------------

布局文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/ll_bg_dialog"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@mipmap/alertdialog_bg_on"
    android:orientation="vertical" >


    <TextView
        android:id="@+id/title_tv"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="15dp"
        android:layout_marginRight="15dp"
        android:layout_marginTop="15dp"
        android:gravity="center"
        android:text="提示"
        android:textColor="@android:color/white"
        android:textSize="18sp"
        android:textStyle="bold" />


    <TextView
        android:id="@+id/msg_tv"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="15dp"
        android:layout_marginRight="15dp"
        android:layout_marginTop="32dp"
        android:gravity="center"
        android:text="提示信息"
        android:textColor="@android:color/white"
        android:textSize="16sp" />


    <ImageView
        android:layout_width="match_parent"
        android:layout_height="0.5dp"
        android:layout_marginBottom="5dp"
        android:layout_marginLeft="5dp"
        android:layout_marginRight="5dp"
        android:layout_marginTop="35dp"
        android:background="@android:color/white" />


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


        <TextView
            android:id="@+id/cancel_tv"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:gravity="center"
            android:textColor="@android:color/white"
            android:textSize="16sp"
            android:textStyle="bold" />


        <ImageView
            android:id="@+id/img_line"
            android:layout_width="0.5dp"
            android:layout_height="match_parent"
            android:layout_gravity="center"
            android:background="@android:color/white" />


        <TextView
            android:id="@+id/confirm_tv"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:gravity="center"
            android:textColor="@android:color/white"
            android:textSize="16sp"
            android:textStyle="bold" />
    </LinearLayout>


</LinearLayout>


猜你喜欢

转载自blog.csdn.net/niu9799/article/details/80853711