近期由于moto的项目需要适配,根据原生机制实现日历的动态图标,所以研究了一下:
packages/apps/Launcher3/src/com/android/launcher3/DynamicIconProvider.java
Launcher的DaynamicIconProvider.java文件夹中有相关的代码,我们来看,google是如何实现日历动态图标的。
在构造函数中注册了和Date变化相关的监听器
/** 61 * invoked by IconProvider#loadByName 62 * @param context context 63 */ 64 public DynamicIconProvider(Context context) { 65 IntentFilter filter = new IntentFilter(Intent.ACTION_TIME_CHANGED); 66 filter.addAction("android.intent.action.TIME_SET"); 67 filter.addAction(Intent.ACTION_TIMEZONE_CHANGED); 68 69 context.registerReceiver(new DateTimeChangedReceiver(), filter);

本文探讨了如何根据原生机制实现动态图标,特别是在适配moto项目中的日历动态图标。通过分析`DynamicIconProvider.java`,发现谷歌通过监听日期和时区变化,结合资源文件中的Metadata,在`getCalendarIconResource`方法中动态获取对应日期的图片资源。反编译GMS日历应用,找到了01-31的drawable资源,每个都有背景和前景两层,遵循谷歌静态图标的规范。要实现动态图标,只需根据这些资源创建GUI。
最低0.47元/天 解锁文章
1183






