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中调用该静态方法。

更多相关文章

  1. Nginx系列教程(四)| 一文带你读懂Nginx的动静分离
  2. 【攻克Android(安卓)(37):XML解析之二】SAX方式解析XML
  3. Android(安卓)避免重复提交
  4. Android稳定性测试-- Monkey源码分析
  5. android 中在activity弹出一个对话框,并不会执行onpause生命周期
  6. Android(安卓)UI之ProgressBar
  7. Android面试题之二(中)
  8. 用Android(安卓)关于PopupMenu的
  9. android离开一个页面时关闭子线程

随机推荐

  1. Android中StackView的使用
  2. 调用Android installer 安装和卸载程序
  3. Android(安卓)自定义控件,模仿小米秒表样
  4. android动态生成控件
  5. Android发送dtmf键盘事件(模拟通话界面键
  6. Android 3D 旋转的三角形(三)
  7. Android解压中文乱码
  8. android studio 读取短信
  9. android:软件的安装和卸载源代码
  10. React Native与Android之间的通信