Activity,然后下个 Activity 打开时将背景设置成上个界面截图传过来的图片,然后再对根布局做放大动画,动画结束后将背景取消掉。...在设置了 android:windowIsTranslucent=true 时,有的盒子界面就会是透明的,即使你设置了一张不透明的背景图,但透明度不会很明显。...有的盒子则是在新的 Activity 打开时,如果 view 没有完全加载出来,则会显示上个 Activity 的界面,造成的现象就是打开新 Activity 时,会一瞬间闪过上个界面的画面。...网上有一些介绍说:在代码动态修改 style 的,但打开那些文章你会发现,说的是动态修改,但基本都要求要么在 super.onCreate() 之前调用,要么在 setContentLayout() 之前...我们只要通过反射,在动画开始之前调用 Activity 的 convertToTranslucent() 将 Activity 设置成半透明的,动画结束再调用 convertFromTranslucent
我们在 Android 10 中添加了新的系统导航模式,用户可以通过手势交互执行后退、返回至主屏以及打开设备助手等操作。 ?...现有的三键导航模式 (包含后退、返回首页以及切换最近使用的应用) 会被保留。搭载 Android 10 及以上版本系统的所有设备都要求保留这一导航模式。...全面屏幕体验 我使用 "边到边" (edge-to-edge) 一词来描述那种将内容铺满整个屏幕,以实现更沉浸视觉体验的应用。默认情况下,应用内容的绘制范围从顶部状态栏下方开始,延伸至底部导航栏上方。...@android:color/transparent 在 Android 10 上,系统会负责在所有导航模式下确保系统栏的内容可见 (包括时间、图标、拖拽条等)...△ 在 Android 10 上选择按键导航模式时,系统会在按钮后方提供半透明遮盖 这两种操作都是为了确保用户始终可以看到系统栏的内容。系统选择采用哪种做法取决于多个因素。
其实Android studio的出现很大程度上方便了我们Android开发人员,今天我们说说怎么构建我们自己的库。...沉侵式状态栏默认支持到4.4版本(5.0以后是系统默认支持的,对于5.0之前的是通过绘制一个和状态栏大小相等的矩形)。...decorView.addView(statusView); setRootView(activity); } /** * 使状态栏半透明 * 适用于图片作为背景的界面...(activity, DEFAULT_STATUS_BAR_ALPHA); } /** * 使状态栏半透明 * 适用于图片作为背景的界面,此时需要图片填充到状态栏..., statusBarAlpha)); } /** * 生成一个和状态栏大小相同的彩色矩形条 */ private static View createStatusBarView
确实,一款漂亮的锁屏能为手机增色不少,但锁屏存在的核心目的主要是三个:保护自己手机的隐私,防止误操作,在不关闭系统软件的情况下节省电量。 ...这样的设定对于看图软件,视频软件等等没什么大问题,但是对于游戏之类用户需要经常点击屏幕的 App,那就几乎是悲剧了——这也是为什么你在 Android 4.4 之前找不到什么全屏模式会自动隐藏导航栏的应用...,短暂调出的状态栏和导航栏会呈半透明状态,并且在一段时间内或者用户与应用内元素进行互动的情况下自动隐藏,沉浸模式的四种状态如下图。...下面,我们通过一个例子,将这些标签应用于锁屏页,实现对Navigation Bar的自动隐藏,同时保留Status Bar。...现在除了原有的“半透明”模式以外,还有“全透明”以及“变色”模式,一种会完全隐藏背景,另一种可以取色作为背景颜色,多种样式的透明栏如下图(上图为透明状态栏,下图为透明导航栏): ? ?
我们在 Android 10 中添加了新的系统导航模式,用户可以通过手势交互执行后退、返回至主屏以及打开设备助手等操作。...现有的三键导航模式 (包含后退、返回首页以及切换最近使用的应用) 会被保留。搭载 Android 10 及以上版本系统的所有设备都要求保留这一导航模式。...全面屏幕体验 我使用 "边到边" (edge-to-edge) 一词来描述那种将内容铺满整个屏幕,以实现更沉浸视觉体验的应用。默认情况下,应用内容的绘制范围从顶部状态栏下方开始,延伸至底部导航栏上方。...@android:color/transparent 在 Android 10 上,系统会负责在所有导航模式下确保系统栏的内容可见 (包括时间、图标、拖拽条等)...△ 在 Android 10 上选择按键导航模式时,系统会在按钮后方提供半透明遮盖 这两种操作都是为了确保用户始终可以看到系统栏的内容。系统选择采用哪种做法取决于多个因素。
第四部分:ViewModel、半透明 Activity 及启动模式 (即本文) 为了更方便地查询,你可以去查阅 PDF 版本的图表备忘录。...下载 ViewModel 图表 半透明 Activity 半透明的 activity 有半透明(通常是透明的)的背景,所以用户仍然可以看到该 activity 下面是什么。...当一个 activity 的主题设置了 android:windowIsTranslucent 属性时,生命周期稍有变化:背景后面的 activity 不会被停止,只会被暂停,所以可以继续接收 UI 的更新...常规 activity 和半透明 activity 之间的比较 此外,当返回到一个任务时,这两个 activity 都会被恢复,重走 onRestart 和 onStart 方法,但只有半透明的 activity...按下 home 键,回到带有半透明 activity 的应用程序 下载半透明 activity 图表 启动模式 处理任务和回退栈的推荐方法主要是:别处理 — 你应该采用默认行为。
确实,一款漂亮的锁屏能为手机增色不少,但锁屏存在的核心目的主要是三个:保护自己手机的隐私,防止误操作,在不关闭系统软件的情况下节省电量。...这样的设定对于看图软件,视频软件等等没什么大问题,但是对于游戏之类用户需要经常点击屏幕的 App,那就几乎是悲剧了——这也是为什么你在 Android 4.4 之前找不到什么全屏模式会自动隐藏导航栏的应用...,短暂调出的状态栏和导航栏会呈半透明状态,并且在一段时间内或者用户与应用内元素进行互动的情况下自动隐藏,沉浸模式的四种状态如下图。...下面,我们通过一个例子,将这些标签应用于锁屏页,实现对Navigation Bar的自动隐藏,同时保留Status Bar。...现在除了原有的“半透明”模式以外,还有“全透明”以及“变色”模式,一种会完全隐藏背景,另一种可以取色作为背景颜色,多种样式的透明栏如下图(上图为透明状态栏,下图为透明导航栏): ? ?
ViewStub类似一个简单的View,但具体布局由属性layout指定,并且在app加载UI时,ViewStub不显示界面内容,只有在代码中调用该控件的inflate方法,layout指定的布局才会展示....***)”完成,布局中设置可在AndroidManifest.xml的activity节点下添加theme属性,如“android:theme="@style/***"”。...下面是个代码中设置主题的例子: setTheme(android.R.style.Theme_Light_NoTitleBar); 在布局中运用主题,只需在activity界面下添加theme属性即可...,那么内部窗口也将只显示这幅不透明的图像。...只有android:background设置为半透明红色的窗口截图 ?
="android:windowIsTranslucent">true 复制代码 2,将主题应用到 FlutterActivity 中 activity android...此外,在 Android N 之前的版本中,SurfaceView 不能使用动画,因为他们的布局渲染和 View 的层次结构的其他部分不同。...FlutterFragment 默认情况下,FlutterFragment 使用 SurfaceView 呈现不透明背景。...对于任何不是由 Flutter 绘制的像素,该背景都是黑色的。出于性能原因,使用不透明背景渲染是首选渲染模式。在 Android 上具有透明度的 Flutter 渲染会对性能产生负面影响。...比之前使用一个多了 174Mb,平均每增加一个缓存就会增加 60Mb 。 通过上面的验证,可以得出,使用了 Flutter 之后,内存确实会增加很多,但是并不会造成内存压力。
本文主要讲述一下 伪元素 before 和 after 各种妙用。 :before和::before的区别 在介绍具体用法之前,简单介绍下伪类和伪元素。...所以通常这种情况需要用到雪碧图的话,都是在按钮中设置一个伪元素,将伪元素的高宽设置为原本 icon 的大小,再利用绝对定位定位到需要的地方,这样无论雪碧图每个 icon 的边距是多少,都能够完美适应。...(这句话不是很严谨,假设一个元素背景是纯白颜色,叠加白色半透明层也是不会更亮的) 反之,在背景色上方叠加一个黑色半透明层 rgba(0,0,0,.2) 可以得到一个更暗的颜色。...但是如上图所示,内容文字也会跟着 CSS3 变换一起发生了扭曲,通常我们会用一个 div 做背景进行变换,而文字则是放在另外一个 div 中。...伪元素实现换行,替代换行标签 大家都知道,块级元素在不脱离正常布局流的情况下是会自动换行,而行级元素则不会自动换行。
和尚在适配 Android8.0 过程中,遇到很多问题,有很多很常见的问题,今天来整理一下页面跳转时黑屏的问题。...问题猜测 猜测一: 显示 Activity 页面之前会优先开启一个 Starting Window(Preview Window),等待 Activity 加载完成之后显示 UI 界面,猜测在这个等待过程中可能会出现页面跳转时的短暂黑屏...升级 SDK API 27 过程中遇到的问题 中有一个 Only fullscreen opaque activities can request orientation 问题,对于透明或半透明页面,...再次尝试修改主题样式,以为万能的添加主题背景图,设置主题 windowBackground,和尚以为添加一张透明背景图就可以解决;测试在和尚的应用背景图是有的,但还是会出现跳转短暂黑屏现象,故尝试方式二失败...overridePendingTransition 若设为进入和进出为 0 时会出现黑屏,解决方案是:将 0 换为固定的进入和退出的 anim 即可,如下: // 原来 overridePendingTransition
一、背景 在 2019 年,随着 iOS 13 与 Android Q 的推出,Apple 和 Google 同时推出主打功能暗黑模式,分别为 Dark Mode(iOS)/Dark Theme(Android...UI中的彩色,统一进行了降饱和处理,这些彩色会应用于不同的场景,可能是背景,行动点,标签,或者是图标等等地方,那么当彩色用于背景时,为了确保文字和背景色有足够对比度,低饱和度的浅色背景就需要配合深色字一起使用...我们插画系统中的物体和人物沿用这种设计,在暗环境中,由于光线不够充足,人物的肤色会跟着变暗,衣服的颜色也会发生微妙的变化。比如白色、鲜亮的衣服,到了暗环境下,就会呈现灰色、低饱和度的暗色。 ?...同样地,系统也会根据 Dark Theme 的打开或者关闭来加载 Dark 或者 Light 资源。...同步方法于 2017 年 1 月和 10 月先后被引入 ReactNative 的 Android 端和 iOS 端, 但直到现在,仍然没有被写入文档: iOS: 使用 RCTEXPORTSYNCHRONOUSTYPEDMETHOD
点击标题栏一个按钮显示此筛选页面,想了一下 将个做成activity ,原因 1.方便公用 ,我们这边两个页面都有这个筛选 2.处理里面复杂业务逻辑 不影响原有业务数据的逻辑,分开显得代码清晰。...实现的原理就是直接在布局中设置Activity的主题 AndroidManifest.xml配置 activity android:name=".SelectPicPopupWindow"...-- 半透明 --> android:windowIsTranslucent">true 的背景变暗 --> android:backgroundDimEnabled">true 整理了一个...DEMO 大家可以试一下。
这将授予activity对intent中特定uri的访问权限。访问权限会被保留到activity结束(他将保持到主机进程被杀死并且其他暂时性损坏)。...七,ProcessLifecycle Android系统试图将应用进程尽可能的保留更长时间,但是当内存较少时最终需要杀死旧的进程。...但如果是启动B,就算设置了B的启动模式为singleTop,仍旧会重新创建一个B的实例,即任务栈情况是A–>B–>C–>D–>B。...如果是直接创建的activity实例,则在按下BACK按键时会返回先前activity的状态,但如果是通过intent去重用一个已经存在的activity,则在按下返回键时不会返回重用之前的状态,只能返回重用之后的状态...虽然activity是在一个新的任务栈中开启的但是按下back键仍旧会返回先前的activity(此时按下back键是把目前处于前台的任务栈即承载该activity的任务栈销毁,显示开启该任务栈之前的任务栈
可以这么理解:状态栏与导航栏拥有自己独立的窗口,而且这两个窗口的优先级较高,会悬浮在所有窗口之上,可以把系统自身的状态栏与导航栏看做全透明的,之所有会有背景颜色,是因为下层显示界面在被覆盖的区域添加了颜色...看一下一个普通的Activity展示的时候,所对应的Surface(或者说Window也可以)。 ?...先看下关键点1跟2 ,这里是根据SystemUI的配置决定是否显示状态栏背景颜色,如果状态栏都不显示,那就没必要显示背景色了,其次,如果状态栏显示,但背景是透明色,也没必要添加背景颜色,即不满足(color...最后看一下translucentFlag,默认情况下,状态栏背景色与translucent半透明效果互斥,半透明就统一用半透明颜色,不会再添加额外颜色。...首先,分析下,默认样式的Activity为什么会有顶部的空白,看下一默认情况下系统的根布局属性,里面有我们要找的关键点 android:fitsSystemWindows="true": <LinearLayout
:before和::before的区别 在介绍具体用法之前,简单介绍下伪类和伪元素。伪类大家听的多了,伪元素可能听到的不是那么频繁,其实 CSS 对这两个是有区分的。 ? ?...所以通常这种情况需要用到雪碧图的话,都是在按钮中设置一个伪元素,将伪元素的高宽设置为原本 icon 的大小,再利用绝对定位定位到需要的地方,这样无论雪碧图每个 icon 的边距是多少,都能够完美适应。...(这句话不是很严谨,假设一个元素背景是纯白颜色,叠加白色半透明层也是不会更亮的) 反之,在背景色上方叠加一个黑色半透明层 rgba(0,0,0,.2) 可以得到一个更暗的颜色。...但是如上图所示,内容文字也会跟着 CSS3 变换一起发生了扭曲,通常我们会用一个 div 做背景进行变换,而文字则是放在另外一个 div 中。...戳我看demo (请用 Chrome 浏览器打开)。 伪元素实现换行,替代换行标签 大家都知道,块级元素在不脱离正常布局流的情况下是会自动换行,而行级元素则不会自动换行。
(其它几个状态会很快就切换掉,停留的时间比较短暂) Resumed:该状态下,activity处在前台,用户可以与它进行交互。...(通常也被理解为”running” 状态) Paused:该状态下,activity的部分被另外一个activity所遮盖:另外的activity来到前台,但是半透明的,不会覆盖整个屏幕。...当stopped, activity实例与它的所有状态信息(如成员变量等)都会被保留,但activity不能执行任何代码。...例如,当打开一个半透明的activity时(例如以对话框的形式),之前的activity会被暂停。 只要之前的activity仍然被部分可见,这个activity就会一直处于Paused状态。...然而,一旦之前的activity被完全阻塞并不可见时,则其会进入Stop状态(将在下一小节讨论)。
很多 Android 工程师在投简历找工作之前,会去补习一下 Activity 的启动模式(launchMode),因为面试的时候经常会考。...系统依然会保留这个 Task 的一个残影给用户,目的是让用户可以方便地「切回去」;只是这种时候的所谓「切回去」,其实是对 App 的重新启动,因为原先的那个 Task 已经不存在了。...因为按照用户使用邮件的习惯,如果现在按下最近任务键,用户会期望看到邮箱 App 的 Task 出现在短信 Task 的旁边,并且当它点击这个 Task,或者当它切回桌面点击邮箱 App 的图标,他都会期望回到写邮件的界面继续写...Activity 默认情况下只会归属于一个 Task,不会在多个 Task 之间跳来跳去,但你可以通过设置来改变这个逻辑。...当我们继续从已经打开的 Activity 再打开新的 Activity 的时候,taskAffinity 就会被忽略了,新的 Activity 会直接入栈,不管它来自哪;但如果新的 Activity 被配置了
其他都与Activity相关。 Android系统会判断应用程序Activity是属于哪一个类,给予不同的Activity生命周期。 ...如果使用者再度浏览刚刚被清除掉的background process,则Android系统会自动再运行onCreate()重新启动该Activity,所以当系统需要内存时,就会暂时将背景进程清除,让它变成...金子塔的最顶层就是activity运行在前景模式下,用户可与之交互。 当用户离开activity时,系统调用另一些回调函数,将activity的状态从金字塔中一步一步移下来。...:部分被遮挡,不能接收用户输入也不能执行代码,另一个半透明或者小的activity正挡在前面。...Stopped:activity完全被遮挡,不能被用户看到,activity被认为在background,当Stopped的时候,activity实例的状态信息被保留,但是不能执行任何代码。
android:text="@string/main" /> 主题背景 主题背景是应用于整个应用、Activity或视图层次结构,而非仅仅应用于单个视图的属性集合。...当应用主题背景时,应用或Activity中的每个视图都会应用其支持的每个主题背景属性。除了这些之外,主题还可以将样式应用于非视图元素,例如状态栏和标题栏。...自定义默认主题 当我们创建一个项目的时候,系统会默认帮我们创建一个主题,然后在我们的Application里面引用。...触摸状态下的 Ripple(涟漪)效果。...(2)colorButtonNormal:Button normal 状态下的背景色。