笔记记录

Dialog全屏显示状态栏 Dialog全屏设置修改状态栏颜色兼容刘海屏_qijingwang的博客-CSDN博客

Window dialogWindow = mDialog.getWindow();
WindowManager.LayoutParams lp = dialogWindow.getAttributes();
if(Build.VERSION.SDK_INT >= 28)
    lp.layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES;

dialogWindow.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
//                View decorView = dialogWindow.getDecorView();
//                int systemUiVisibility = decorView.getSystemUiVisibility();
//                int flags = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_FULLSCREEN;
//                systemUiVisibility |= flags;
//                dialogWindow.getDecorView().setSystemUiVisibility(systemUiVisibility);
    //dialog全屏显示状态栏
    dialogWindow.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
            | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
    dialogWindow.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
    dialogWindow.setStatusBarColor(Color.TRANSPARENT);
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT && Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
    dialogWindow.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
}
lp.width = LinearLayout.LayoutParams.MATCH_PARENT;
lp.height = WindowManager.LayoutParams.MATCH_PARENT;
lp.alpha = 1.0f; // 透明度
dialogWindow.setAttributes(lp);


====================================================
1. View.SYSTEM_UI_FLAG_VISIBLE:显示状态栏,Activity不全屏显示(恢复到有状态栏的正常情况)。

2. View.INVISIBLE:隐藏状态栏,同时Activity会伸展全屏显示。

3. View.SYSTEM_UI_FLAG_FULLSCREEN:Activity全屏显示,且状态栏被隐藏覆盖掉。

4. View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN:Activity全屏显示,但状态栏不会被隐藏覆盖,状态栏依然可见,Activity顶端布局部分会被状态遮住。

5. View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION:效果同View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN

6. View.SYSTEM_UI_LAYOUT_FLAGS:效果同View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN

7. View.SYSTEM_UI_FLAG_HIDE_NAVIGATION:隐藏虚拟按键(导航栏)。有些手机会用虚拟按键来代替物理按键。

8. View.SYSTEM_UI_FLAG_LOW_PROFILE:状态栏显示处于低能显示状态(low profile模式),状态栏上一些图标显示会被隐藏。

toast 修改背景

Toast toast= Toast.makeText(context, "", Toast.LENGTH_SHORT);
View view = toast.getView();
view.setBackgroundResource(R.drawable.img_dtfzrefresh);
toast.show();

Android 屏幕适配:最全面的解决方案 - 简书 (jianshu.com)

shape动态改颜色

        GradientDrawable drawable = (GradientDrawable) ContextCompat.getDrawable(context, R.drawable.shape_online_white_bg);
        drawable.setColor(Color.RED);
        llDialog.setBackground(drawable);

监听横竖屏切换

        @Override
        public void onConfigurationChanged(Configuration newConfig) {
            super.onConfigurationChanged(newConfig);
            if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
                Toast.makeText(getApplicationContext(), "横屏", Toast.LENGTH_SHORT).show();
            } else {
                Toast.makeText(getApplicationContext(), "竖屏", Toast.LENGTH_SHORT).show();
            }
        }

处理lib包sdk版本与app不一致

<uses-sdk tools:overrideLibrary="android.support.v17.leanback,com.sfit.ctp.info"/>
image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 作为一个开发人员,屁股决定脑袋,偶尔需要换位思考,站在UI设计人员的角度考虑下,想想UI设计是怎么来的。 这里可以...
    梧叶已秋声阅读 1,644评论 0 0
  • 这是android伸手党知识收集系列的第六篇,来整理android开发进阶相关知识:Window,View,事件分...
    Dear_HS阅读 14,639评论 20 386
  • 黑马程序员的视频: 只要精通一门技能就能防身,切不可范范而学不可只懂皮毛。 Log.v() 最低级,打印意义最小的...
    lwwlsky阅读 1,153评论 0 2
  • 用到的组件 1、通过CocoaPods安装 2、第三方类库安装 3、第三方服务 友盟社会化分享组件 友盟用户反馈 ...
    SunnyLeong阅读 14,741评论 1 180
  • 我是黑夜里大雨纷飞的人啊 1 “又到一年六月,有人笑有人哭,有人欢乐有人忧愁,有人惊喜有人失落,有的觉得收获满满有...
    陌忘宇阅读 8,613评论 28 53