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>