话不多说,直接写步骤
1、style文件中
<style name="ActivityDialogStyle2" parent="@style/Theme.AppCompat.Dialog">
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowFrame">@null</item>
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="android:backgroundDimEnabled">true</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:backgroundDimAmount">0.4</item>
<item name="android:windowFullscreen">true</item>
<item name="android:adjustViewBounds">true</item>
<item name="android:windowCloseOnTouchOutside">false</item>
</style>
2、清单文件中
<activity
android:name=".SecondActivity"
android:theme="@style/ActivityDialogStyle2">
</activity>
3、Activity中
public class SecondActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
}
@Override
protected void onResume() {
super.onResume();
//设置Activity的透明度为不透明,设置这个是因为如果有两个同样这种Activity,前者会被后者挡住,为了隐藏前者
WindowManager.LayoutParams lp = getWindow().getAttributes();
lp.alpha = 1.0f;
getWindow().setAttributes(lp);
}
@Override
protected void onPause() {
super.onPause();
//设置Activity的透明度为不透明,设置这个是因为如果有两个同样这种Activity,前者会被后者挡住,为了隐藏前者
//隐藏Activiyty,但不销毁它
WindowManager.LayoutParams lp = getWindow().getAttributes();
lp.alpha = 0f;
getWindow().setAttributes(lp);
}
}
4、此时SecondActivity就是以Dialog出现
5、<item name="android:windowCloseOnTouchOutside">false</item>是为了防止点击对话框外面,Dialog消失
6、如果Activity没有像Dialog那样,可以在Activity中设置跟清单文件中一样的主题,如
@Override
public void initTheme() {
setTheme(R.style.ActivityDialogStyle2);
}
7、如果以Dialog形式出现,Activity本身的启动模式可能无效。比如singleTop表示只会出现一个Actvitiy,结果是会出现多个。