Android系统:Launcher知识点总结

Android12 Launcher3客制化:添加非抽屉模式(可动态切换)、图标自动补位功能 网上的很多博客这个地方都有点不太一样,PendingInstallShortcutInfo都是 InstallShortcutReceiver.PendingInstallShortcutInfo的,但是Android12的代码里面根本就没有InstallShortcutReceiver这个类了,所以全局搜索PendingInstallShortcutInfo发现ItemInstallQueue才有这个类,并且是私有的,我们需要把它改成public。这时候小部件就会消失了,所以我这边还是采取方案二。 阅读详情
一:如何定制Launcher主菜单中应用程序图标的显示顺序?

请修改res/xml/default_toppackage.xml文件:

<toppackages xmlns:launcher="
http://schemas.android.com/apk/res/com.android.launcher2bird13gb">
<app
launcher:topPackageName="com.yahoo.mobile.client.android.odp"
launcher:topClassName="com.yahoo.mobile.client.android.odp.YahooODP"
launcher:topOrder="4"
/>
<app
launcher:topPackageName="com.yahoo.mobile.client.android.im"
launcher:topClassName="com.yahoo.mobile.client.android.im.YahooMessenger"
launcher:topOrder="5"
/>
<app
launcher:topPackageName="com.yahoo.mobile.client.android.mail"
launcher:topClassName=
"com.yahoo.mobile.client.android.mail.activity.YahooMail"
launcher:topOrder="6"
/>
<app
launcher:topPackageName="com.yahoo.mobile.client.android.news"
launcher:topClassName="com.yahoo.mobile.client.android.news.activity.Main"
launcher:topOrder="7"
/>
<app
launcher:topPackageName="com.yahoo.mobile.client.android.finance"
launcher:topClassName=
"com.yahoo.mobile.client.android.finance.activity.Main"
launcher:topOrder="10"
/>
</toppackages>

请按照上面的格式来编辑,编辑为特定app的topPackageName,topClassName以及order的值(从0开始)。
备注:如果是运营商项目,会有resource_overlay机制,请以resource_overlay路径下的default_toppackage.xml内
容为准。

二:如何去除Launcher默认的googlesearch bar?

M
请修改Launcher3/src/com/android/launcher3/Launcher.java的getOrCreateQsbBar()方法,直接return null。
L1:
请修改Launcher3/src/com/android/launcher3/Launcher.java的getQsbBar()方法,直接return null。

三:如果Launcher支持横屏显示,如何避免Launcher重新创建?

如果Launcher可以横屏显示,开机时有时会创建两次。有时用户从横屏应用退出回到Launcher时,Launcher也会重新创建。如何避免Launcher重新创建?
1. 请修改Launcher的AndroidManifest.xml,对Launcher这个Activity添加android:configChanges属性,在这个属性中设置Launcher感兴趣的config变化(例如orientation)。
2. 请在Launcher.java中覆写onConfigurationChanged方法,在此方法中处理Launcher感兴趣的config变化。

四:Launcher3如何让快捷方式默认创建在第一屏?

Launcher3在收到广播:com.android.launcher.action.INSTALL_SHORTCUT后,会自动在桌面上创建快捷方式,默认会创建在第二屏。如果让快捷方式默认创建在第一屏?
M:
请修改LauncherModel.java的findSpaceForItem方法,将如下代码:
int preferredScreenIndex = workspaceScreens.isEmpty() ? 0 : 1;
修改为:
int preferredScreenIndex =0;
L:
请修改LauncherModel.java的addAndBindAddedWorkspaceApps方法,将如下代码:
int startSearchPageIndex = workspaceScreens.isEmpty() ? 0 : 1;
修改为:
int startSearchPageIndex = 0;

五:Launcher3如何调整滑动灵敏度?

Launcher的桌面或者主菜单需要滑动比较长的距离或比较快的速度才会翻页,如何调整滑动灵敏度?
请修改Launcher3的PagedView.java中的变量:
private static final float SIGNIFICANT_MOVE_THRESHOLD = 0.4f;
请将这个变量变小。
备注:此修改L上会同时影响桌面和主菜单,M上只会影响桌面的滑动速度。

六:手机插SIM卡启动,Launcher会闪一下,如何避免?

手机插SIM卡启动,Launcher会闪一下,如何避免?
KK/L0/L1/M0:
1. 在AndroidManifest.xml中修改Launcher这个Activity的属性,加上android:configChanges="mcc|mnc"。
2. 在Launcher.java中增加如下方法:

@Override
public void onConfigurationChanged(Configuration newConfig) {
Log.d(TAG, "onConfigurationChanged() called.");
super.onConfigurationChanged(newConfig);
}
3. 在LauncherModel.java的onReceive方法中,找到action等于Intent.ACTION_CONFIGURATION_CHANGED的分支,注释
掉mcc/mnc变化时调用的forcereload()这行代码。

七:如何让Launcher3的主菜单和桌面支持循环滑动?

如何让Launcher3的主菜单和桌面支持循环滑动?
如果项目不是operator定制项目,请找到DefaultWorkspaceExt.java,将其中的supportAppListCycleSliding()返回值
修改为true。
如果项目是operator定制项目,请找到OP0XWorkspaceExt.java(例如移动是OP01WorkspaceExt.java),将其中的
supportAppListCycleSliding()返回值修改为true。
Note:从M0版本开始,Launcher主菜单的结构做了大的调整,从水平滑动更改为垂直滑动,所以无法再支持循环滑动。
按照以上修改后,只有Workspace可以支持循环滑动。

八:切换语言后返回Launcher主菜单,应用名称没有立即切换成正确的语言

1、进入Launcher出菜单,点击 设置>语言和输入法>语言,切换成其他语言;
2、点击back键回到Launcher主菜单,应用名称仍然是原来的语言,过几秒钟才切换成正确的语言。
1. 修改LauncherModel.java的getAppShortcutInfo方法,将其中的此段代码:
// from the db

if (TextUtils.isEmpty(info.title) && c != null) {
info.title = Utilities.trim(c.getString(titleIndex));
}
替换为:
// from PMS.
if (lai != null) {
info.title = lai.getLabel();
}
2. 修改IconCache.java的cacheLocked方法,在末尾添加:
if (info != null) {
entry.title = info.getLabel();
}

九:Launcher2的主菜单一直卡在加载状态,如何解决?

1、请修改Launcher.java的onDestroy方法,将如下code:
mModel.stopLoader();
app.setLauncher(null);
修改为:

// It's possible to receive onDestroy after a new Launcher activity has
// been created. In this case, don't interfere with the new Launcher.
if (mModel.isCurrentCallbacks(this)) {
mModel.stopLoader();
app.setLauncher(null);
}
2、请在LauncherModel.java中增加如下code

public boolean isCurrentCallbacks(Callbacks callbacks) {
  return (mCallbacks != null && mCallbacks.get() == callbacks);
}
十:如何动态打开Launcher的debug开关?

Launcher的deug开关有些默认是关闭的,譬如:DEBUG_MOTION。如何动态打开这些关闭的debug开关?
请执行
adb shell setprop launcher.debug.xxx true
adb shell stop
adb shell start
其中launcher.debug.xxx可以设置为下面的任意值:
launcher.debug.all
launcher.debug
launcher.debug.draw
launcher.debug.drag
launcher.debug.edit
launcher.debug.key
launcher.debug.layout
launcher.debug.loader
launcher.debug.motion
launcher.debug.performance
launcher.debug.surfacewidget
launcher.debug.unread
launcher.debug.loaders
launcher.debug.autotestcase
Note:此FAQ只支持KK2及以上版本,而且只对当次开机有效。

十一:桌面上特定的图标不能被移动和删除

桌面上有些预置的快捷方式,要求不能移动和删除,要怎么做?

1、请在Workspace.java的startDrag方法中判断将要拖动的图标是否是特定的图标
(通过package name/activity name判定),如果是的话,就禁止拖动。
2、那么如何获取当前点击图标的package name呢?
请在Workspace.java的startDrag方法中,在View child = cellInfo.cell;代码后面
添加:
ItemInfo info = (ItemInfo)cell.getTag();
接下来判断info是否是ShortcutInfo实例,如果是的话,就可以将info强制转换成
ShortcutInfo,然后拿到intent,最后通过intent获取package name/activity
name。

十二:快速双击home键回到Launcher3的桌面默认页

Launcher3桌面的默认页是首页(即0页)。
如果当前界面是Launcher3桌面的非默认页,点击home键,可以回到桌面的默认页。但是如果当前界面是其它应用,此
时快速双击home键却不能回到桌面的默认页。
请修改 Launcher3 的 launcher.java 的 onNewIntent 方法,将

final boolean alreadyOnHome = mHasFocus && ((intent.getFlags() &
Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT)
!= Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT);
修改为:
final boolean alreadyOnHome = (intent.getFlags() &
Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT)
!= Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT

十三:Launcher如何去掉进入应用时的动画效果?

点击Launcher桌面上的图标,会先有图标放大的动画,然后才进入应用。如何去掉动画效果?
请修改Launcher.java的startActivity方法,如下:

private boolean startActivity(View v, Intent intent, Object tag) {
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
try {
// Only launch using the new animation if the shortcut has not opted out (this is a
// private contract between launcher and may be ignored in the future).
//boolean useLaunchAnimation = (v != null) && //mtk modify
// !intent.hasExtra(INTENT_EXTRA_IGNORE_LAUNCH_ANIMATION); //mtk modify
boolean useLaunchAnimation = false; //mtkadd
LauncherAppsCompat launcherApps = LauncherAppsCompat.getInstance(this);
UserManagerCompat userManager = UserManagerCompat.getInstance(this);

十四:Launcher AppWidget摆放不居中

如果Launcher的Workspace配置为非4x4大小,例如5x5。当摆放4x1或者其他AppWidget时不会居中。
上面描述的状况是无法避免的,任何桌面配置上总有一些AppWidget无法居中,例如4x4的桌面时3x3的也不能居中,反而在5x5的桌面上这个
AppWidget可以居中。
同时,也有些三方AppWidget会配置为5x1甚至6x1的状况,类似的兼容性问题是无法做到完美的,任何配置都有适配上的局限性。

十五:Launcher主菜单的搜索框匹配规则是什么?

从M版本开始,Launcher的主菜单上新增了一个搜索框,可以搜索主菜单中的应用。那么这个搜索框的匹配规则是什么呢?
搜索框的关键字会从主菜单应用名称中每个单词的开头开始匹配,无法从单词中间或者末尾匹配(空格隔开单词)。
譬如:在搜索框输入"T",可以匹配"Dev Tools"、"Sim Toolkit",无法匹配"Calculator"、"Contacts"。

十六:持续更新中...








Android 11.0 Launcher3桌面显示多个相同app图标的解决办法 在11.0的系统ROM定制化开发中,在Launcher3的系统原生桌面中,在显示桌面的时候,在禁用和启用app的功能测试的时候,会发现有多个相同app的图标显示在桌面 这对Launcher3的体验效果不是很好,所以为了优化产品,需要解决这个bug,然后让产品更完善 阅读详情

相关推荐

Android 内置多个launcher 设置默认launcher

前言 launcher因为开机即启动,若添加默认launcher过早则可能导致其他进程崩溃,添加过晚则起不到启动默认 设置的效果且会弹出选择launcher的提示框. 查看了一些其他的修改方法,均需在 ActivityManagerService.java 的 startHomeActivityLocked 添加默认启 动,但是发现添加后,若系统存在多个 launcher apk,则仍然会弹出la...

cczhengv 6212

android L1 版本Launcher桌面循环滑动

每个版本的Launcher都有很大的变动,经过测试5.1的launcher可以完美在6.0环境运行 遇到这个需要桌面循环滑动的需求 我就又开始偷懒了 废话不多说 直接上代码 具体过程就不分析了 直接在这里解决问题路径Launcher3\src\com\android\launcher3\Workspace.java */ public Workspace(Context contex

tonyechen的博客 2165

Android自定义启动器:android-launcher-plus深入解析

Android 提供了类来简化手势的识别过程。通过实现接口,我们可以自定义手势的响应逻辑。@Override// 单击事件处理逻辑// 实现更多手势识别方法...// 使用GestureDetector@Override});在上述代码块中,类继承自,并重写了等方法。通过将实例与视图的触摸监听器关联,我们可以方便地处理手势事件。在Android应用开发中,为了提供更丰富和个性化的用户体验,开发者常常需要对标准的行为进行扩展或完全自定义。

weixin_33773084的博客 671

Android Launcher桌面循环

桌面循环的Launcher主要是需要通过canvas的translate(dx, dy)来实现。比如现在有5屛,当屏幕向右滑动的时候,当mCurrentScreen=4(下标从0开始)时,继续往右滑动,这个时候需要判断该桌面是否需要循环,如果需要循环需要对代码做特殊处理,详细见代

gmailToyou的专栏 8710

Launcher3定制与深度开发实战

Android启动器的核心功能包括桌面管理、应用访问、小部件处理等,它是建立在Android框架之上的应用程序,通常会集成一个Home服务(HomeService)和一个内容提供者(ContentProvider)。Home服务负责处理用户的交互,如桌面点击、滑动等,而内容提供者则负责管理应用、快捷方式和小部件的数据。主题定制是 Launcher3 提供给用户个性化界面外观的一种方式。在Android中,主题通常是以资源文件的形式定义,这些资源文件包括了颜色、尺寸、样式等。

weixin_42607969的博客 1020

安卓Android源码分析与Launcher定制实战

Android源码是由多个模块组成的复杂系统。这些模块可以分为应用程序框架、系统服务、硬件抽象层(HAL)、运行时环境以及底层Linux内核。开发者在进行定制和优化时,通常需要深入理解这些模块以及它们之间的关系。在开发过程中,引入持续集成(Continuous Integration)的思想,可以有效提高开发效率和源码质量。通过持续集成工具,如Jenkins、Travis CI等,可以自动化编译、测试过程,减少人为干预。在Android系统中,模块负责动态主题的显示和音频主题的管理。

weixin_30299319的博客 1069

Android Framework知识点

Android Framework知识点

汽车以太网和SOA 4543

android launcher3源码 循环翻页

android laucnher3 源码,仅供学习使用。

Android 系统桌面 App —— Launcher 开发(1)

Launcher就是Android系统的桌面,俗称“HomeScreen”也就是我们开机后看到的第一个App。launcher其实就是一个app,它的作用是显示和管理手机上其他App。目前市场上有很多第三方的launcher应用,比如“小米桌面”、“91桌面”等等。

fromVillageCoolBoy的博客 1万+

论文解析-sciPENN

用这2个CITE-seq共有的protein作为训练集,分别将他们特有的protein作为测试集,评估sciPENN对CITE-seq数据集中缺失的protein丰度预测准确度。来自Seurat 4 的PBMC数据集,样本被注射水疱性口炎病毒 (VSV) 载体 HIV 疫苗,数据集包含每个样本注射疫苗0天、3天、7天的CITE-seq数据。PBMCs作为训练集,MALT作为测试集,利用scRNA-seq测试17个蛋白质表达水平。Monocyte:随机取4个样本作为训练集,剩余4个样本作为测试集。

weixin_46065198的博客 1023

华为模拟器eNSP练习题 - HCIA综合实验

华为模拟器eNSP练习题 - HCIA综合实验 题目要求 ISP路由器只能配置IP地址,之后不得进行其他任何配置; 整个内部网络基于192.168.1.0/24进行地址规划; R1/R2之间启动OSPF协议,单区域; PC1-PC4自动获取IP地址; PC1不能telnet R1,PC1外的其他内网pc可以; PC1-PC4可以访问PC5,R2的公网接口只拥有一个公有IP12.0.0.1; 外部的client可以通过域名www.ensp.com访问http server; ISP路由telnet 12.0

炸鸡店老板z的博客 9880

Android系统开机到Launcher启动流程分析

系统如何是被已安装的应用哪个是launcher应用? 如何定制一款launcher? 进程创建完成的出口是如何定义的? 掌握进程创建流程中各个类和关键方法的作用。 为什么Activity必须在清单文件中注册? ActivityStarter会做各种启动前检查。 ...

路漫漫其修远兮,吾将上下而求索 8894

logisim计组实验八 乘法器

原理:点这里 有问题欢迎留言哦~ 文章目录五位阵列乘法器电路图时间延迟分析六位补码阵列乘法器五位无符号乘法流水线原理图电路图原码一位乘法器原理图电路图补码一位乘法器 五位阵列乘法器 电路图 此处注意:全加器FA的cout端是进位端而非输出端 使用硬件控制比循环累加的速度快得多。 但是存在串行进位链 改进版: 时间延迟分析 T是计算相加数的一级门延迟 3n–>2n 性能差别在1.5倍 ...

treblez's blog 2万+

Android 定制自己的launcher

launcher(安卓系统桌面启动器) launcher是安卓系统中的桌面启动器,安卓系统的桌面UI统称为Launcher。Launcher是安卓系统中的主要程序组件之一,安卓系统中如果没有Launcher就无法启动安卓桌面,Launcher出错的时候,安卓系统会出现“进程 com.android.launcher 意外停止”的提示窗口。这时需要重新启动Launcher。

android程序猿HJ的博客 2万+

auto.js梦幻西游游戏脚本,梦幻西游脚本开发思路

本篇文章给大家谈谈梦幻西游脚本用什么语言写,以及auto.js梦幻西游游戏脚本,希望对各位有所帮助,不要忘了收藏本站喔。

npy199331的博客 1940

生存网络与mlr3proba

通过结合生存网络和mlr3proba,可以使用生存网络模型来预测个体在给定时间点发生事件的概率,并使用mlr3proba提供的工具进行模型的训练、评估和选择最佳模型。iii)基本的机器学习(ML)方法,如重新排序和调整。在本文中,我们将只讨论前五种,因为它们在文献中得到了更好的建立,并且它们具有相同的接口,这简化了调优,我们将在下面看到。我们不会为模型指定自定义架构,而是使用默认架构,如果你熟悉PyTorch,那么你可以选择创建自己的架构,如果你愿意的话,通过将其传递给模型中的custom_net参数。

weixin_46587777的博客 1364

Android11系统之Launcher启动流程

本文的内容主要是分析安卓系统源码,可能阅读起来会有点枯燥,所以最好可以跟着源码走一遍流程,学习源码没有捷径。 本文源码基于Android 11 Launcher 进程即 Android 系统桌面,也是一个应用程序,作为应用程序,那么启动过程就少不了AMS(ActivityManagerService),AMS是 Android 系统中最核心的系统服务,几乎所有的APP应用都需要与AMS通信 Launcher 也不例外,本文先分析AMS启动再走到 Launcher 进程。 AMS的启动过程 从上篇.

永琪的博客 8433

基于CubeMX与lwip的STM32轻量级HTTP服务器搭建及VSCode高效开发指南

本文详细介绍了如何在STM32单片机上,利用STM32CubeMX图形化配置工具和轻量级TCP/IP协议栈lwIP,快速搭建一个轻量级HTTP服务器。通过结合VSCode的高效代码编辑能力,提供了一套从硬件连接到动态网页交互(SSI/CGI)的完整开发指南,旨在为嵌入式设备提供零成本、跨平台的Web交互界面。

weixin_29163857的博客 585

Android 系统桌面 App —— Launcher 开发

Launcher就是Android系统的桌面,它也是一个app,用于管理其他的app。

Alpinist Wang 1万+

华为Watch的ECG功能技术分析

华为Watch的ECG(心电图)功能通过硬件传感器、算法优化和医疗认证的结合,实现了对心脏电活动的监测和房颤(AFib)等心律失常的预警。采用医疗级ECG模拟前端芯片(AFE),如TI(德州仪器)的ADS1292R等,支持低噪声、高采样率(通常≥200Hz)。结合PPG(光学心率)数据交叉验证,提高检测可靠性(如ECG和PPG心率不一致时触发警告)。通过RR间期变异性判断心律是否规则,识别房颤(AFib)的典型特征(如不规则不规则心律)。结合加速度计数据,识别手臂运动导致的信号失真,动态调整算法参数。

xu_wenming的博客 6445

2026 MCM Problem A:智能手机电池连续时间建模——完整解题思路附第一问解题代码

摘要:本文针对2026年MCM A题"智能手机电池连续时间建模"问题,提出基于能量守恒原理的微分方程模型。通过建立以SOC(t)为状态变量的动态系统,将屏幕亮度、处理器负载等主要耗电因素纳入统一功率框架,实现了不同使用场景下的电量变化精确描述。研究表明,屏幕亮度和CPU负载对续航时间影响最大,温度与后台任务会产生放大效应。该模型具有物理可解释性和应用扩展性,为手机电源管理提供了理论依据。(150字)

一键难忘的博客 771

Android 11 Framework 优化:屏蔽“系统启动中”提示,直达 Launcher

本文介绍了在Android 11平台上优化开机体验的实现方案。通过在Framework层修改代码,主要实现了三个关键优化:1)延迟退出开机动画直到真正的Launcher绘制完成;2)移除原有的开机动画退出逻辑;3)屏蔽默认的"系统启动中"过渡界面(FallbackHome)。这些修改使得开机动画能够持续显示,直到桌面完全加载完成,实现了从开机到桌面的无缝视觉过渡。具体修改涉及ActivityRecord.java、WindowManagerService.java和FallbackHom

u010345983的博客 3766

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Android系统中Launcher应用是被谁启动的

在 Android 系统中,Launcher是一个重要的应用,它负责显示主屏幕、管理应用程序图标和提供启动应用程序的界面。Launcher 是由启动和管理的,具体来说,Launcher 的启动过程涉及多个 Android 系统组件和机制。

netwalk的专栏 1634

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Android系统启动(四) — Launcher 启动过程

系统启动的最后一步是启动一个应用程序来显示系统中已经安装的应用程序,这个应用程序就叫做Launcher。Launcher在启动过程中会请求返回系统中已经安装的应用程序信息,并将这些信息封装成一个快捷图标列表显示在系统屏幕上,这样用户就可以通过点击这些快捷图标来启动相应的应用程序。通俗的讲,Launcher就是Android系统的桌面,作为Android系统的启动器,用于启动应用程序;作为Android系统的桌面,用于显示和管理应用程序的快捷图标或者其他桌面组件;

xingyu19911016的博客 1万+

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Android 源码多个Launcher设置默认Launcher

在Android系统中,设置默认Launcher(启动器)是一个涉及系统权限和配置的过程。通常,这个过程不是通过简单地修改几个文件或设置就能完成的,因为它需要系统级别的权限。不过,我可以概述一下在Android源码级别如何设置或允许用户选择默认Launcher的大致步骤。代码路径:frameworks/base/core/java/com/android/internal/app/ResolverActivity.java2.多个launcher 启动设置默认launcher的核心功能实现和分析通过在系统中

shi450561200的博客 4506

安卓系统Launcher的开发

Launcher是安卓系统中的桌面启动器,安卓系统的桌面UI统称为Launcher。Launcher是安卓系统中的主要程序组件之一,安卓系统中如果没有Launcher就无法启动安卓桌面,Launcher出错的时候,安卓系统会出现“进程 com.android.launcher 意外停止”的提示窗口。这时需要重新启动桌面Launcher。 安卓系统Launcher的开发   一、主要文件

samsam2013的博客 1188
上一篇: Android系统:如何在小部件列表中隐藏某个widget或者shortcut?
下一篇: Android系统:Google Search的问题点
LYJ的IT生活
博客等级 码龄11年 160粉丝 83原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值