将Activity以Dialog的形式出现

话不多说,直接写步骤

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,结果是会出现多个。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值