android 5.0 新特性之最近应用程序
android 5.0新特性之最近应用程序
看到很多介绍android 5.0新特性,而其中的一项吸引了我。
新闻导出都是开放了API,但是自己找起来却无从找起。这篇博文主要介绍如何自定义最近任务。
android5.0以下和5.0以上的对比
相信大多数人都有android设备,而按home键,可以查看最近任务,在5.0以下,其是不可定制的,而在5.0以上的设备,google为我们提供了相关API。
整个item包含了应用的label和launcher图标以及截图。来看看5.0的这些属性位置吧:
默认的配置
让我们看看在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">
其在打开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中调用该静态方法。
更多相关文章
- Nginx系列教程(四)| 一文带你读懂Nginx的动静分离
- 【攻克Android(安卓)(37):XML解析之二】SAX方式解析XML
- Android(安卓)避免重复提交
- Android稳定性测试-- Monkey源码分析
- android 中在activity弹出一个对话框,并不会执行onpause生命周期
- Android(安卓)UI之ProgressBar
- Android面试题之二(中)
- 用Android(安卓)关于PopupMenu的
- android离开一个页面时关闭子线程