快速加载图标包
用于读取图标包资源的库,支持自定义关键词查找图标,支持图标裁剪、缩放以及色彩饱和度修改。演示app,是一个简易的安卓桌面,可以更加直观的了解这个库的用处。
- SDK 版本 大于 14
- kotlin
- 测试图标包 点此搜索
-
导入
使用Gradle,或者直接下载AAR IconPackManager
dependencies { implementation("cn.lalaki:IconPackManager:7.0") }
-
代码示例
import cn.lalaki.iconpackmanager.IconPackManager // IconPackManager val ipm = IconPackManager(packageManager) val iconPacks = ipm.isSupportedIconPacks() ipm.isSupportedIconPacks(true)// 强制刷新缓存,如果需要 iconPacks.forEach { //……遍历所有图标包 } // 为某个图标包添加自定义规则,图标包没有相应图标时,按照规则查找图标包内的图标 val rules = HashMap<String, Array<out String>> //key是包名,可模糊匹配;value是需要匹配的应用图标包名,可模糊匹配,支持多个参数 rules["com.android.chrome"]=arrayOf("browser","...") rules["com.android.email"]=arrayOf("mail","message") rules["video"]=arrayOf("tencent","youtube") iconPackItem.setRules(rules) //清除当前图标包的自定义规则 iconPackItem.setRules(null)
<resources> <!-- appfilter.xml, 这是我从图标包解压出来的文件,位于图标包的assets目录 --> <!-- component 的 值即为 规则中定义的value 这是其中一段示例内容 --> <item component="ComponentInfo{cn.nubia.browser/com.android.browser.BrowserLauncher}" drawable="browser"/> <item component="ComponentInfo{com.android.browser/com.android.browser.BrowserActivity}" drawable="browser"/> <item component="ComponentInfo{com.motorola.camera/com.motorola.camera.Camera}" drawable="camera_2"/> <item component="ComponentInfo{cn.nubia.deskclock.preset/cn.nubia.deskclock.DeskClock}" drawable="clock"/> <item component="ComponentInfo{com.android.alarmclock/com.meizu.flyme.alarmclock.DeskClock}" drawable="flyme_clock"/> <item component="ComponentInfo{com.android.BBKClock/com.android.BBKClock.Timer}" drawable="clock"/> ... ... ... </resources>
ipm.isSupportedIconPacks()是一个list,遍历可获取图标包名称以及相应的工具类
// load icon pack ipm.isSupportedIconPacks().forEach { /** 根据图标包名称,筛选图标包 **/ // if (it.name != "your icon pack") //get icon pack name val iconPackName = it.name //get icon from icon pack; val launchIntent = getLaunchIntentForPackage(packageName) val icon = it.loadIcon(launchIntent) //可选Intent or ComponentName or ApplicationInfo //如果未找到图标,可选 裁剪原始图标 if(icon == null) { //裁剪圆形 it.transformIcon(applicationInfo.loadIcon(packageManager),0.5f,scaleF,saturation) //裁剪圆角 需要自己定义一些参数 radius是半径,scaleF是图标缩放,saturation是色彩饱和度。Float可变类型参数,默认值为1f it.transformIcon(applicationInfo.loadIcon(packageManager),radius,scaleF,saturation) } }
为爱发电。
- feedback:[email protected]