Android中创建具有Dialog样式的Activity
发布时间
阅读量:
阅读量
Android中创建具有Dialog样式的Activity
简单描述来说Dialog样式的Activity就是具有Dialog的外观和Activity特性的一种特殊的Dialog。
那么问题来了,既然有了一般的Dialog为什么还需要Dialog样式的Activity来充当Dialog?因为它本质上是一个Activity,具有了一些Dialog没有的特性:
- 拥有自己独立的生命周期,便于管理。
- 它是一个Activity,便于处理复杂业务。
如何创建Dialog样式的Activity
可按照以下步骤依次进行:
创建DialogActivity。
在styles.xml文件中创建一个parent为Dialog样式的style,并设置其他属性。
<style name="DialogActivityTheme" parent="Theme.AppCompat.Dialog">
<item name="android:windowTranslucentStatus">true</item><!--透明状态栏并占用状态栏位置 -->
<item name="android:windowIsTranslucent">true</item><!-- 半透明 -->
<item name="android:windowBackground">@color/bg_dialog</item>
<item name="android:backgroundDimEnabled">true</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowCloseOnTouchOutside">false</item>
<item name="android:backgroundDimAmount">0.5</item><!-- 背景模糊的透明度 数值越小越透明-->
<item name="android:windowIsFloating">true</item><!-- 浮现在Activity之上 -->
<item name="windowNoTitle">true</item><!-- 无标题 -->
<item name="android:windowAnimationStyle">@null</item><!-- 进入和退出动画 -->
</style>
在AndroidManifest文件中将Activity的Theme设置为DialogActivityTheme。
<activity
android:name=".dialog.DialogActivity"
android:theme="@style/DialogActivityTheme" />
在DialogActivity中设置布局的范围和位置。
setContentView(R.layout.activity_dialog);
//设置内容占据全屏
getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
getWindow().setGravity(Gravity.CENTER);
打开和关闭DialogActivity。
//打开Dialog
public void showDialogActivity(View view) {
Intent intent = new Intent(this, DialogActivity.class);
startActivity(intent);
}
.............
//关闭Dialog
public void closeDialogActivity(View view) {
finish();
}
全部评论 (0)
还没有任何评论哟~
