主要是全屏和遮罩層\背景色的問題
廢話不多說,直接上代碼:
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); } }
到這裏就結束,拜拜