首页
学习
活动
专区
圈层
工具
发布

深入理解 Android Window系统

本文将深入介绍与Android窗口系统相关的重要概念,包括不同类型的窗口、创建窗口、窗口的特性和标志、生命周期以及如何创建自定义窗口。让我们开始吧!...使用DecorView示例 以下是一个示例代码,演示如何在Activity中获取DecorView并更改其背景颜色: // 获取当前Activity的DecorView View decorView =...getWindow().getDecorView(); // 更改DecorView的背景颜色 decorView.setBackgroundColor(Color.BLUE); 上述代码中,我们首先获取当前...Activity的DecorView,然后使用setBackgroundColor方法将其背景颜色更改为蓝色。...自定义Window 最后,让我们简要介绍一下如何创建自定义Window。自定义Window允许您完全控制应用程序的UI,以实现特定的界面效果。

3.1K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    一个Android沉浸式状态栏上的黑科技

    如果背景图片的颜色和状态栏图标的颜色非常接近的话,那么的确会造成状态栏图标看不清楚的情况。 这里我举了一些沉浸式效果做得不太好的案例,具体是什么App我就不提了。...即使出现浅色的背景图,由于阴影层的存在,状态栏上的图标依然是可以看得清的。 但如果只是用这个方案解决的话,那么我就不会写本篇文章了。因为这里我们会采用第二种方案,从技术层面解决。...首先从技术层面进行分析,要解决这个问题,无非就是需要将背景图颜色和状态栏图标的颜色区分开。...好了,现在有了这个法宝来控制状态栏图标的颜色,那么接下来的问题就是,什么时候应该显示白色的状态栏图标?什么时候应该显示黑色的状态栏图标?...这里我准备了几张不同的背景图,由Palette解析之后,会根据识别出的颜色值动态更改状态栏图标的颜色。 这是深色背景图的效果。 这是浅色背景图的效果。

    2.1K10

    Android入门学习笔记(2)UI布局

    布局元素将根据内容更改大小。设置一个视图的尺寸为wrap_content大体等同于设置Windows控件的Autosize属性为True。...那么如果考虑低版本的使用情况你就需要用fill_parent了 ViewGroup.MarginLayoutParams类: image.png Android UI组件的层次结构 image.png...UI界面的控制 1.在XML布局文件中控制UI界面 2.在java代码中控制UI界面 3.使用XML和java代码混合控制UI界面 4.开发自定义的View 代码控制UI的页面实例: package...(主题) image.png 一开始建立项目的时候有主题选择的选项,对应manifest的这一段 res的style.xml中可以调节主题的一些选项 image.png 红色框框中的内容可以选择主题,更改主题栏的内容...--状态栏颜色--> @color/colorPrimaryDark <!

    1.2K41

    沉浸式管理:让你的APP更优雅

    眼神好的同学已经看到上图中给了四种解决方案啦,在这里我就说一 1.使用dimen自定义状态栏高度 ? 使用系统的fitsSystemWindows属性 ?...修改状态栏字体颜色为深色 ? ? 设置状态栏和导航栏透明度 ? ? ? 解决EditText和软键盘的问题 ? ?...View.INVISIBLE:隐藏状态栏,同时Activity会伸展全屏显示。 View.SYSTEM_UI_FLAG_FULLSCREEN:Activity全屏显示,且状态栏被隐藏覆盖掉。...既然出现这样的问题,就想着怎么去解决吧!就这样,我乖乖去看看SystemBarTint的源代码,哦!...写这个库的目的就是方便大家的开发,解决大家在沉浸式方面出现的问题。如果还有不懂得地方可以去demo里看看,或者直接底下留言!

    2.3K30

    小程序.我还是不知道起什么名字

    抱歉,写错地方了 如果不想在某个页面中使用全局默认样式,那么只需要在相应页面的wxss文件中重新定义这个样式即可。小程序会优先选择页面的wxss文件,而不是app.wxss文件。...如何解决这个问题呢? 可以通过给container view一个固定的高度来解决这个问题,但这并不是最好的办法。...既然这个导航栏无法取消,如何让整个页面只有一种颜色呢?下面我们考虑将导航栏的颜色和页面的背景色设置成同一个颜色 。...在前面 我使用了app.json的一个配置项pages,用来注册小程序页面文件. window配置可项用来设置小程序的状态栏、导航栏、标题和窗口的背景色。...我先来学习window配置项下能够更改导航栏颜色的属性:navigationBarBackgroundColor。

    2K20

    关于 Android 状态栏的适配总结

    padding,给这个 padding 设置一个合适的颜色来充当系统状态栏的颜色就可以了。...其实就是相当于给布局设置了 padding top(高度相当于系统状态栏的高度),但是考虑到兼容性的问题,如果你直接在布局中设置 paddingtop 而不是通过 FitsSystemWindows 这个属性...注意在使用 fitsSystemWindow 的时候,颜色问题,不同的手机系统,可能会造成延伸到状态栏的那一块颜色不同,理论上颜色应该和根布局的颜色一样。...Android5.0透明no.png Android 6.0 在 Android 6.0 添加了可以更改状态栏字体颜色的方法,别的都是和 Android 5.0 一样的。 状态栏字体颜色默认是白色。...这个 insets 会告诉我们 status bar、input method 和其他系统 window 的空间。

    1.6K20

    Android适配全面总结(三)----ROM适配

    ---- 7、关于华为手机App权限更改导致应用重启的坑(暂且我还没有很好的解决方式) 问题重现: 1.当我们在华为手机上打开一个应用,将应用退至后台进程中。...重新再创建一下需要展示的fragment 但是我想知道framework层是如何操作的?不知道有没有大佬能够分析一下源码?...(其他手机遇到同样问题,也可以用这个方式解决。)...---- 二、开发中遇到的问题在不同手机上的处理方式 (一)沉浸式状态栏适配 这里讲一下华为手机沉浸式状态栏和虚拟键盘冲突问题怎么解决: 由于指数限制,详细代码请看我的github https:/...在做splash页面的时候,通过windowBackground设置背景图片,在带虚拟按键的手机上,虚拟按键会遮挡图片的底部,这个问题的解决方式: 参考:http://blog.csdn.net/c15522627353

    2.7K10

    Android 透明状态栏(伪沉浸式)

    // isLightStatusBarAfter23 控制是否更改状态栏图标文字颜色 int flag = isLightStatusBarAfter23 ?...适配 4.4 4.4 版本需要透明状态栏,将内容往下移,然后再加一个和状态栏一样大小的 View 覆盖到状态栏上面。...状态的重置 因为考虑同一个 Activity 多次改变状态栏颜色的情况,遇到的一个比较烦的问题是,许多状态需要重置,不然就会影响下一次,而且如果设置图片又改成颜色的,那么要考虑的更多,一会希望图片内容顶到状态栏下面...,一会希望内容能在状态栏下面。...后来考虑将颜色和图片的逻辑分开,因为有图片时要重置的和只是改状态栏颜色的不一样,放一起如果只是改状态栏颜色会走大量无意义的逻辑,当然 4.4 版本也是要将内容往下,也要特殊考虑。

    2.8K20

    Android 沉浸式解析和轮子使用

    1.3 Android 6.0 +实现状态栏字色和图标浅黑色 使用 Android6.0 以下版本沉浸式的时候会遇到一个问题,那就是 Android 系统状态栏的字色和图标颜色为白色,当状态栏颜色接近浅色的时候...Android 6.0 新添加了一个属性来解决这个问题,属性是 SYSTEMUIFLAGLIGHTSTATUS_BAR,可以设置状态栏字色和图标浅黑色。...(R.color.colorPrimary) //同时自定义状态栏和导航栏颜色,不写默认状态栏为透明色,导航栏为黑色 .statusBarAlpha(0.3f) //状态栏透明度...popupWindow.setClippingEnabled(false); 2.6 状态栏与布局顶部重叠解决方案,六种方案任选其一(可选) 正常使用 ZanImmersionBar 一般不需要考虑重叠问题但在项目中接入...之前说到 Android4.4 版本的时候解决重叠的方式是一种,也可以参考一下几种方式解决状态栏与布局顶部重叠问题。

    4.1K10

    全屏、沉浸式、fitSystemWindow使用及原理分析:全方位控制“沉浸式”的实现

    APP端之所以能够更改状态栏的颜色、导航栏的颜色,其实还是操作自己的View更改UI。...可以这么理解:状态栏与导航栏拥有自己独立的窗口,而且这两个窗口的优先级较高,会悬浮在所有窗口之上,可以把系统自身的状态栏与导航栏看做全透明的,之所有会有背景颜色,是因为下层显示界面在被覆盖的区域添加了颜色...下面就来分析一下,APP层的API如何影响SystemUI的显示的,并一步步解开所谓沉浸式与全屏的原理,首先看一下如何更改状态栏颜色。...想要解决这个问题,就牵扯到下面的fitsystemwindow的处理。...,那么用户的UI视图就不会被覆盖。

    6.6K40

    Flutter+Dart聊天实例|flutter仿微信聊天|红包|朋友圈

    视频组件:chewie: ^0.9.7 图片/拍照:image_picker: ^0.6.6+1 图片预览组件:photo_view: ^0.9.2 弹窗组件:showModalBottomSheet/AlertDialog...png 029360截图20200512004708377.png 031360截图20200512005508992.png flutter顶部沉浸式状态条+底部tabbar 至于在flutter中如何实现顶部透明状态栏...(去掉状态栏黑色半透明背景),去掉右上角banner,详细介绍可以去看这篇文章 https://segmentfault.com/a/1190000022483730 flutter图标Icon及自定义...IconData组件 flutter中自带图标使用非常简单 Icon(Icons.search) 可是如果想要自定义图标,如使用阿里图标iconfont如何实现,这时就需要用到IconData来实现自定义图标了...支持自定义红点大小、颜色,默认数字超过99就...显示; 360截图20200513091117720.png class GStyle { // 消息红点 static badge(int

    7.3K31

    安卓12+后的系统默认使用Splash配置(icon+背景色)导致重复启动Splash屏幕

    国内的设备大部分没有强制使用,所以不影响,不过有其他Splash问题本文也会给出解决方案,比如全屏幕,透明状态栏,避免home(主页)短暂的闪烁,一般是空的Header或者自定义了Header会出现这个问题...有一个其他的方案就是将系统Splash配置设置和自定义的一样,但是这里有个问题就是:如过你的自定义是个广告屏幕或者不是纯色,就很麻烦。...比如渐变色的,这个时候状态栏就会很不和谐,很突兀(后面会给出代码,让状态栏后面能够渲染Splash。既然方向确定了,开始写代码。...-- 问题就出现在这里,在启动自定义Splash前,先执行系统的启动主题 ,我这里是一个亮色,状态栏文字默认是黑色--> 问题]修复导航头Header/自定义Header闪烁这个问题的解决其实很取巧,不需要代码演示,其实闪烁的原因就是因为

    61510

    ​Flutter实战 | 从 0 搭建「网易云音乐」APP(八、我的页面)

    理清楚逻辑后,来看页面如何展示: ? 一共分为两块:「创建的歌单」、「收藏的歌单」。 两个模块的 UI 其实是一样的,只不过分在了不同的列表中。 那么先来看一下返回的数据是什么样的: ?...这个功能首先我想到的是 ExpansionPanelList,但是他和我们的需求不太搭,包括样式和逻辑。 那我们就自定义一个,怎么来做到展开和收回?...而且在展开/收回的时候箭头要来回的变化,我在前面也写过一篇文章:Flutter | 求求你们了,切换 Widget 的时候加上动画吧,这个时候就派上用场了。...剩下的还有一点就是「提交」按钮的颜色问题,当我们没有写歌单标题的时候,「提交」按钮要置灰, 这里有一个小窍门就是 如果 FlatButton 的 onPressed 为 null,那么这个按钮的颜色就是灰色的...该项目是我本人自己在工作之余写的,所以进度不会很快,但是会一直写下去。 大家如果有好的建议的话,欢迎提 issue,我会在第一时间回复。

    1.8K00

    小程序实战(三) - head组件的封装与使用

    阅读本文你可知道 如何在小程序中进行head配置 如何封装一个自定义head组件 默认的head配置方式 微信小程序的head一般是开发者通过在app.json来设置统一的样式,又或者在每个页面的json...) 单页面配置 除此之外,在使用默认配置head的情况下,我们可以在想要自定义head内容的页面对应的json文字中进行配置,比如我想更改个人设置页面head文本内容,即在person.json中进行如下配置即可...{ "usingComponents": {}, "navigationBarTitleText": "个人" } 自定义封装head组件 首先,我们要进行自定义封装的目的是什么?...应用中需要换肤功能,需要根据设置来更改head的背景颜色。...,我通过如下图所示分层介绍一下 image.png res.statusBarHeight为通过api获取的状态栏高度 capsule是记录胶囊信息的变量对象,其top属性值为以手机左上角为坐标原点,

    1.5K20

    android 设置系统dialog 样式

    在这里我以Theme.Holo.Light.Dialog为例,代码如下:   alertDialog的style,设定了窗口背景为透明,以及windowContentOverlay为null这两个重要属性,否则你会看到在AlertDialog下面还有一层对话框的背景,或者是对话框的背景遮住了所有内容这样的问题存在...8、指定AlertDialog的主题。   我们需要在第4步所说的自定义的AppTheme中,添加一行代码来指定要使用的AlertDialog的style,代码如下:   ?   ...如果你修改了对话框的主题颜色,那么标题下面的蓝色的线肯定会让你很郁闷。如果对话框较少,你可以选择隐藏标题,然后自定义一个包含了标题的View来设置为对话框的内容。...附 修改  标题和线 颜色 方法  里面的color自己定义 //修改默认AlertDialog的标题颜色 和 下面蓝色线的颜色 public static void dialogTitleLineColor

    1.9K20

    关于 Android 中的各种 Bar 和“透明状态栏”的一些知识

    此篇文章主要讲解关于沉浸式状态栏,程序全屏和分清状态栏、ActionBar、ToolBar 的一些知识内容。主要是讲解如何适配状态栏。...关于沉浸式和透明式概念说明 在谷歌官方中: 在 Android 4.4 Google 引入了可以在阅读电子书、玩游戏、看电影时支持全屏模式(Immersive Mode 沉浸模式),同时也支持更改修改状态栏的颜色...STABLE 就是会始终给系统 UI 保留一个空间(不管系统 UI 有没有消失,并且悬浮在我们自己的 UI 视图上面 ) // 可以看到这种效果,状态栏仍然还在,只是你仔细发现,原布局有一部分被状态栏给覆盖了...Android 4.4 修改状态栏颜色 // 将状态栏设置为透明(需要 API 19) 设置成这种模式后,状态栏会变成透明,我们的内容布局(只是我们 Activity 对应的布局,不包含 Window...如果设置了这个属性为 true,那么则是保留系统 UI 的位置(实际上是固定了我们的 UI 的高度,我们 UI 的高度就是屏幕去掉系统栏高度后的高度),那么这个时候你如何设置了 FLAG_LAYOUT_HIDE_NAVIGATION

    3.9K10
    领券