首先需要获取
WallpaperManager.FLAG_LOCK
代表锁屏壁纸
WallpaperManager.FLAG_SYSTEM
代表系统壁纸,桌面壁纸
如果
fd = null
说明锁屏壁纸和桌面壁纸是同一个
public static boolean isLockWpLight(Context context) {
Palette p = getStatusBarPalette(context);
if(null == p) {
return false;
}
return !isLegibleOnWallpaper(Color.WHITE, p.getSwatches());
}
private static Palette getStatusBarPalette(Context context) {
WallpaperManager wallpaperManager = WallpaperManager.getInstance(context);
int statusBarHeight = context.getResources ().getDimensionPixelSize (R.dimen.status_bar_height);
try (ParcelFileDescriptor fd = wallpaperManager
.getWallpaperFile(WallpaperManager.FLAG_LOCK)) {
BitmapRegionDecoder decoder = BitmapRegionDecoder
.newInstance(fd.getFileDescriptor(), false);
Rect decodeRegion = new Rect(0, 0,
decoder.getWidth(), statusBarHeight);
Bitmap bitmap = decoder.decodeRegion(decodeRegion, null);
decoder.recycle();
if (bitmap != null) {
return Palette.from(bitmap).clearFilters().generate();
}
} catch (IOException | NullPointerException e) {
Log.e(TAG, "Fetching partial bitmap failed, trying old method", e);
}
Bitmap wallpaper = ((BitmapDrawable) wallpaperManager.getDrawable()).getBitmap();
return Palette.from(wallpaper)
.setRegion(0, 0, wallpaper.getWidth(), statusBarHeight)
.clearFilters()
.generate();
}
private static boolean isLegibleOnWallpaper(int color, List<Palette.Swatch> wallpaperSwatches) {
int legiblePopulation = 0;
int illegiblePopulation = 0;
for (Palette.Swatch swatch : wallpaperSwatches) {
if (isLegible(color, swatch.getRgb())) {
legiblePopulation += swatch.getPopulation();
} else {
illegiblePopulation += swatch.getPopulation();
}
}
return legiblePopulation > illegiblePopulation;
}
private static boolean isLegible(int foreground, int background) {
background = ColorUtils.setAlphaComponent(background, 255);
return ColorUtils.calculateContrast(foreground, background) >= 2;
}
分享到:
相关推荐
本文将深入探讨如何利用Canvas API来获取图片的主要色调、近似色、互补色,并且基于这些颜色信息创建主题配色方案。我们将不涉及任何具体插件的使用,而是通过JavaScript原生方法实现这一过程。 首先,我们需要加载...
- 通过检测浏览器的User-Agent字符串,可以大致判断出浏览器所使用的JavaScript引擎类型。 - 利用JavaScript的`navigator`对象和`window`对象的一些属性和方法,可以进一步确定JavaScript引擎的具体版本和其他细节...
9. **适应性**:为了适应不同用户的需求,图标设计可以考虑提供深色和浅色两种模式,以便于在夜间或强光环境下使用。 10. **版权问题**:在使用这些图片时,开发者需注意版权问题,确保获得合法授权,避免因侵犯...
测试图会展示深色和浅色的过渡,观察者需确认在不同亮度层次之间是否有清晰的分界线。 3. 响应时间测试:响应时间是液晶分子改变状态的速度,通常以毫秒为单位。慢响应时间可能导致运动模糊。快速移动的图形或者...
7. **分子的运动性**:深色染料染上浅色衣服是因为染料分子在不断运动,扩散到了浅色衣服的纤维中。 8. **硅酸盐与硅酸的化学式**:根据硅酸盐中硅元素的化合价为+4价,可以推断硅酸的化学式为H2SiO3。 9. **化学...
- 组件库的样式分为三类:与主题相关的深色和浅色主题,以及与主题切换无关的其他样式。默认使用浅色主题的颜色配置表结合其他可配置的默认样式。业务侧可以通过覆盖样式生成最终样式表,并通过`value`属性将其传递...
Features: 1. 从指定网页以及符合所设定的正则表达式匹配规则的二...3. Win7下程序会调用透明窗体运行,但是尚未实现label文字背景透明,将窗体置于浅色背景之上,文字有点模糊不清,建议将其放在深色背景上面操作。
Important updates in update 3: 1. 修复了图片地址末尾有空白符时...3. Win7下程序会调用透明窗体运行,但是尚未实现label文字背景透明,将窗体置于浅色背景之上,文字有点模糊不清,建议将其放在深色背景上面操作。
黑色调图标在深色或浅色背景下都能保持良好的可读性,同时,这种单一色调的设计也更容易形成统一的视觉风格,提升整体界面的美感。 在压缩包内,我们发现了以下文件: 1. about.html:这可能是一个介绍图标集的...
- **本图层深色滑块**:右移以删除本图层中深色滑块左侧对应灰度的图像。 - **本图层浅色滑块**:左移以删除本图层中浅色滑块右侧对应灰度的图像。 - **滑块分离**:按住Alt键点击滑块,可以将滑块分为两半,移动半...
比如,浅色可以用'.'表示,深色可以用'#'表示,通过这样的一种映射方式来实现字符动画的效果。 由于我们需要在控制台中进行字符的打印,并且希望在特定的位置打印字符,所以涉及到控制台的光标移动。在Windows环境...
`default-dark`通常是深色背景下的样式,而`default-light`适用于浅色背景。开发者可以根据自己的小程序主题来选择合适的样式。 3. **session-from (String)**: 这个属性用于设置用户通过该按钮进入客服会话时的...
考虑创建深色和浅色版本的图片,并在不同的主题下使用。 7. **测试**: 充分测试应用在黑暗模式下的表现,确保所有界面和交互都正常,颜色和对比度适中。 8. **监听黑暗模式变化**: 为了响应系统黑暗模式的实时...
用于图片处理,包括打开,存储,移动等,。 //====================================================================== // 文件: Dib.cpp // 内容: 设备无关位图类-源文件 // 功能: (1)位图的加载与保存; // ...