您的位置:首页 > 移动开发 > Android开发

Android:Dialog和Activity的style的深入理解及对话框透明

2014-07-28 23:35 567 查看
<!-- 自定义dialog 继承父类 android:style/Theme.Dialog-->

<style name="DialogCustomTest" parent="android:style/Theme.Dialog">

<!-- 边框 -->

<item name="android:windowFrame">@null</item >

<!-- 没有标题 -->

<item name="android:windowNoTitle">true</item>

<!-- 背景透明 -->

<item name="android:windowIsTranslucent">false</item>

<!-- 对话框的内容窗口背景色:让整个对话框的背景为透明-->

<item name="android:windowBackground">@color/all_transparent</item>

<!-- 整个屏幕背景是透明的 -->

<!-- <item name="android:background">@android:color/transparent</item> -->

<!-- 整个屏幕背景的灰度值:默认是黑色的 :遮障层的灰度-->

<!-- <item name="android:backgroundDimAmount">0.5</item> -->

<!-- dialog的整个屏幕的背景是否有遮障层 当设置这个最后时,上边两行不起作用-->

<item name="android:backgroundDimEnabled">false</item>

<!-- 重要,Dialog进出的显示动画 -->

<item name="android:windowAnimationStyle">@android:style/Animation.Translucent</item>

<!-- 是否有覆盖 -->

<item name="android:windowContentOverlay">@null</item>

</style>

<style name="dialog" parent="@android:style/Theme.Dialog" >

<item name="android:windowFrame"> @null </item><!-- 边框 -->

<item name="android:windowIsFloating"> true </item><!-- 是否浮现在activity之上 -->

<item name="android:windowIsTranslucent">true</item><!-- 半透明 -->

<item name="android:windowNoTitle">true</item><!-- 无标题 -->

<item name="android:windowBackground">@drawable/bg</item><!-- 对话框的背景-->

<item name="android:backgroundDimEnabled">false</item><!-- 模糊 -->

</style>

<style name="transparent" parent="android:Theme">

<item name="android:windowBackground">@drawable/bg</item><!-- 此对话框的背景 -->

<item name="android:windowIsTranslucent">true</item><!-- 对话框是否透明 -->

<item name="android:windowContentOverlay">@null</item><!-- 对话框是否有遮盖 -->

<item name="android:windowNoTitle">true</item><!-- 对话框无标题 -->

<item name="android:windowIsFloating">true</item><!-- 对话框是否浮动 -->

<item name="android:backgroundDimEnabled">false</item>

</style>
样式:转自:http://www.cnblogs.com/0616--ataozhijia/archive/2012/12/12/2815224.html

以上是自定义Dialgog可以使用自定义样式:

关于<item name="android:windowAnimationStyle">@android:style/Animation.Translucent</item> 重要,Dialog进出的显示动画要特别注意,可以自定义Dialog进出的动画,但是item的名字必须和下面的一样,以确定Android系统能够认识出来。
----------------------------------------------

Activity 自定义样式:

同样的每个item对应的name不能变,以保证Android系统能够辨认出来。

转自:http://blog.csdn.net/ooo4561213/article/details/6654961

首先自定义一个类,j继承自dialog类。

设置透明度,主要设置的是dialog自身的透明度

Java代码




WindowManager.LayoutParams lp=getWindow().getAttributes();

lp.alpha=1.0f;

getWindow().setAttributes(lp);

[java] view
plaincopy

WindowManager.LayoutParams lp=dialog.getWindow().getAttributes();

lp.alpha=1.0f;

dialog.getWindow().setAttributes(lp);

alpha在0.0f到1.0f之间。1.0完全不透明,0.0f完全透明,自身不可见。

设置幕布,也就是本dialog的背景层。

Java代码




setContentView(R.layout.dialog);

WindowManager.LayoutParams lp=dialog.getWindow().getAttributes();

getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);

lp.dimAmount=1.0f;

getWindow().setAttributes(lp);

[java] view
plaincopy

dialog.setContentView(R.layout.dialog);

WindowManager.LayoutParams lp=dialog.getWindow().getAttributes();

lp.dimAmount=1.0f;

dialog.getWindow().setAttributes(lp);

dialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);

dimAmount在0.0f和1.0f之间,0.0f完全不暗,即背景是可见的 ,1.0f时候,背景全部变黑暗。

如果要达到背景全部变暗的效果,需要设置 dialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);

,否则,背景无效果。

此方法可以用来设置浮动层。呵呵!

例子:

public void createDialog(Context context){

Dialog dialog = new Dialog(context,R.style.transparent);

View view = LayoutInflater.from(context).inflate(R.layout.dialog_test_item, null);

dialog.setContentView(view);

WindowManager.LayoutParams a = dialog.getWindow().getAttributes();

a.gravity = Gravity.TOP;//设置对话框显示的位置

a.dimAmount = 0.0f; // 去背景遮盖:即背景不会遮盖activity的内容

a.alpha = 0.7f;//window 透明度

dialog.getWindow().setAttributes(a);

dialog.show();

dialog.setOnCancelListener(null);//关闭对话框

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: