透明背景 点击后消失 自定义view 自定义位置。
public static class CustomViewDialog extends Dialog {
private int gravity, xOffset, yOffset;
public CustomViewDialog(View contentView, int duration) {
super(HSApplication.getContext(), R.style.CustomToastDialog);
init(contentView, duration, Gravity.CENTER, 0, 0);
}
public CustomViewDialog(View contentView, int duration, int gravity, int xOffset, int yOffset) {
super(HSApplication.getContext(), R.style.CustomToastDialog);
init(contentView, duration, gravity, xOffset, yOffset);
}
private void init(View contentView, int duration, int gravity, int xOffSet, int yOffSet) {
setContentView(contentView);
setTitle(null);
contentView.postDelayed(new Runnable() {
@Override
public void run() {
CustomViewDialog.this.cancel();
}
}, duration);
setCanceledOnTouchOutside(true);
this.gravity = gravity;
this.xOffset = xOffSet;
this.yOffset = yOffSet;
}
@Override
public void show() {
Window window = getWindow();
if (window != null) {
window.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
WindowManager.LayoutParams params = window.getAttributes();
params.y = yOffset;
params.x = xOffset;
window.setGravity(gravity);
window.setAttributes(params);
window.setType(WindowManager.LayoutParams.TYPE_TOAST);
}
super.show();
}
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
return onTouchEvent(ev);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
cancel();
return false;
}
}
<style name="CustomToastDialog" parent="@android:style/Theme.Dialog">
<item name="android:windowFrame">@null</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
<item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowNoTitle">true</item>
</style>