安卓Android 7.1.1 shortcut实现桌面图标快捷方式跳转,类似IOS 3d touch

Android应用开发——实现页面跳转功能 最后在这里在对跳转功能做个简要的操作说明:创建新的Activity,首先,你需要创建一个新的Activity来作为你要跳转到的页面。在Android Studio中,你可以通过右键点击项目的包名,选择"New" -> "Activity" -> "Empty Activity"来创建一个新的Activity。然后,在你的起始页面的Java或Kotlin代码中,找到按钮的引用,并为它设置一个点击事件监听器。4.新建一个java文件(在app下,在java下,在com.example…… 阅读详情

一、背景介绍:

      3D Touch是一种立体触控技术,被苹果称为新一代多点触控技术,是在Apple Watch上采用的Force Touch,屏幕可感应不同的感压力度触控。3D Touch,苹果iPhone 6s的新功能,看起来类似 PC 上的右键。有Peek Pop 两种新手势。

随着IOS在iphone 6s 上加入了3d touch后,果粉手机很多应用都有了快捷访问的功能。

比如下图:


3D touch是需要硬件支持的,但是谷歌开放了系统,没有牢牢把控住硬件。就算谷歌实现了3Dtouch,其他安卓厂商估计也没这么快更新硬件。

但是我们也没有必要暗自菲薄不是,开放有开放的好处,封闭有封闭的缺点。

二、安卓实现:

好了,废话不多说。这篇文章的主题是介绍怎么在安卓上实现类似IOS 3d touch的功能。在安卓系统上,这个功能被称为应用程序快捷方式(shortcut),显示的入口是长按应用图标,也可以拖动快捷方式到桌面形成一个独立的入口。

首先,看看谷歌关于shortcut的介绍:

如果有梯子点这:谷歌关于shortcut介绍

应用程序快捷方式

如果您的应用定位到Android 7.1(API级别25)或更高级别,则可以定义 应用中特定操作的快捷方式。这些快捷方式可以显示在支持的启动器中。快捷方式可让您的用户快速启动应用内的常见或推荐任务。
每个快捷方式都引用一个或多个 意图,当用户选择快捷方式时,每个意图都会在应用中启动特定操作。您可以表示为快捷方式的操作示例包括:
  • 将用户导航到地图应用中的特定位置
  • 在通信应用中向朋友发送消息
  • 在媒体应用中播放电视节目的下一集
  • 游戏在应用中加载求最后一个保存点
您可以为您的应用发布以下类型的快捷方式:
  • 静态快捷方式在打包到APK或应用程序包中的资源文件中定义
  • 只有在运行时,您的应用才能发布,更新和删除动态快捷方式

如果用户授予权限,则固定快捷方式可以在运行时固定到受支持的启动器。

注意:用户还可以通过将应用程序的静态和动态快捷方式复制到启动器上来创建固定快捷方式

您可以一次为应用程序发布最多五个快捷方式(静态快捷方式和动态快捷方式组合)。但是,某些启动器应用程序不会显示您为应用创建的所有静态和动态快捷方式。
用户可以创建的应用固定快捷方式的数量没有限制。即使您的应用无法移除固定的快捷方式,它仍然可以禁用它们。

注意:虽然其他应用无法访问快捷方式中的元数据,但启动器本身可以访问此数据。因此,这些元数据应隐藏敏感的用户信息。

通过介绍我们知道:

  1. 有动态和静态两种注册快捷方式;
  2. 需要注意的是要保护用户的敏感信息,比如订单之类的信息;
  3. 可以动态发布,更新和删除;
  4. 可以固定它们到桌面,作为一种快捷方式的入口。

静态注册:

1. 首先在res下面新建目录xml,再新建shortcuts.xml文件, 路径:res/xml/shortcuts.xml

<shortcuts xmlns:android="http://schemas.android.com/apk/res/android">
  <shortcut
    android:shortcutId="compose"
    android:enabled="true"
    android:icon="@drawable/compose_icon"
    android:shortcutShortLabel="@string/compose_shortcut_short_label1"
    android:shortcutLongLabel="@string/compose_shortcut_long_label1"
    android:shortcutDisabledMessage="@string/compose_disabled_message1">
    <intent
      android:action="android.intent.action.VIEW"
      android:targetPackage="com.example.myapplication"
      android:targetClass="com.example.myapplication.ComposeActivity" />
    <!-- If your shortcut is associated with multiple intents, include them
         here. The last intent in the list determines what the user sees when
         they launch this shortcut. -->
    <categories android:name="android.shortcut.conversation" />
  </shortcut>
  <!-- Specify more shortcuts here. -->
</shortcuts>

2. 修改manifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.william.shortcut">
  <application ... >
    <activity android:name="Main">
      <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
      </intent-filter>
      <meta-data android:name="android.app.shortcuts"
                 android:resource="@xml/shortcuts" />
    </activity>
  </application>
</manifest>

注意:如果将多个意图与快捷方式关联,系统将启动与快捷方式在资源文件中的最后意图相对应的活动,以及后向堆栈中的其他活动 。在这种情况下,当用户选择快捷方式然后按后退键时,您的应用程序将启动与资源文件中列出的快捷方式倒数第二个意图相对应的活动。重复按下后退按钮后,此行为模式继续,直到用户清除快捷方式创建的后堆栈。当用户下一次按下后退按钮时,系统会将它们导航回启动器。

动态注册:

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));

踪快捷方式用法:

要确定应出现静态和动态快捷方式的情况,启动器会检查快捷方式的激活历史记录。当发生以下任一事件时 reportShortcutUsed() ,您可以通过调用方法,传入快捷方式的ID来跟踪用户何时在应用内完成特定操作:
用户选择具有给定ID的快捷方式。

用户打开应用程序并手动完成与同一快捷方式对应的操作。

禁用快捷方式:

由于您的应用及其用户可以将快捷方式固定到设备的启动器上,因此这些固定快捷方式可能会引导用户执行应用中已过期或不再存在的操作。要管理这种情况,您可以禁用不希望用户通过调用选择的disableShortcuts()快捷方式,这将从静态和动态快捷方式列表中删除指定的快捷方式,并禁用这些快捷方式的任何固定副本。您还可以使用此方法的 重载版本来定义在用户尝试启动已禁用的快捷方式时应显示的错误消息。

分配多个意图:

使用时创建快捷方式 ShortcutInfo.Builder,您可以使用 setIntents() 而不是 setIntent()。通过调用setIntents(),您可以在用户选择快捷方式时在应用程序中启动多个活动,将列表中的最后一个活动放在 后台堆栈中。如果用户随后决定按设备的后退按钮,他们将在您的应用中看到另一个活动,而不是返回设备的启动器。

最佳实践:

在设计和创建应用程序的快捷方式时,您应遵循以下准则:

遵循快捷方式设计指南(快捷方式图标的设计规范)

没有梯子的点这里:点击打开链接

要使应用程序的快捷方式与系统应用程序使用的快捷方式在视觉上保持一致,请遵循应用程序快捷方式设计指南。

仅发布四个不同的快捷方式:

虽然API目前支持在任何给定时间为您的应用程序组合最多五个静态快捷方式和动态快捷方式,但建议您随时只发布四个不同的快捷方式,以改善启动器中快捷方式的可视外观。

限制快捷方式描述长度:

菜单中的空间有限,可在启动器中显示应用程序的快捷方式。如果可能,将快捷方式的“简短描述”的长度限制为10个字符,并将“长描述”的长度限制为25个字符。

维护快捷方式和操作使用历史记录:

对于您创建的每个快捷方式,请考虑用户可以在应用程序中直接完成相同任务的不同方式。请记住reportShortcutUsed() 在每种情况下调用 ,以便启动器维护代表您的快捷方式的操作的准确历史记录。

仅在保留其含义时更新快捷方式:

更改动态和固定快捷方式时,updateShortcuts() 仅在更改保留其含义的快捷方式的信息时调用 。否则,您应该使用以下方法之一,具体取决于您要重新创建的快捷方式的类型:
  • 动态快捷方式: addDynamicShortcuts()或 setDynamicShortcuts()。
  • 固定快捷方式: requestPinShortcut()。

例如,如果您创建了一个导航到超市的快捷方式,那么只要超市名称发生变化但其位置保持不变,只需更新快捷方式即可。但是,如果用户开始在不同的超市位置购物,则最好创建新的快捷方式。

备份和还原期间不会保留动态快捷方式:

当设备进行备份和还原操作时,不会保留动态快捷方式。因此,建议您检查getDynamicShortcuts() 每次启动应用程序时返回的对象数, 并根据需要重新发布动态快捷方式,如“ 备份和还原”部分中的代码段所示 。

下面我们用自己的代码实现动态注册吧:

首先,在真实的业务场景中,我们需要判断要跳转的目标页面是否需要登录,分别做处理

所以我在Demo中指定的跳转入口都是闪屏页

首先看看AndroidManifest.xml

<application
        android:name=".App"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

        <activity
            android:name=".SplashActivity"
            android:theme="@style/theme_loading">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <activity
            android:name=".MainActivity"
            android:launchMode="singleTask">
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
            </intent-filter>
        </activity>
        <activity
            android:name=".TargetActivity"
            android:screenOrientation="portrait" />
    </application>

闪屏页代码:

/**
 * 作者:William 时间:2018/7/14
 * 类说明:闪屏页
 */
public class SplashActivity extends Activity {

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        String targetAction = getIntent().getStringExtra("targetAction");
        new Handler().postDelayed(() -> {
            // 真实的业务场景中,这里需要判断目标页面是否需要登录
            // 这里简单模拟1秒钟后跳转到目标页面,统一在MainActivity做跳转
            Intent intent = new Intent(this, MainActivity.class);
            intent.putExtra("targetAction", targetAction);
            startActivity(intent);
            finish();// 避免回退时又能重新看到闪屏页
        }, 1000);
    }
}

MainActivity.java:

public class MainActivity extends AppCompatActivity {

    private boolean exit;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        createShortcut();
        handleShortcutEvent();
    }

    @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        setIntent(intent);
        handleShortcutEvent();
    }

    private void handleShortcutEvent() {
        String targetAction = getIntent().getStringExtra("targetAction");
        if (!TextUtils.isEmpty(targetAction)) {
            TargetActivity.startTargetPage(this, targetAction);
        }
    }

    /**
     * 动态创建桌面图标长按菜单列表
     */
    public void createShortcut() {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N_MR1) {
            try {
                boolean isShortcutCreated = PreferencesUtil.readBoolean("isShortcutCreated", false);
                if (!isShortcutCreated) {// 如果有创建过就不再重复创建,可以考虑从接口获取
                    ShortcutManager mShortcutManager = getSystemService(ShortcutManager.class);
                    List<ShortcutInfo> infoList = new ArrayList<>();

                    infoList.add(createShortcutInfo(ShortcutUtil.ID1, "Action-1", 0,
                            R.mipmap.ic_launcher_round, "Action-1"));
                    infoList.add(createShortcutInfo(ShortcutUtil.ID2, "Action-2", 1,
                            R.mipmap.ic_launcher_round, "Action-2"));
                    infoList.add(createShortcutInfo(ShortcutUtil.ID3, "Action-3", 2,
                            R.mipmap.ic_launcher_round, "Action-3"));
                    infoList.add(createShortcutInfo(ShortcutUtil.ID4, "Action-4", 3,
                            R.mipmap.ic_launcher_round, "Action-4"));

                    if (mShortcutManager != null)
                        mShortcutManager.setDynamicShortcuts(infoList);

                    PreferencesUtil.writeBoolean("isShortcutCreated", true);
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    private ShortcutInfo createShortcutInfo(String id, String label, int rank, int iconResId, String targetAction) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N_MR1) {
            return new ShortcutInfo.Builder(this, id)
                    .setShortLabel("桌面" + label)// 设置桌面图标名称,可以拖动到桌面上的图标标题
                    .setLongLabel(label)// APP长按显示的标题
                    .setRank(rank)// 顺序显示,这个是相对的,它是始终按照离应用图标最近的顺序显示,如果图标在桌面最上和最下,显示的顺序是相反的
                    .setIcon(Icon.createWithResource(this, iconResId))// 快捷方式的图标
                    .setIntent(createIntent(targetAction))// 跳转的意图,官网推荐用setIntents()
//                    .setIntents(new Intent[]{})
                    .build();
        }
        return null;
    }

    private Intent createIntent(String targetAction) {
        Intent intent = new Intent(this, SplashActivity.class);
        intent.setAction(Intent.ACTION_MAIN);
        intent.putExtra("targetAction", targetAction);
        return intent;
    }

    @Override
    public void onBackPressed() {
        if (!exit) {
            exit = true;
            Toast.makeText(this, "再次点击退出", Toast.LENGTH_SHORT).show();
            getWindow().getDecorView().postDelayed(() -> {
                if (!isFinishing()) {
                    exit = false;
                }
            }, 1500);
        } else {
            Process.killProcess(Process.myPid());
            System.exit(0);
        }
    }

}

TargetActivity.java:

/**
 * 作者:William 时间:2018/7/14
 * 类说明:目标测试页面
 */
public class TargetActivity extends AppCompatActivity {

    public static void startTargetPage(Context context, String targetAction) {
        Intent intent = new Intent(context, TargetActivity.class);
        intent.putExtra("targetAction", targetAction);
        context.startActivity(intent);
    }

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_target);
        String targetAction = getIntent().getStringExtra("targetAction");
        ((TextView) findViewById(R.id.tv_action)).setText(targetAction);
        String shortcutId = null;
        if (targetAction != null) {
            switch (targetAction) {
                case "Action-1":
                    shortcutId = ShortcutUtil.ID1;
                    break;
                case "Action-2":
                    shortcutId = ShortcutUtil.ID2;
                    break;
                case "Action-3":
                    shortcutId = ShortcutUtil.ID3;
                    break;
                case "Action-4":
                    shortcutId = ShortcutUtil.ID4;
                    break;
            }
            if (shortcutId != null) {
                ShortcutUtil.report(this, shortcutId);
            }
        }
    }
}

效果图1:


效果图2:


正如我们上面设置的rank顺序,但它是始终是按照离应用程序图标越近越先展示的,如下图:



到这里就基本实现安卓应用程序桌面快捷方式跳转功能了。

其实最优的做法是图标的信息都从接口获取,从而更加灵活的实现动态图标创建和更新。

当然如果跳转目标页面比较固定,可以选择不从接口获取,仁者见仁,智者见智!

说了这么多,但就目前经过测试,安卓手机厂商品牌中 oppo, vivo, 魅族,小米都不支持,目前已知只有华为和三星手机支持,至于其他的手机品牌,各位老铁可以自己试试,有行的记得在下面留言哦!!!大笑大笑

有关更多ShortcutManager的相关API点这里: 点击打开链接

Demo我已上传到github: 点击打开链接

欢迎大家留言与讨论!!!!!!


【信息科学与工程学】计算机科学与自动化——第六十三篇 人机交互之前端交互参数知识库01 此方案可满足千万级并发需求,同时支持时序数据、知识图谱和文档数据库的高效处理,通过云原生架构实现极致弹性。​:每月约$15-20万(100节点K8s集群+数据库集群+CDN流量)1. 宠物上架/下架流程。 阅读详情

相关推荐

一文了解英伟达(NVIDIA)所有显卡芯片

英伟达(NVIDIA)的产品线庞杂繁复,从面向游戏玩家的GeForce RTX系列,到数据中心的H100、B200,再到Jetson、DRIVE等边缘智能平台,一般人很难以厘清其全貌。这篇文章将用通俗而专业的语言,一文打通英伟达显卡芯片体系,让你彻底读懂这个GPU帝国是如何运转的。

bjdx_001的博客 6352

Android 快捷方式进阶:ShortcutManager与ShortcutManagerCompat核心API解析与实战技巧

本文深入解析Android快捷方式管理的核心API——ShortcutManager与ShortcutManagerCompat,涵盖动态创建、更新、批量操作及状态管理等全生命周期精细化管理。通过实战代码示例,详细讲解如何利用这些API实现动态快捷方式的智能推荐与更新,并进阶指导如何创建可固定至桌面的快捷方式,帮助开发者提升应用交互体验与用户效率。

weixin_29294597的博客 325

学习STM32的流体水位传感器

引言: 流体水位传感器是一种常用于测量液体水位的设备,广泛应用于水位监测、液位控制和流量计量等领域。STM32是一款功能强大的单片机,具有丰富的外设和灵活的编程能力,非常适合用于流体水位传感器的开发。本文将介绍如何使用STM32开发板与流体水位传感器进行连接和通信,并通过编写代码实现水位的测量和显示。五、总结: 通过以上的代码示例,我们可以实现使用STM32开发板与流体水位传感器进行连接和通信的功能。三、编写代码: 以下是使用STM32CubeIDE编写的示例代码,实现了读取流体水位传感器的功能。

xiaoalla的博客 739

Android 7.1 设置默认启动桌面,并设置为主屏幕应用

frameworks/base/core/java/com/android/internal/app/ResolverActivity.java 1、在此Activity添加方法 private boolean setupDefaultLauncher(String packageName) { int position = mAdapter.getDefaultHomePosition(...

qq_27256793的博客 6995

毕设-MobileNetV4:给YOLOv8装上轻量化“引擎”——通用瓶颈与C2f融合的实战教程

本文介绍了一种将MobileNetV4与YOLOv8结合的目标检测模型轻量化方案。MobileNetV4通过通用瓶颈(UB)结构实现多任务适配,其核心改进包括动态卷积核、注意力机制和多路径特征聚合,显著提升特征提取能力。作者详细阐述了如何在YOLOv8框架中实现MobileNetV4的通用瓶颈模块,包括"膨胀-卷积-注意力-压缩"的流程设计,并构建完整的backbone网络。该方案通过融合MobileNetV4的轻量化优势与YOLOv8的高效检测架构,在移动设备上实现了精度与速度的良好平

FJN110的博客 504

clock min pulse width检查

高电平脉宽 = clock fall edge到达FF/CK的时间 - clock rise edge到达FF/CK的时间;低电平脉宽 = 下一T clock rise edge到达FF/CK的时间 - clock fall edge到达FF/CK的时间。而required pulse width是根据FF/CK处的transition,根据查找表计算得到的。为什么clock transition越大,会导致required pulse width越大呢?5、 降低clock上的串扰。

芯冰乐 577

7.1 默认定制桌面Launcher

默认桌面 diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index 9fbd87d..81cedf8 100755 --- a/services/core/java/com/android/server/am/ActivityManagerServ

u010559573的专栏 771

lammps教程:in文件结构详解以及一个比较实用的in文件模板

lammps软件只是一个求解器,没有可视化的前处理和后处理软件,所有的命令只能通过代码的方式输入到求解器进行求解计算。 所有的命令都被写到一个称为“in”的文件里,对于初学者来说,熟悉in文件的编写是一个难点。 in文件其实就是一个文本文档,也没有要求文件名或者后缀名中必须带有“in”字样,用任何文件名均可运行。 in文件里的代码是按照编写的顺序进行解释执行,对于大部分命令行来说,前后顺序影响并不是很大,但是,对于一些命令,在执行过程中需要某个参数,则这个参数的定义和计算必须写在命令执行之前。 例如,对晶体

lammps_jiayou的博客 2万+

android app图标长按展示快捷方式 Shortcuts 类似3d touch

android 长按图标展示快捷方式 首先,这不是一个新功能了,在android 7.1的时候就已经支持创建快捷入口了。因为当时项目用不到也没关注过这块,现在很多应用都支持长按展示快捷入口了,确实有必要对这块了解下了。 1. 静态创建 静态创建比较适合常用的快捷方式不怎么变的情况。 在AndroidManifest.xml 清单文件中找到应用程序的入口,也就是 intent 过滤器设置为 android.intent.action.MAIN 操作和 android.intent.category.LAUN

coder_yao的博客 2600

手把手教你学Simulink——光伏储能系统双向DC-AC逆变器恒功率控制(PQ控制)仿真

本文详细介绍了光伏储能系统中双向DC-AC逆变器的恒功率控制(PQ控制)仿真方法。主要内容包括:1)PQ控制原理及其在光伏满发和储能充放电中的应用;2)系统架构设计,重点推导了功率到dq电流的数学映射关系及电流内环控制算法;3)Simulink建模步骤,涵盖功率电路搭建、PLL设计、电流参考转换等关键环节;4)仿真结果分析,验证了系统在10kW光伏满发和-5kW储能充电模式下的稳态精度和动态切换性能;5)工程实践建议,包括数字控制延迟补偿、低电压穿越处理等实际问题解决方案。该指南为新能源并网系统的功率精准控

MHD0815的博客 425

AI实时盯盘与素材更新迭代功能开发——千川素材投流系统完全指南

《AI驱动的千川素材投流系统完全指南》摘要 本文针对抖音电商生态中巨量千川平台的素材投放挑战,提出了一套AI驱动的实时盯盘与素材更新迭代解决方案。系统通过分层架构设计,整合数据采集、实时监控、AI分析和自动化执行模块,实现分钟级数据追踪与智能决策。核心功能包括实时数据采集、异常检测、自动化投放调整和素材生命周期管理,有效解决人工盯盘效率低、素材生命周期短、决策响应慢等痛点。系统采用Python+FastAPI技术栈,结合机器学习和自动化工具,提供从数据采集到决策执行的全链路解决方案,帮助商家提升投放效率和R

huanghm88的专栏 232

Android App Shortcuts——实现应用快捷方式

之前玩手机的时候偶然发现了一个效果,长按应用图标会显示出几个快捷方式(类似IOS系统的3D Touch功能),点击后可以直接进入相应的页面,不需要点击应用图标来启动应用,并且快捷方式可以放到桌面上单独显示,就像下图这样: 索性就来研究一下这个效果是如何实现的,通过查阅网络上的资料,了解到该效果是通过Android 7.1(API level 25)版本的新特性***App Shortcuts**...

Android 开发架构 1937

创建Shortcut快捷键与桌面图标

1.Shortcut概念 Shortcut 是Android-25新增的一项类似iOS的3D Touch功能的快捷方式组件,但是有着不同的表现形式,因为Android在硬件上不支持触摸压力感应,所以表现形式为长按,而iOS须用力长按。 Android-26新增生成桌面图标方法。 2.快捷键静态配置 一. 在res/xml文件夹底下创建一个xml ...

沉小麟的博客 2273

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Android 7.1 点按震动,Android 7.1.1 之实现 3D Touch

Shortcut概念Shortcut 是Android-25(Android 7.1)新增的一项相似iOS的 3D Touch 功能的快捷方式组件。可是有着不同的表现形式。由于Android在硬件上不支持触摸压力感应,所以表现形式为长按,而iOS须用力长按。首先。来个效果图 在 Launcher 或 应用程序列表 里面。长按应用图标,弹出一个快捷方式列表。 而且,能够把单个快捷方式拖动出...

weixin_30780735的博客 384

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

RK3399 Android7.1刷完系统后第一次开机默认添加第三方应用快捷方式到桌面

快捷方式由Launcher3创建,具体修改packages\apps\Launcher3\res\xml\default_workspace_xxx.xml文件,具体是哪一个要看屏幕上桌面横竖可以放下几个快捷方式图标,比如横向放5个,竖向放5个,那就是default_workspace_5x5.xml文件。在下面favorite 里面是要添加快捷方式的应用类名和包名。另一种方式可在打开应用界面的时候执行“dumpsys activity |grep mFocused”命令确认。

u011774634的博客 703

OC ShortCut 项目实战

一、shortcut系统版本支持 shortcut是在iOS9推出的app快捷入口,基于长按app图标弹出快捷入口列表,可以自定义图标和文本,以及跳转方法。 二、shortcut实现 创建图标 // icons with my own images,icon size 35*35 UIApplicationShortcutIcon *icon1 = [UIApplicationShortcutIcon iconWithTemplateImageName:@"icon1"]; 创建标识和

Coding_Physical的专栏 4286

Android-Shortcuts

静态快捷方式定义:静态快捷方式是在应用的APK或APK Bundle中直接定义的,安装完应用后就会存在快捷方式入口。特点:适用于那些在整个生命周期中intent不会改变,始终完成同一种行为的功能,如联系人、相机等。实现方式:在res/xml目录下创建shortcuts.xml文件,并在AndroidManifest.xml中通过标签引用该XML文件。动态快捷方式定义:动态快捷方式是在应用运行时通过ShortcutManager API创建的,可以随时更新、添加和删除。特点。

shi450561200的博客 1431

切换图标神器:SwitchIconDemo

切换图标神器:SwitchIconDemo 去发现同类优质开源项目:https://gitcode.com/ 是一个开源的Android示例项目,专注于实现应用程序动态更换图标的特性。开发者和UI设计师可以通过此项目轻松地在应用中实现在不重启的情况下切换不同的图标,为用户提供更个性化的体验。 技术分析 该项目的核心在于利用了Android系统的PackageManager API 和 Shortc...

gitblog_00097的博客 425

Android-Shortcuts,让你在系统桌面上为所欲为(1)

最后对于程序员来说,要学习的知识内容、技术有太多太多,要想不被环境淘汰就只有不断提升自己,从来都是我们去适应环境,而不是环境来适应我们!这里附上上述的技术体系图相关的几十套腾讯、头条、阿里、美团等公司2021年的面试题,把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分。

2401_84123557的博客 1055

RK3288安卓7.1系统定制屏幕上面从底部往上滑显示状态栏,并且添加一个虚拟按键再次显示状态栏

现场环境:导航栏+状态栏隐藏,谷歌浏览器作为launcher启动并且进入。实现功能:安卓系统屏幕上任意位置连续点击5次后系统自动隐藏导航栏。难点:任意位置点击5下这个事件如何捕捉。

weixin_43736492的博客 1020

Android7.0添加快捷方式(Shortcut)到手机桌面

这个效果是Android 7.1之后新增的一个功能:应用快捷方式ShortcutManager, 官方API地址: https://developer.android.google.cn/reference/android/content/pm/ShortcutManager.html

记录生活中的点滴美好,活在当下! 2261

Android开发之向桌面添加快捷方式

对于一个希望拥有更多用户的应用来说,用户桌面可以说是所有软件的必争之地,如果用户在手机桌面上建立了该软件的快捷方式,用户将会更频繁地使用该软件。因此,所有 Android程序都应该允许用户把软件的快捷方式添加到桌面上。

fengyuzhengfan的专栏 9801

『Android Tip』-- Shortcuts 快捷方式

开篇 Shortcuts 功能跟随着 Android7.1 Nougat 一起诞生,其主要目在于用户可以定义一些常用的操作路径,以快捷方式的形式存在,这些快捷方式展示在可以支持的设备上,帮助用户快速启动常用或者推荐的页面和行为。 最近也是有 Shortcut 相关的需求需要开发,特此进行了总结,希望可以帮助到大家。ShortcutsDemo 概览 快捷方式一般是以两种方式存在: 一种通过 长按 应...

weixin_34417635的博客 557

Android桌面长按图标快捷方式——Shortcuts

Android创建桌面图标ShortCuts

weixin_42643321的博客 2667

android 创建桌面快捷方式 ShortCut

android 创建桌面快捷方式 ShortCut

muranfei的博客 4785
上一篇: Kotlin 学习初探
下一篇: 安卓P 刘海屏的适配
Lucky_William
博客等级 码龄11年 161粉丝 57原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值