AndroidShortcuts使用详解

来源:互联网 发布:node pm2 静态目录 编辑:程序博客网 时间:2024/05/21 17:47

7.1的时候出现了一个长按图标出现的功能列表的效果,类似于2015年ios的3dTouch功能.奈何国产,大家懂得,到目前用了一加五才可以感受这个功能的好处.

效果图来了

这里写图片描述

shortcuts的介绍

其中App Shortcuts是指在桌面长按app图标而出现的快捷方式, 可以为你的app的关键功能添加更快速的入口而不用先打开app,点击快捷方式可以访问应用功能, 并且这种快捷方式也可以被拖拽到桌面单独放置, 变成单独的桌面快捷方式.

有两种shortcuts:

  • 静态的: 在xml中定义, 适用于一些通用的动作.
  • 动态的: 由ShortcutManager发布, 可以根据用户的行为或者偏好添加, 可以动态更新.

数量

每一个应用目前最多可以有5个shortcuts(静态 + 动态)

运行条件

应用添加App Shortcuts是Android 7.1(API 25)的API, 所以只能在Android 7.1的设备上显示, 同时需要launcher支持, 比如Pixel launcher(Pixel设备的默认launcher), Now launcher(Nexus设备上的launcher)现在就支持, 其他launcher也可以提供支持.

静态的shortcuts的使用

清单文件配置

 <activity android:name=".MainActivity">            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>            <!--添加支持shortcuts-->            <meta-data                android:name="android.app.shortcuts"                android:resource="@xml/shortcuts" />        </activity>

在res目录下添加xml文件夹,并新建文件shortcuts

<?xml version="1.0" encoding="utf-8"?><shortcuts xmlns:android="http://schemas.android.com/apk/res/android">    <shortcut        android:icon="@drawable/add"        android:shortcutId="add_website"        android:shortcutLongLabel="@string/add_new_website"        android:shortcutShortLabel="@string/add_new_website_short">        <!--最左侧或者添加桌面后显示的图标-->        <!--id标识-->        <!--长按显示的文字-->        <!--添加到桌面显示的文字-->        <intent            android:action="cn.yky.test.ADD_WEBSITE"            android:targetClass="cn.yky.test.MainActivity"            android:targetPackage="cn.yky.test" />        <!--第一个是意图标识-->        <!--第二个参数是希望打开的界面-->        <!--希望打开界面的包名-->    </shortcut></shortcuts>

注意,shortcutLongLabel和shortcutShortLabel,不可以直接引用文字,不然会报错.!!!谁加谁知道.经过以上的步骤之后,就可以看到最开始的效果图了!.

动态添加

动态的shortcuts可以在用户使用app的过程中构建, 更新, 或者删除.

ShortcutManager

  • 设置或者新增 setDynamicShortcuts; addDynamicShortcuts;
  • 修改 updateShortcuts;
  • 删除 removeDynamicShortcuts; removeAllDynamicShortcuts;

动态添加三个

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N_MR1) {            mShortcutManager = getSystemService(ShortcutManager.class);            getNewShortcutInfo();        } /**     * 动态添加三个     */    @RequiresApi(api = Build.VERSION_CODES.N_MR1)    private void getNewShortcutInfo() {        ShortcutInfo shortcut = new ShortcutInfo.Builder(this, "id1")                .setShortLabel("Web site")                .setLongLabel("第一个")                .setIcon(Icon.createWithResource(this, R.drawable.link))                .setIntent(new Intent(Intent.ACTION_VIEW,                        Uri.parse("https://www.baidu.com/")))                .build();        ShortcutInfo shortcut2 = new ShortcutInfo.Builder(this, "id2")                .setShortLabel("Web site")                .setLongLabel("第二个")                .setIcon(Icon.createWithResource(this, R.drawable.link))                .setIntent(new Intent(Intent.ACTION_VIEW,                        Uri.parse("https://www.csdn.com/")))                .build();        ShortcutInfo shortcut3 = new ShortcutInfo.Builder(this, "id3")                .setShortLabel("Web site")                .setLongLabel("第三个")                .setIcon(Icon.createWithResource(this, R.drawable.link))                .setIntent(new Intent(Intent.ACTION_VIEW,                        Uri.parse("https://www.github.com/")))                .build();        mShortcutManager.setDynamicShortcuts(Arrays.asList(shortcut, shortcut2, shortcut3));    }

效果图

这里写图片描述

依次类推,就可以动态增删改我们的快捷方式了.虽然你想用,但是国产手机估计还得一年以内的时间能普及到吧.


联系方式

本人技术有限,还有很多不完美的地方,欢迎指出.(写作不易,谢谢您的star支持)

  • QQ:152046273
  • Email:yukuoyuan@hotmail.com
  • CSDN博客地址
  • Github博客地址
  • Github地址