/** * 遮罩层效果 * * @param process * 主要实现layoutId布局中的查找控件并绑数据和事件并关联到dialog * @param maskStyle * 风格 <0时用默认 * @param layoutId * 布局 <0时用默认 * @param msgTip * 展示的提示信息 * @param listener * 窗口消失时监听接口,为Null空时不处理 * */ public static void maskLayerDialog(Context context, int maskStyle, int layoutId, String msgTip, MaskLayerDialog process, final OnCancelListener listener) { if (maskStyle < 0) maskStyle = R.style.dialog_translucent; if (layoutId < 0) layoutId = R.layout.mask_layout; final Dialog dialog = new Dialog(context, maskStyle); dialog.setContentView(layoutId); if (layoutId == R.layout.mask_layout) { // View v= LayoutInflater.from(context).inflate(layoutId, null); // TextView message = (TextView)v.findViewById(R.id.maskMsg); TextView msg = (TextView) dialog.getWindow().findViewById( R.id.maskMsg); msg.setText(msgTip); } dialog.setCanceledOnTouchOutside(true); dialog.setCancelable(true); if (listener != null) dialog.setOnCancelListener(listener); // 设置显示位置 Window window = dialog.getWindow(); // 设置显示动画 WindowManager.LayoutParams wl = window.getAttributes(); wl.x = 0; wl.y = 200;// ((Activity)context).getWindowManager().getDefaultDisplay().getHeight()+100; wl.width = 280; wl.height = 60; dialog.onWindowAttributesChanged(wl); if (process != null) { process.inintLayout(dialog); } if (dialog != null && !dialog.isShowing()) { dialog.show(); } } public interface MaskLayerDialog { public void inintLayout(Dialog dialog); } public static int dip2px(Context context, float dipValue) { final float scale = context.getResources().getDisplayMetrics().density; return (int) (dipValue * scale + 0.5f); } public static int px2dip(Context context, float pxValue) { final float scale = context.getResources().getDisplayMetrics().density; return (int) (pxValue / scale + 0.5f); }
<!-- 遮罩层效果 --> <style name="dialog_translucent" parent="@android:style/Theme.Dialog"> <item name="android:windowFrame">@null</item><!-- 边框 --> <item name="android:windowIsFloating">true</item><!-- 是否悬浮在activity上 --> <item name="android:windowIsTranslucent">false</item><!-- 半透明 --> <item name="android:windowNoTitle">true</item><!-- 无标题 --> <item name="android:windowBackground">@drawable/bgconfig</item><!-- 背景透明 --> <item name="android:backgroundDimEnabled">true</item><!-- 模糊 --> <item name="android:backgroundDimAmount">0.6</item><!-- 灰度 --> <item name="android:windowContentOverlay">@null</item><!-- 对话框是否有遮盖 --> <item name="android:windowAnimationStyle">@style/dialog_animation</item><!-- 弹出或者进入时的动画效果 --> <item name="android:colorBackgroundCacheHint">@null</item><!-- 背景缓存颜色 --> </style>
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center_vertical" android:orientation="vertical" > <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:id="@+id/maskMsg" android:text="操作成功"/> </LinearLayout>