专栏名称: 安卓开发精选
伯乐在线旗下账号,分享安卓应用相关内容,包括:安卓应用开发、设计和动态等。
目录
相关文章推荐
stormzhang  ·  又被平均了? ·  昨天  
鸿洋  ·  安卓应用跳转回流的统一和复用 ·  3 天前  
郭霖  ·  Android ... ·  4 天前  
鸿洋  ·  一文搞懂Window、PhoneWindow ... ·  4 天前  
鸿洋  ·  一个大型 Android 项目的模块划分哲学 ·  1 周前  
51好读  ›  专栏  ›  安卓开发精选

Android 7.1 快捷方式 Shortcuts

安卓开发精选  · 公众号  · android  · 2016-11-10 20:45

正文

(点击上方公众号,可快速关注)


来源:伯乐在线专栏作者 - 王亟亟

链接:http://android.jobbole.com/85134/

点击 → 了解如何加入专栏作者


前些天就看到相关内容了,但是最近吸毒比较深(wow),所以没有紧跟潮流,今天补一篇。


先安利:https://github.com/ddwhan0123/Useful-Open-Source-Android [408 star]


看下效果:



肉眼看就是多了一排列表,是一些可点击的按钮,可定制一些常用的方便用户操作的快捷键。


理论知识翻译自官网,有基础好的同学可以直接看:https://developer.android.com/preview/shortcuts.html




啰里八嗦的文本介绍就不提了,说下怎么用合一些规范


他有2种加载方式


1.静态加载

2.动态加载


静态的方式可以兼容低版本,动态的暂时只支持7.1


字面就很好理解,静态的就是事先编辑好展示ui,跳转逻辑等等。

动态就是可以临时调用。




Static Shortcuts


在AndroidManifest.xml文件,首页activity的节点里的下添加


meta-data android:name="android.app.shortcuts"

                android:resource="@xml/shortcuts" />


shortcuts 其实就是我们静态编辑的内容,类似于预设Menu的概念



加完之后就是编辑shortcuts这个xml了,他要在 res/xml/shortcuts.xml 这个位置


例子中的文件清单如下


shortcuts xmlns:android="http://schemas.android.com/apk/res/android">

 

    shortcut

        android:shortcutId="shortcut1"

        android:enabled="true"

        android:icon="@drawable/happy"

        android:shortcutShortLabel="@string/one_text"

        android:shortcutLongLabel="@string/one_long"

        android:shortcutDisabledMessage="@string/one_disabled">

        intent

            android:action="one"

            android:targetPackage="demo.wjj.shortcutsdemo"

            android:targetClass="demo.wjj.shortcutsdemo.MainActivity" />

    shortcut>

 

    shortcut

        android:shortcutId="shortcut2"

        android:enabled="false"

        android:icon="@drawable/woman"

        android:shortcutShortLabel="@string/two"

        android:shortcutLongLabel="@string/two_long"

        android:shortcutDisabledMessage="@string/two_disabled">

        intent

            android:action="two"

            android:targetPackage="demo.wjj.shortcutsdemo"

            android:targetClass="demo.wjj.shortcutsdemo.MainActivity" />

    shortcut>

 

    shortcut

        android:shortcutId="shortcut3"

        android:enabled="true"

        android:icon="@drawable/angry"

        android:shortcutShortLabel="@string/three"

        android:shortcutLongLabel="@string/three_long"

        android:shortcutDisabledMessage="@string/three_disabled">

        intent

            android:action="three"

            android:targetPackage="demo.wjj.shortcutsdemo"

            android:targetClass="demo.wjj.shortcutsdemo.MainActivity" />

    shortcut>

 

shortcuts>


自行设置包名,类名,icon,描述文字等。


action对应的就是你点完快捷键回到activity时作判断的”key”

例子里第二个”item”没显示出来也就是因为android:enabled设置了false


其他的你只要在业务界面 getIntent().getActiob()就行了,so easy




Dynamic Shortcuts


动态的加载方式就相对麻烦一点,但是代码更活,官方提到的常用方法如下


setDynamicShortcuts(List)  重新设置动态快捷方式的列表。

 

addDynamicShortcuts(List) 添加到已存在的快捷方式列表。

 

updateShortcuts(List) 更新列表。

 

removeDynamicShortcuts(List) 移除快捷方式。

 

removeAllDynamicShortcuts() 移除全部快捷方式。


然后他举了个跳转网页的例子


ShortcutManager shortcutManager = getSystemService(ShortcutManager.class);

 

ShortcutInfo shortcut = new ShortcutInfo.Builder(this, "id1")

    .setShortLabel("Web site")

    .setLongLabel("Open the web site")

    .setIcon(Icon.createWithResource(context, R.drawable.icon_website))

    .setIntent(new Intent(Intent.ACTION_VIEW,

                   Uri.parse("https://www.mysite.example.com/")))

    .build();

 

shortcutManager.setDynamicShortcuts(Arrays.asList(shortcut));


然后就是一堆规范啊,要求啊,设计的,这边不做详细解释,直接简单明了的概括下


按照快捷键设计指南 传送门:https://material.google.com/style/icons.html#icons-launcher-shortcut-icons


只发布四个不同的快捷键:最多可以发5个,但是太长的话很丑,所以最多就放4个item


极限快捷描述长度:字数不要太多,长了也放不下外加占地方,尽量精简,如果可能的话,限制快捷方式的“简短描述”的长度为10个字符,并限制“长说明”的长度为25个字符。


维持快捷和行动使用历史:对于您创建的每个快捷方式,可以考虑在其中一个用户可以在应用程序内直接完成相同的任务的不同方法。


更新快捷方式,只有当它们的含义被保留


动态快捷键备份过程中不保留和恢复:动态快捷键不保留在设备经历了备份和恢复操作。




——————-我是华丽的分割线——————–


以下内容不看,demo跑了也看不到效果!!!!


其实这些都还好,慢慢倒持研究下就好,但是世界更新的太快,国人还在 安卓 4 5间徘徊,本宝宝没有7.1啊怎么跑?


在各方咨询后找到了一个兼容桌面,可以还原模拟谷歌桌面哦。


在不自定义快捷键的情况下,它自带会有一个快捷键



官网地址:http://www.apkmirror.com/apk/teslacoil-software/nova-launcher/


如果你懒,也可以走我的传送门:https://github.com/ddwhan0123/BlogSample/blob/master/ShortcutsDemo/com.teslacoilsw.launcher_5.0-beta8-49908_minAPI16(nodpi)_apkmirror.com.apk?raw=true


源码地址:https://github.com/ddwhan0123/BlogSample/tree/master/ShortcutsDemo


下载地址:https://github.com/ddwhan0123/BlogSample/blob/master/ShortcutsDemo/ShortcutsDemo.zip?raw=true


相关资料:http://www.androidcentral.com/how-use-app-shortcuts-android-71-google-pixel


发完后被吐槽后想起来,其实官方有sample….瞬间石化,但是写都写了,补个传送门吧https://developer.android.com/samples/AppShortcuts/project.html


对了,桌面那个谢谢 @烧饼


专栏作者简介( 点击 → 加入专栏作者 


王亟亟:专业养小动物,顺道敲敲代码,致力于传播欢笑播撒爱!

打赏支持作者写出更多好文章,谢谢!



 关注「安卓开发精选

看更多精选安卓技术文章
↓↓↓