如题上图
自定义Dialog源码:
private void initDialog() {
LayoutInflater inflater = LayoutInflater.from(context);
View v = inflater.inflate(R.layout.dialog_wait, null);// 得到加载view
LinearLayout layout = (LinearLayout) v.findViewById(R.id.dialog_view);// 加载布局
/** 创建自定义样式dialog **/
loadingDialog = new Dialog(context, R.style.loading_dialog);
/*** 是否外部点击可以取消dialog */
loadingDialog.setCanceledOnTouchOutside(false);
loadingDialog.setContentView(layout, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT,
LinearLayout.LayoutParams.FILL_PARENT));
}
style源码:
<!-- 自定义loading dialog -->
<style name="loading_dialog" parent="android:style/Theme.Dialog">
<item name="android:windowFrame">@null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowBackground">@drawable/whiterounded_half_bg</item>
<!-- 屏幕内容区域以外的背景是否可以设置灰度值(与backgroundDimAmount搭配使用) -->
<item name="android:backgroundDimEnabled">true</item>
<!-- 灰度值 -->
<item name="android:backgroundDimAmount">0.2</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowContentOverlay">@null</item>
</style>
所以说如果需要设置Actiivty透明
<item name="android:backgroundDimEnabled">true</item>
需要先设置一下 windowIsTranslucent 让window可以透明。。然后在设置window的背景
这时候 activity是否透明还需要看 activity的 content的背景颜色是否是透明的
只需要在layout里设置一下即可。默认为透明的。。#00000000
【如果isTranslucent设置为false background属性将不起作用】
同样的 dialog 透明需要设置一下属性
<!-- 屏幕内容区域以外的背景是否可以设置灰度值(与backgroundDimAmount搭配使用) -->
<item name="android:backgroundDimEnabled">true</item>
<!-- 灰度值 -->
<item name="android:backgroundDimAmount">0.2</item>
另外是否外部点击可以取消dialog为
<span style="white-space:pre"> </span>/*** 是否外部点击可以取消dialog */
loadingDialog.setCanceledOnTouchOutside(false);