/**
* 遮罩层效果
*
* @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>