21天打卡Andoid学到的一些小知识-第九十天

简介: 今天我们学习打卡的内容是:Android 9.0 10.0 Launcher3 时钟动态图标的定制化

今天我们学习打卡的内容是:Android 9.0 10.0 Launcher3 时钟动态图标的定制化


当然此次学习的文章链接将会放置文章末尾,有需要的朋友自行查看。


大家可能会有注意到,每逢重大节日,很多应用图标会自动调整,类似于春节版、国庆版等等。 这个功能最简单的实现方式可能就是发布一个新的版本了,直接替换相关资源,然后应用升级体验。 但是这种方式工作量较大,很不方便。并且像有些软件我们也没有注意到有应用升级就实现了图标替换,很神奇吧,在日常生活中我们定制化10.0的项目开发中,在Launcher3的app列表页,有时钟app的图标,图标是静态的但是有时开发的需要要求调成动态图标,时刻显示时间,这时就要把时钟图标替换成动态图标。


主要核心代码:

packages/apps/Launcher3/src/com/android/launcher3/BubbleTextView.java
packages/apps/Launcher3/src/com/android/launcher3/Launcher.java

在开发过程中会经常遇见时钟图标是静止的,这是图标就不能充分的体现出当前时刻,所以这是错误的,需要想办法去修改:


1 定义绘制时间图标类IconUtil.java


2 计算当前时间工具类 DateUtils.java


3 时钟工具类DeskClockUtil.java


4.BubbleTextView.java中设置动态图标


功能实现代码:

private void applyIconAndLabel(ItemInfoWithIcon info) {
String pkgname = "";
if (info.getIntent() != null && info.getIntent().getComponent() != null) {
pkgname = info.getIntent().getComponent().getPackageName();
}
android.util.Log.e("Launcher3","pkgname:"+pkgname);
FastBitmapDrawable iconDrawable = null;
if(pkgname.equals("com.android.deskclock")){
DeskClockUtil.getInstance().setListener(new DeskClockUtil.OnDeskClockIconChangeListener() {
@Override
public void onChange(Bitmap icon) {
FastBitmapDrawable deskiconDrawable = new FastBitmapDrawable(icon);
android.util.Log.e("Launcher3","deskiconDrawable:"+deskiconDrawable+"--icon:"+icon);
if(deskiconDrawable!=null)setIcon(deskiconDrawable);
}
}, getContext());
}else{
iconDrawable = DrawableFactory.INSTANCE.get(getContext())
.newIcon(getContext(), info);
}
//FastBitmapDrawable iconDrawable = DrawableFactory.INSTANCE.get(getContext())
//.newIcon(getContext(), info);
mDotParams.color = IconPalette.getMutedColor(info.iconColor, 0.54f);
    if(iconDrawable!=null)setIcon(iconDrawable);
    setText(info.title);
    if (info.contentDescription != null) {
        setContentDescription(info.isDisabled()
                ? getContext().getString(R.string.disabled_app_label, info.contentDescription)
                : info.contentDescription);
    }
}

学习收获;

加油,学完这些已经提升了很多,不过以后要坚持,珍惜CSDN的这个打卡活动,去努力的多学习相关自己感兴趣的知识,通过这个平台去不断的提升自己,这样才能在以后的工作中脱颖而出。

相关文章
|
JSON Dart 安全
国庆假期,整整七天,我使用Flutter终于做出了即时通信!!!😤
7天时间,踩了很多很多坑,终于完成了Flutter WebSocket即时通讯的功能,个人觉得蛮有学习意义的,来看看吧!哦对了,求个赞,哥哥们,国庆假期就贡献在这里啦~
|
开发工具 Android开发 git
Android开发周记-第5期
大家好,又见面了,前段时间忙于各种工作的事务,所以Android开发周记系列停更了很久,本周终于抽出时间来做个总结。
78 0
Android开发周记-第5期
|
供应链 Linux Android开发
目前该不该入坑鸿蒙
最近有一些朋友问现在该不该学习鸿蒙系统,如果不学是不是会落伍了啊?今天跟大家说说我的看法!
|
监控 前端开发
摸鱼搞了个掘金数据监控桌面应用,还不快用起来!
`小f`搞了个Electron桌面应用的开源项目,最近在找人给他提`PR`,然而我前天半夜摸鱼,正好逛github逛到他仓库了,突然发现,欸,好像可以嵌进去一个`掘金数据监控`的插件,于是,在我的不懈(~~努力~~)摸鱼下,它完成了~
|
Android开发
21天打卡Andoid学到的一些小知识-第十一十二天
今天我们学习打卡的内容是:Android 10.0 Launcher3 禁止首屏时钟AppWidget拖动到其他屏这个知识。
97 0
|
安全 Android开发
21天打卡Andoid学到的一些小知识-第十九二十二十一天
今天我们学习打卡的内容是:android 10.0 去掉未知来源弹窗 默认授予安装未知来源权限
91 0
|
Java Android开发
21天打卡Andoid学到的一些小知识-第十七十八天
今天我们学习打卡的内容是:Android 10.0 屏蔽掉 SystemUI 的通知提示音
75 0
|
Android开发
21天打卡Andoid学到的一些小知识-第十五十六天
学习的最大理由是想摆脱平庸 今天我们学习打卡的内容是:Android 10.0 app获取不到序列号解决方案
111 0