主要是全屏和遮罩层\背景色的问题
废话不多说,直接上代码:
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();
//点击空白和返回不消失false,消失true
dialog1.setCancelable(true);
dialog1.setCanceledOnTouchOutside(true);
// show方法放在此处
// dialog1.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);
// 因为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) {
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);
}
}
到这里就结束,拜拜