android5.0后新特性修改标题头,android 5.0 新特性之最近应用程序

本文介绍了如何在Android 5.0及以上版本中自定义最近任务,通过系统提供的API实现应用标签、启动器图标和截图的定制。在AndroidManifest.xml中设置activity的label和icon,利用`setTaskDescription`方法创建TaskDescription对象,注意icon大小和颜色的适配,以及label颜色的系统自动选择。标签的文字颜色和图标颜色会根据顶部栏颜色自动调整,且只能通过代码动态设置icon来避免覆盖launcher图标。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

android 5.0新特性之最近应用程序

看到很多介绍android 5.0新特性,而其中的一项吸引了我。

bVswcr

新闻导出都是开放了API,但是自己找起来却无从找起。这篇博文主要介绍如何自定义最近任务。

android5.0以下和5.0以上的对比

相信大多数人都有android设备,而按home键,可以查看最近任务,在5.0以下,其是不可定制的,而在5.0以上的设备,google为我们提供了相关API。

bVswdd

整个item包含了应用的label和launcher图标以及截图。来看看5.0的这些属性位置吧:

bVswdU

默认的配置

让我们看看在android5.0设备上发生了什么,系统会从你的manifest文件中拉取the Overview card’s icon, label and top bar

Icon - android:icon

Label text - android:label

Top Bar Color - colorPrimary value of android:theme

注意,这些参数都是获取你的当前activity属性,如果在manifest中,你的activity并没有相关设置,那么其会获取application的属性。

举个例子:

android:allowBackup="true"

android:icon="@mipmap/ic_launcher"

android:label="@string/app_name"

android:theme="@style/AppTheme">

android:label="@string/recent_task_main"

android:name=".MainActivity">

其在打开MainActivity的时候,其对应的label会是recent_task_main,而不是app_name。而需要注意的是:其对应的lable只会被第一个开启的activity覆盖,即以后的lable设置不会覆盖Overview Card的lable。lable对应的是app的名字,会展现给用户,对应的android:icon也是展现给用户的图标。如果更改,用户安装可见的图标和标题都会变动。

注意:你的manifest文件中的icon作为Overview Card中的icon是不合适的,因为作为icon,其还是偏大,所以最好的方案是设置不同的icon。

不幸的是manifest并不提供这样的能力,即你如果在activity中设置了android:icon属性,其会覆盖对应的 launcher icon,所以你不能够在xml中设置,你需要在代码中动态设置。

还有个地方需要注意:label的文字颜色是不被配置的,系统会自动为其选择颜色。比如当topbar是黑色的,那么文字就会是白色的,否则字体为黑色。

API

直接贴代码吧:

//sdk必须大于5.0

if (VERSION.SDK_INT < VERSION_CODES.LOLLIPOP){

return;

}

Resources resources = activity.getResources();

//获取application中的label

String label = resources.getString(activity.getApplicationInfo().labelRes);

//标题栏颜色必须非透明

int colorPrimary = resources.getColor(R.color.colorPrimary);

//因为该方法最好放在baseactivity中,所以如果不将icon设置为静态,其会每次创建

if (sIcon == null){

sIcon = BitmapFactory.decodeResource(resources,R.drawable.ic_gplus_blue);

}

activity.setTaskDescription(new TaskDescription(label,sIcon,colorPrimary));

activity提供了setTaskDescription方法,其需要TaskDescription实例,而TaskDescription提供了多个构造器,注意color传入必须是非透明。

建议:你的app肯定有BaseActivity,所以你可以在你的base中操作,同时可以新建类,将其设置为静态方法,然后再BaseActivity中调用该静态方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值