主要是全屏和遮罩层\背景色的问题
废话不多说,直接上代码:
static AlertDialog dialog1;
static AlertDialog.Builder dialogBuilder1;
static boolean mIsCheck;
public static void showRecoverPop(Activity activity, Handler handler) {// int type
//注意此处设置的style属性关于背景色和遮罩层
if (dialogBuilder1 == null)
dialogBuilder1 = new AlertDialog.Builder((Context) activity,R.style.AlertDialogStyle);
if (dialog1 == null)
dialog1 = dialogBuilder1.create();
dialog1.setCancelable(true);//点击空白和返回不消失false,消失true
dialog1.setCanceledOnTouchOutside(true);
dialog1.show();// show方法放在此处,如果先SetContentView之后在show会报错
WindowManager windowManager = activity.getWindowManager();
Display display = windowManager.getDefaultDisplay();
Window window = dialog1.getWindow();
WindowManager.LayoutParams lp = window.getAttributes();
Point point = new Point();
display.getSize(point);
//注意此处的LayoutParams 大小关于弹窗的大小
//最好动态获取屏幕的大小设置进去
lp.gravity = Gravity.CENTER;
lp.width = 1024;
lp.height = 600;
window.setAttributes(lp);
window.setContentView(R.layout.air_hht_tip_layout);//activity_advanced
// 因为setContentView的原因会一直隐藏键盘 所以做一下操作默认不显示,点击显示
window.clearFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
// 返回
Button btnResert = (Button) window.findViewById(R.id.btn_suer);
btnResert.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
dialog1.dismiss();// 关闭dialog
}
});
}
Style部分代码
<!-- 遮罩层关键属性 0`1-->
<!-- <item name="android:backgroundDimAmount">0</item> -->
<style name="AlertDialogStyle" parent="@android:style/Theme.Dialog">
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:background">@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>
<item name="android:backgroundDimAmount">0</item>
</style>
//动态获取屏幕大小
import android.app.Activity; import android.content.Context; import android.util.DisplayMetrics; public class DisplayUtil { /** 屏幕宽度 */ private static int DisplayWidthPixels = 0; /** 屏幕高度 */ private static int DisplayheightPixels = 0; /** * 获取屏幕参数 * @param context */ private static void getDisplayMetrics(Context context) { DisplayMetrics dm = new DisplayMetrics(); ((Activity) context).getWindowManager().getDefaultDisplay().getMetrics(dm); DisplayWidthPixels = dm.widthPixels;// 宽度 DisplayheightPixels = dm.heightPixels;// 高度 } /** * 获取屏幕宽度 * @param context * @return */ public static int getDisplayWidthPixels(Context context) { if (context == null) { return -1; } if (DisplayWidthPixels == 0) { getDisplayMetrics(context); } return DisplayWidthPixels; } /** * 获取屏幕高度 * @param context * @return */ public static int getDisplayheightPixels(Context context) { if (context == null) { return -1; } if (DisplayheightPixels == 0) { getDisplayMetrics(context); } return DisplayheightPixels; } /** * 将px值转换为dip或dp * * @param pxValue * @return */ public static int px2dip(Context context, float pxValue) { final float scale = context.getResources().getDisplayMetrics().density; return (int) (pxValue / scale + 0.5f); } /** * 将dip或dp值转换为px * * @param dipValue * @return */ public static int dip2px(Context context, float dipValue) { if(context == null){ return 0; } final float scale = context.getResources().getDisplayMetrics().density; return (int) (dipValue * scale + 0.5f); } /** * 将px值转换为sp * * @param pxValue * @return */ public static int px2sp(Context context, float pxValue) { final float fontScale = context.getResources().getDisplayMetrics().scaledDensity; return (int) (pxValue / fontScale + 0.5f); } /** * 将sp值转换为px * @param spValue * @param spValue (DisplayMetrics类中属scaledDensity * @return */ public static int sp2px(Context context, float spValue) { final float fontScale = context.getResources().getDisplayMetrics().scaledDensity; return (int) (spValue * fontScale + 0.5f); } }
到这里就结束,拜拜