Android 仿IOS加载数据时弹出背景透明的菊花窗,解决Dialog弹出时状态栏变成黑色的问题

针对Android项目中,加载数据时Dialog弹出导致状态栏变黑的问题,提供了解决方案:通过设置附加的dialog样式实现透明背景,不显示遮罩层,确保状态栏颜色一致,提升用户体验。

做项目的时候状态栏要求使用UI提供的颜色色值,但是当加载数据的进度弹出窗弹出时,状态栏回变黑色,进度条隐藏后又变成配置的颜色,看上去体验上不太好

解决办法:

public class LoadingDialog extends Dialog {

    private View currentView;

    public LoadingDialog(Context context) {
        super(context,R.style.LoadDialog);
        currentView = LayoutInflater.from(context).inflate(R.layout.loading_dialog,null);
        setContentView(currentView);

        //解决进度弹窗出现时,状态栏变成黑色
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            Window window = this.getWindow();
            window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
            window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
            window.setStatusBarColor(Color.TRANSPARENT);
            if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.N){
                try {
                    Class decorViewClazz = Class.forName("com.android.internal.policy.DecorView");
                    Field field = decorViewClazz.getDeclaredField("mSemiTransparentStatusBarColor");
                    field.setAccessible(true);
                    field.setInt(getWindow().getDecorView(), Color.TRANSPARENT);
                } catch (Exception e) {}
            }
        }

        getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
        View mash = currentView.findViewById(R.id.mash);
        mash.setOnClickListener(v->{

        });
    }

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if ((keyCode == KeyEvent.KEYCODE_BACK)) {
            return true;
        }else {
            return super.onKeyDown(keyCode, event);
        }

    }
}

 

附加dialog样式-透明背景,没有遮罩

<style name="LoadDialog" parent="android:style/Theme.Dialog">
    <item name="android:windowBackground">@android:color/transparent</item>
    <item name="android:backgroundDimAmount">0</item>
</style>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值