自定义AlertDialog的Style并延迟消失Dialog

private AlertDialog dialog;
private static int DIALOG_SUCCESS = 1;
private Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
if (null != dialog) {
if (DIALOG_SUCCESS == msg.what && dialog.isShowing()) {
dialog.dismiss();
finish();
} else
dialog.dismiss();
}
}
};

由于本项目业务需要,布局仅显示附带一张图片的textview。

dialog = new AlertDialog.Builder(this, R.style.NoticeDialogStyle).create();
dialog.show();
dialog.setCanceledOnTouchOutside(false);
Window window = dialog.getWindow();
if (code.equals(Constants.RESULT_OK)) {
window.setContentView(R.layout.include_release_notice_success);
mHandler.sendEmptyMessageDelayed(DIALOG_SUCCESS, 2000);
setResult(REQUEST_RELEASE);
} else {
window.setContentView(R.layout.include_release_notice_fail);
int DIALOG_FAIL = 0;
mHandler.sendEmptyMessageDelayed(DIALOG_FAIL, 2000);
}

其中R.style.NoticeDialogStyle需要在styles文件中自定义:

<style name="NoticeDialogStyle">
//使透明,否则边框弧度之外仍存在背景色
<item name="android:windowBackground">@android:color/transparent</item>
//使漂浮,否则满屏
<item name="android:windowIsFloating">true</item>
<item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
</style>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容