沉浸式Dialog&状态栏上面显示View


Android Dialog实现在底层控制,显示在顶层,状态栏上|沉浸

demo主要用dialog实现在一个底层view中需要显示一个顶层的view(使用Dialog实现),盖住状态栏,返回键不取消,
允许点击事件向后传递


********注意Dialog实现,需要处理和Activity的依赖,防止崩溃********

package com.miaojun.lottie;

import android.app.Dialog;
import android.content.Context;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.Build;
import android.support.annotation.NonNull;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.TextView;

/**
 * Created by miaojun on 2017/12/12.
 */

public class TestDialog extends Dialog {

    public TestDialog(@NonNull Context context) {
        super(context);
        initView(context);

    }

    private void initView(Context context){
        Window window = getWindow();
        WindowManager.LayoutParams params = window.getAttributes();
	//(下面不获取焦点-FLAG_NOT_FOCUSABLE,下面的可以获取到焦点-FLAG_NOT_TOUCH_MODAL,监听外部点击事件-FLAG_WATCH_OUTSIDE_TOUCH)
        params.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL;
	//开始想使用悬浮窗方式,但是小米手机会有问题
//        params.type = WindowManager.LayoutParams.TYPE_TOAST;
        params.width = WindowManager.LayoutParams.MATCH_PARENT;
        params.height = 300;
        params.gravity = Gravity.TOP;
        window.setAttributes(params);
        window.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
        window.setDimAmount(0);

        TextView textView = new TextView(context);
        textView.setGravity(Gravity.CENTER);
        textView.setBackgroundColor(Color.BLACK);
        textView.setText("这里是顶级view");
        textView.setTextSize(10);
        textView.setTextColor(Color.RED);

        setContentView(textView);
        setCancelable(false);//返回键不消失
        hideSystemUI(textView);

    }

    //盖在状态栏上
    public void hideSystemUI(View view) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            view.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                    | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                    | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                    | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
            );
        }
    }
//    //沉浸式
//    public void hideSystemUI(View view) {
//        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
//            view.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE
//                    | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
//                    | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
//                    | View.SYSTEM_UI_FLAG_FULLSCREEN
//                    | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
//                    | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
//            );
//        }
//    }

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值