一、应用场景
当需要使用弹窗时,可以选择AlertDialog或者将Activity设置成Dialog样式两种方式,都可以实现功能,但出于代码的优化和复用性。Dialog样式的Activity能够更好的封装
Intent in = new Intent(mContext,ShareActivity.class);
in.putExtra("title","袭云踏雾 随云行远~");
in.putExtra("content", "我在云袭赚了好多积分,还有丰富的商品等我去领,推荐给你!\n" +
"注册并填写我的邀请码:*******能立刻能兑现哦~\n");
startActivity(in);
像这样直接传递要分享的内容就可以了
二、使用方式
1.首先需要自定义一个DialogStyle
<style name="MyDialogStyle" parent="android:style/Theme.Dialog">
<item name="android:windowBackground">@android:color/transparent</item>
背景透明
<item name="android:windowFrame">@null</item>
边框
<item name="android:windowNoTitle">true</item>
无标题
<item name="android:windowIsFloating">true</item>
浮在activity之上
<item name="android:windowIsTranslucent">true</item>
<item
name="android:windowContentOverlay">@null</item>
<item
动画样式
name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
<item name="android:backgroundDimEnabled">true</item>
对话框外点击消失对话框
<item name="android:windowCloseOnTouchOutside">true</item>
</style>
2.设置好样式后,在清单文件中配置这个样式
<activity
android:name=".activity.ShareActivity"
android:screenOrientation="portrait"
android:theme="@style/ShareDialog"
">
3.如果想设置弹进弹出的动画样式
<style name="dialog_animation" parent="@android:style/Animation.Dialog">
<item name="@android:windowEnterAnimation">@anim/dialog_enter</item>
<item name="@android:windowExitAnimation">@anim/dialog_exit</item>
</style>
这样就能把activity当成dialog显示了,但是会发现弹出的dialog据屏幕有一定间距,这是因为我们继承了
Theme.Dialog而父类中实现了
<item name="listPreferredItemPaddingLeft">10dip</item>
<item name="listPreferredItemPaddingRight">10dip</item>
<item name="listPreferredItemPaddingStart">10dip</item>
<item name="listPreferredItemPaddingEnd">10dip</item>
所以造成了布局有边距。
解决方案呢,就是在代码中设置间距覆盖掉原来布局
WindowManager windowManager = getWindowManager();
Display defaultDisplay = windowManager.getDefaultDisplay();
WindowManager.LayoutParams params = getWindow().getAttributes();
params.width=(int)(defaultDisplay.getWidth()*1);
getWindow().setAttributes(params);
这样就能很好的实现功能。
ps:还有一点需要注意的是,这设置Activity布局的时候,不要让布局填满整个页面,这样就造成了点击dialog空白处 而不能把dialog隐藏掉
本文介绍如何使用Dialog样式的Activity,并提供了具体的实现步骤。包括自定义Dialog样式、设置动画效果及解决间距问题的方法。
667

被折叠的 条评论
为什么被折叠?



