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


活动地址:CSDN21天学习挑战赛

 今天我们学习打卡的内容是: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的这个打卡活动,去努力的多学习相关自己感兴趣的知识,通过这个平台去不断的提升自己,这样才能在以后的工作中脱颖而出。 

学习链接:Android 9.0 10.0 Launcher3 时钟动态图标的定制化(时钟动态图标)_安卓兼职framework应用工程师的博客-CSDN博客

你可能感兴趣的:(打卡,android)