1. Drawable的状态共享
不同VIew使用同一个Drawable时,一个地方改动Drawable其他地方也会改动,比如调用了Drawable的enable改变状态,这个时候如果指向改变当前View的Drawable不想影响其他View可以调用Drawable#mutate ()方法拷贝当前Drawable对象,这样将拷贝出来的对象做修改就不会影响到其他地方。
2. Android11上fitsystemwindows
属性的变更
Android R(11)版本fitsystemwindows属性会包含刘海的高度,Android原生变更,需要应用进行适配,不使用全屏FLAG,而是使用SYSTEM_UI_FLAG_LOW_PROFILE。
3. Android Activiyt透明属性直接显示壁纸(某些版本的Android设备上)
当我们设置Activity为透明时通常在style中设置,可以在Activity使用的style下加入标签<item name="android:windowShowWallpaper">true</item>
使Activity穿透显示,直接显示桌面壁纸,代码如下:
<style name="translucent" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:windowIsTranslucent">true</item> <!-- Activity是否设置透明 -->
<item name="android:windowBackground">@android:color/transparent</item> <!-- 窗体背景 -->
<item name="android:windowContentOverlay">@null</item> <!-- 设置窗体内容背景 -->
<item name="android:windowFullscreen">false</item> <!-- 是否为全屏 -->
<!-- 是否穿透显示壁纸 -->
<item name="android:windowShowWallpaper">true</item> <!-- 是否显示壁纸 -->
</style>
举例,有Activity A和B,A不透明,B透明,B显示在A上方,B的style中未添加该标签时用户可以透过B看到A,当B的style中加入该标签时A不可见,用户可以透过B直接看到桌面壁纸(注意是桌面壁纸不是桌面,桌面上的图标这些是不可见的),两种效果如图:
未添加标签,显示上一个Activity | 添加标签,直接显示桌面壁纸 |
---|
网友评论