Android 实现屏幕底部弹出Dialog 封装使用(本文作为开发中记录使用,请轻喷)
日常开发中经常用到Dialog实现用户交互界面每次都要重写一个很麻烦(产品经理一言不合就要求弹窗)
效果图
这个效果要的算是比较常见的了
import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
/**
* 自定义底部弹出对话框
* Created by zhaomac on 2017/9/8.
*/
public class ButtomDialogView extends Dialog {
private boolean iscancelable;//控制点击dialog外部是否dismiss
private boolean isBackCancelable;//控制返回键是否dismiss
private View view;
private Context context;
//这里的view其实可以替换直接传layout过来的 因为各种原因没传(lan)
public ButtomDialogView(Context context, View view, boolean isCancelable,boolean isBackCancelable) {
super(context, R.style.MyDialog);
this.context = context;
this.view = view;
this.iscancelable = isCancelable;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(view);//这行一定要写在前面
setCancelable(iscancelable);//点击外部不可dismiss
setCanceledOnTouchOutside(isBackCanCelable);
Window window = this.getWindow();
window.setGravity(Gravity.BOTTOM);
WindowManager.LayoutParams params = window.getAttributes();
params.width = WindowManager.LayoutParams.MATCH_PARENT;
params.height = WindowManager.LayoutParams.WRAP_CONTENT;
window.setAttributes(params);
}
}
<style name="MyDialog" parent="@android:style/Theme.Holo.Dialog">
<!-- 是否有边框 -->
<item name="android:windowFrame">@null</item>
<!--是否在悬浮Activity之上 -->
<item name="android:windowIsFloating">true</item>
<!-- 标题 -->
<item name="android:windowNoTitle">true</item>
<!--阴影 -->
<item name="android:windowIsTranslucent">true</item><!--半透明-->
<!--背景透明-->
<item name="android:windowBackground">@android:color/transparent</item>
<!-- 还可以加入一些弹出和退出的动画 (lan)-->
</style>