自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(120)
  • 资源 (7)
  • 收藏
  • 关注

原创 Android开发面试:Android知识答案精解

Android 四大组件 AMS Activity Service BroadcastReceiver ContentProvider Fragment Handler:线程间通信的机制 Hander消息分发机制 HandlerThread IdleHandler View Window View绘制 自定义View View事件分发机制 RecyclerView WebView 动画 Bitmap Binder 序列化 IPC通信有哪些 Binder是什么 Binder原理 Intent大小限制 AIDL

2023-03-02 13:14:03 1767

原创 简单理解-Head First 设计模式

我们知道四人组的《设计模式》共介绍了23种,并且将其分成3类,分别是:创建型、结构型、行为型,如下所示: - **创建型**:**5个**。工厂方法模式、抽象工厂模式、Builder模式(Retrofit)、单例模式(类初始化)、原型模式 - **结构型**:**7个**。适配器模式、装饰模式(File操作)、代理模式(静态代理——代理对象内部操作委托对象、动态代理——代理对象里面不指定特定的委托对象,更加灵活)、组合模式、桥接模式、外观模式、享元模式 - **行为型**:**11个**。观察者模式

2020-12-10 00:15:38 3401

原创 我又拿起了《Kotlin核心编程》

《Kotlin核心编程》是水滴技术团队2019-4-15出版的,也不知道为啥这么火,网上搜Kotlin学习文档、书籍,除了Kotlin官方文档,其他大家极力推荐的就是此书了,读完以后才知道为什么。首先,我是19年8月份入手的Kotlin核心编程,先是读了前面3章,但由于工作原因就先放下来了。不幸的是,今年新型冠状病毒导致的疫情异常严重,从刚开始的武汉封城,到城市小区、乡下农村,封区的封区,...

2020-02-18 17:14:45 7609 2

原创 我用了两年时间去读《Thinking in Java》

路漫漫其修远兮,吾将上下而求索。 ——题记我用了两年时间去读《Think...

2019-04-30 18:13:44 20553 15

原创 车载多媒体Android开发平台学习心得

Android平台工具学习一、Android平台Eclipse+ ADT+SDK1.1、准备工作进行开发前的安装配置:①Java:先安装java,配置JDK环境变量;②Eclipse:使用Eclipse集成开发环境开发android;③ADT:在Eclipse中集成ADT插件;④SDK:然后在Eclipse中关联SDK,并还需要配置ADB环境变量。...

2017-10-25 18:52:13 9152 15

原创 20240611-WWDC2024-visionOS 2/Apple Intelligence/ARKit

目录1 visionOS 21)从2D图像提取左右眼的视角,生成空间照片——利用机器学习2)提供丰富的API和框架2 Apple Intelligence1)自动对通知优先级排序、缩略通知、专注模式2)Siri可以根据屏幕内容执行相关操作3)自动P图去掉背景干扰物4)录音、转文字、生成摘要3 ARKit1)Room tracking:房间追踪2)Plane detection:平面检测3)Object tracking:物体追踪4)World tracking:现实场景追踪5)Hand tracking:手

2024-06-18 14:11:45 774

原创 培训总结规划——写于2017年夏天

“要成功,先发疯。”上进的人都渴望成功,他们的成功大多数是对于工作的孜孜以求,对生活的热爱。我也是一个热爱生活的人,爱好运动、爱好旅游、爱聚会,也渴望成功(也应是热爱工作的)。虽然成功都不是那么容易,但我也有一种坚持不懈、乘风破浪的精神。合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下。

2024-06-09 20:47:32 354

原创 20240516-Flyme AIOS 特种兵发布会

路演功能AI连麦对话:面试官面试陪练、口语、咨询;AI行业动态获取:让AI研究最新的人工智能行业动态;AI总结:微信公众号、网页长文等网址总结、以及行业报告总结;支持中英文文档,支持txt、doc、pdf格式;支持进一步提问;AI搜索:支持信息来源查看;支持搜索内容进一步追问;即圈即搜:截图后画圈搜索;拖拽流转:拖拽交给AI,然后可搜索和分享;AI通话助手:基于识别通话内容;AI接听是AI陪聊,快速挂断骚扰电话;外卖快递根据预设文本自动回复;AI生

2024-05-17 15:01:11 310

原创 Android 窗口那些事儿

你,是否有过这些疑问?Android 中窗口的定义是什么?Activity、Window、View 之间的关系?窗口到 View 的事件分发机制,是怎样的?WMS 是如何管理屏幕上显示的诸多窗口的?Android 是默认单窗口吗?多窗口怎么实现?SurfaceFlinger 合成的 Layer 与窗口是一一对应的吗?SurfaceFlinger、Layer、Window,以及 WMS 的联系?点击的事件分发与双击的事件分发,为什么走的是不一套机制?下面,就一起去探讨下这些问题吧。

2024-04-02 21:23:15 1253

原创 如何一周内从0到1开发一款应用商店?

1.📂 前言背景:为了对Android OS内的自研应用、第三方应用进行管控,研发内部决定开发一款应用商店,无产品、设计、测试以及项目同学的参与。 参与开发人员:OS/应用开发同学(本人)、云端开发同学。 客户与用户:用户是最终使用产品的人,更多关注功能实用性,当前阶段用户是OS/应用开发同学,未来用户是产品经理、设计同学,以及未来会使用此OS的用户;客户是直属领导,更多关注功能完成度。2.🔱任务拆分2.1 产品需求拆分

2024-03-22 15:15:38 670

原创 Android系统签名的制作与使用

1.📂 背景2.🔱 制作Android系统签名步骤一:找到platform.pk8和platform.x509.pem签名文件步骤二:下载keytool-importkeypair签名工具步骤三:使用签名文件和签名工具生成.jks签名文件3.✅ 使用Android系统签名步骤一:在项目的app模块根目录下新建signing.properties文件步骤二:将生成的xxx.jks文件放在项目的app模块根目录下步骤三:app模块build.gradle中新增签名信息

2024-03-17 11:27:01 1732

原创 Android性能自测

一、应用启动耗时自测二、帧率查看三、Top命令查看系统资源占用3.1 第一行:任务(进程)3.2第二行:mem状态3.3第三行:swap交换分区3.4第四行:cpu状态3.5第五行:标题四、抓取trace.html文件分析4.1 使用Android Monitor工具4.2使用adb shell atrace命令4.3使用systrace.py命令五、抓取log分析5.1 设置日志缓冲大小5.2 打印crash日志5.3 打印常规日志5.4 打印内核日志

2024-03-17 10:32:20 972

原创 如何处理Android悬浮弹窗双击返回事件?

方案主要分为如下几步:1、窗口默认不可获取焦点;2、窗口监听焦点的移入/移出事件;3、窗口监听到焦点移入,判断窗口是否可获取焦点,否——设置窗口可获取焦点,是——不做任何操作;4、窗口监听到焦点移出,判断焦点是否在窗口内部,否——设置窗口不可获取焦点,是——不做任何操作;读者可思考如下2个问题,1)问题1:为什么在窗口监听到焦点移入后,要再判断窗口是否可获取焦点?2)问题2:为什么在窗口监听到焦点移出后,要再判断焦点是否在窗口内部?《1.1 准备知识的Hover事件分发部分》

2024-03-13 17:58:40 1084

原创 Android9-W517-使用NotificationListenerService监听通知

方案一通过Action跳转《系统设置》应用,手动打开通知监听权限:android.settings.ACTION_NOTIFICATION_LISTENER_SETTINGS——结果如图:显示在此设备上不能获得此特性——暂不可行;方案二在源码frameworks/base/core/res/res/values/config.xml路径下,修改config_defaultListenerAccessPackages属性的值为应用包名com.***.launcher——

2024-03-05 17:15:31 1114

原创 Android 自定义开机动画

一、实现自定义开机动画步骤一:准备 bootanimation.zip步骤二:将bootanimation.zip 放到/system/media/bootanimation.zip下步骤三:重启即可压缩软件:WinRAR与2345好压都可以;压缩方式:必须为“存储”方式;压缩包:不能包含bootanimation文件夹,直接选择文件压缩(不要在bootanimation文件夹上压缩,要进入bootanimation文件夹后选择所有文件(part*文件夹+desc.txt文件)进行压缩);

2023-12-12 20:35:37 1596 1

原创 当ContentProvider跨进程遇上Room数据库

Android开发使用到的数据库,官方都已推荐直接使用Room,那我们为何不跟着时代的脚步走呢。可是当需要使用ContentProvider提供跨进程的数据操作时,可能会由于资料不多,会遇到不少的坑,那么这就是本文的目的——方便你我他,快捷使用Room+ContentProvider。 本文主要内容包括如下三个部分:Room数据库使用ContentProvider服务端ContentProvider客户端

2023-11-07 15:39:42 419

原创 再次理解Android账号管理体系

我们知道,Android的账号管理体系是用来管理用户在Android设备上的身份验证和授权的系统,包括了对账号的创建、授权、修改和删除等操作的管理。那么,我们为什么要使用Android的账号管理体系? 尽管,我们可以自己使用SP、MMKV、文件或数据库等方式来存储、更新、删除账户、密码或AuthToken;但其实涉及到跨进程通信,实现起来其实是稍显麻烦的;并且对于数据安全,信息加密这块的可靠性也有待商榷。 其实,Android从2.0开始就已加入一个新

2023-09-14 21:56:20 980

原创 优雅实现垂直SeekBar:不继承Seekbar、不自定义View

实现竖直SeekBar,目前大抵有如下3种方案:方案一:通过继承View自定义实现,如:继承View自定义实现VerticalSeekBar方案二:通过继承SeekBar重载方法内部旋转实现,如:继承SeekBar重载方法内部旋转实现方案三:对于API 11和更高版本,通过rotation属性在XML中指定旋转270°实现,如:使用seekbar的XML属性(android:rotation="270")获得垂直效果 看标题我们就知道,本文采用的方案三,不继承SeekBar

2023-07-12 14:56:36 1843 2

原创 Kotlin 一劳永逸实现 TAG

以上方式,都需要在每个类定义相应的 TAG,是比较繁琐的。那么,在 Kotlin 中可以通过扩展函数统一声明 TAG,避免在每个类中定义相应的 TAG。我们可以通过如下两种方式实现:

2023-06-20 16:57:14 1333 4

原创 两张图理解MR与XR

AR创建了一个覆盖在现实上的虚拟内容,但不能与现实环境交互;VR让人沉浸在一个完全虚拟的环境中,在非现实环境中尽情驰骋遨游;MR是增强现实与增强虚拟的结合,它创造了可以与现实环境交互的虚拟对象;XR将所有这三种现实(AR、MR、VR)整合在一个术语下,是未来发展的大方向。

2023-06-06 17:03:16 1920

原创 Android 12 通知样式整理

最近在负责Android12 SystemUI的Notification部分,需要先整理出所有通知样式给到UI设计师,于是将Notification的UI样式记录生成本文。0.📂前言1.🔱通知样式总览2.⚛️通知样式详解2.1SimpleNotifiaction2.2ActionNotifiaction2.3RemoteInputNotifiaction2.4BigPictureNotifiaction2.5BigTextNotifia

2023-05-25 17:06:41 1206

原创 Android应用-开发框架设计

我们知道常见的应用开发框架主要有:模块化、组件化、插件化,那么随着各个应用不断的迭代升级,应用的开发框架也从最开始的单App模块到多模块化,再到组件化与插件化。那么对于一般的应用开发框架,应该遵循什么样的设计原则呢?首先,我想到的是不能过度设计,一口不能吃一个大胖子,一来就嚷着要做插件化是不太现实的,框架应该跟随应用需求一步步迭代或重构。其次,直接使用AS创建一个新项目,会缺少应用迭代升级的一些常见元素(如常见的Retrofit、Glide、LiveEventBus等三方开源SDK和一些

2023-05-19 11:35:24 852

原创 SystemUI流程

SystemUI 是系统应用,由 SystemServer 进程进行启动,入口 Application 为SystemUIApplication。常用UI组件有如下几个:状态栏 StatusBar通知栏 NotificationPanel导航栏 NavigationBar最近任务 Recent键盘锁 Keyguard以上从 SystemUI 大概类图,以及自身启动流程开始,到 StatusBar 创建流程,再到系统 Notification 实现流程,一步步去理解 SystemUI 的相关流程。

2023-04-19 20:50:35 913

原创 Android开发面试:Kotlin面试知识答案精解

Kotlin什么是Kotlin:目标(更好的Java)、编程方式(面向对象命令式编程+函数式编程(Scala有包括宏))、一些改良(单例模式,data数据类,NPE,可变性,更多的语法糖,类型推导)为什么使用Kotlin:a、Kotlin在空安全、扩展函数、协程和语法糖带来诸多特性,让代码量减少,也更加易读;b、Google一直在大力推Kotlin,目前很多源码都是Kotlin,并且可以和Java互操作无缝切换,继续做Android开发需要我们去掌握这门语言;c、自己也比较喜欢接触新事物,主动买书Kot

2023-03-13 19:14:42 761

原创 Android开发面试:数据结构与算法知识答案精解

数据结构与算法线性表数组链表栈队列树二叉树红黑树哈夫曼树排序算法冒泡排序选择排序插入排序希尔排序堆排序快速排序归并排序查找算法线性查找二分查找插值查找斐波拉契查找树表查找分块查找哈希查找动态规划算法贪心算法LeetCode算法题

2023-03-13 19:06:39 852

原创 Android开发面试:架构设计和网络知识答案精解

架构设计编程思想六大设计原则重构-Code SmellAOP设计模式创建型5个行为型11个结构型7个编程范式MVCMVPMVVMMVI模块化组件化插件化、热修复Jectpack网络网络基础TCP/UDP协议Http/Https协议Socket通信

2023-03-09 22:35:57 661

原创 Android开发面试:Java知识答案精解

Java集合集合概述HashMapConcurrentHashMap泛型反射注解IO流异常、深浅拷贝与Java8新特性Java异常深浅拷贝Java8新特性并发线程线程池锁volatileJVM内存区域内存模型类加载机制垃圾回收机制如何判断对象已死

2023-03-08 17:56:19 648

原创 实操:MVVM实现Android通讯录功能

实操:MVVM实现Android通讯录功能​1 权限:读取通讯录 首先,在Android6.0及以上,需在manifest声明读取通讯录的权限,并在代码中动态监测和申请权限。android.Manifest.permission public static final String READ_CONTACTS = "android.permission.READ_CONTACTS"2 实现:读取通讯录2.1 View层:Activity中懒加载ViewModel​

2023-02-06 16:32:02 964

原创 Kotlin-协程使用

withContext 指定执行协程的线程Dispatchers.Main - 在 Android 主线程上运行协程Dispatchers.IO - 此调度程序经过了专门优化,适合在主线程之外执行磁盘或网络 I/ODispatchers.Default - 此调度程序经过了专门优化,适合在主线程之外执行占用大量 CPU 资源的工作如:withContext(Dispatchers.IO)创建一个在 IO 线程池中运行的块。

2023-02-06 13:51:20 967

原创 单元测试基础知识

测试方法命名简单测试:以test开头,以业务方法结尾。如业务方法名:isToday,测试方法可命名为:testIsToday;复杂测试:期望结果_测试场景。测试方法声明必须是public修饰的,必须没有返回值,必须没有参数,必须使用@Test注解修饰。运行测试方法选中测试方法名 -->右键--> Run '测试方法名' 运行选中测试方法;选中类名 -->右键 -->Run '测试类名' 运行选中类所有的测试方法;选中模块名 -->右键 -->Run 'All Tests

2023-02-06 11:53:37 392

原创 Unity开发入门吐血反思

​先花上1-2周学习了解Unity相关知识。我的学习思路大概分为下面几个过程:了解Unity是什么,以及了解游戏开发相关文章。对游戏建立起个初步印象,这类文章全网很多。找一找Unity零基础入门相关文章,以及Android转Unity开发的一些博客。对Unity学习路线有一个清晰认知,以及明确职业发展方向。【外部参考资料:(1)Unity零基础到入门 ☀️| 游戏引擎 Unity 从0到1的 系统学习 路线【全面总结-建议收藏】!-云社区-华为云 (2)【游戏开发指路】Unity学习路线,三万字大纲

2023-02-01 14:18:44 349 1

原创 我的MEM管理类研究生,在路上

10月份开始全面进入备考阶段,从之前能睡到8点半9点起床,到7点半,7点,6点半起床,一步步压缩自己的睡眠时间,特别是1遍,2遍再一遍刷近10年数学真题时的冬天,那时的我可真勇,6点半起床,10分钟洗漱,40分下楼跑步买热腾腾包子回来吃,8点洗完澡收拾做题,2篇数学真题,9点50分左右打车上班。英语单词得背起来,上下班车上,买咖啡路上,甚至上厕所路上也利用起来,从10月才开始背2000+核心单词,最后也不过背了3百多词记住一半多词,英语目标能过国家分数线、学校自主划线就行。——生死看淡,不服就干。

2022-12-25 10:48:41 1323

原创 Kotlin拿Android本地视频缩略图

Kotlin拿Android本地视频缩略图如何拿到本地视频?怎么拿视频缩略图?缩略图如何压缩?MediaMetadataRetriever可以通过视频系统路径,直接使用getFrameAtTime方法拿到第一帧作为缩略图ThumbnailUtils.createVideoThumbnail其实也是使用的MediaMetadataRetriever,如下源码Glide项目中一般会使用图片加载框架如Glide,它内部也是支持加载视频作为图片的,亦是使用MediaMetadataRetriever

2022-11-24 21:20:52 2657

原创 Android-DialogX使用与分享

调用带Activity参数的show方法时,Dialog布局依赖于传入Activity,布局将添加进此Activity中;调用不带Activity参数的show方法时,Dialog布局依赖于应用当前顶部Activity,布局添加进应用当前顶部Activity中。后台弹Dialog:如果Dialog不希望在其他界面弹出,则需要指定Activity;如果Dialog不依赖于某个具体页面,可不传Activity,在任何界面都可弹出。

2022-10-26 17:49:50 1786

原创 既要又要的正则匹配规则

在上面这样一个文本编辑框里,点击Server name时,需要在当前光标处插入真实的Server name,且此Server name需要作为一个整体块,光标不可以在Server name中间插入,同时也需要支持整体删除。3.1 如何识别成整体块?要识别成整体块,需要精准确定整体块的位置,有两种方式可实现:其一,利用String的indexOf方法找到index,加上length即可确定其具体位置,但如果同时有多个整体块,这种方式就需要优化;其二,利用正则规则去匹配,可同时匹配到多

2022-09-30 15:10:31 571

原创 Android获取自定义格式时区

​1.2 格式2:+0800SimpleDateFormat("Z").format(Calendar.getInstance(TimeZone.getTimeZone("GMT"),Locale.getDefault()).time) 其实这种格式已经是比较通用,业务上可以直接使用这种方式统一时区格式。2 自定义格式:GMT+08:00针对我的业务,已经定好了GMT+08:00这种格式,但是使用格式1存在着返回格式不统一的问题。

2022-09-07 20:51:54 3752

原创 Android在XML和代码中,同时设置背景,导致背景叠加的问题

由于分析时间有限,暂无权威结论,目测是Android系统Bug~ 小结:作为根布局时,会出现设置背景叠加的问题;作为子布局时,两种方式同时设置背景不会出现背景叠加。6 建议:根布局需要动态改变背景时,XML中不能设置background属性,在代码中动态设置;根布局不需要动态改变背景,在XML中设置背景或者代码中设置;不能即在XML中设置根布局背景,又在代码中动态设置根布局背景。...

2022-08-25 18:34:48 1770

原创 Jenkins Pipeline 实现 Github 单元测试 CI流程

Pipeline方式也叫流水线方式。首先,Pipeline需要实现之前新建任务方式已实现的功能,即:Github提交PR时,能够触发Jenkins;Jenkins在代码仓库的某个分支执行单元测试;将单元测试结果告知Github。其次,还需要实现:Github以机器人的形式展示单元测试结果,而不是以开发者个人名义去展示;Github实时显示Jenkins Pipeline状态;Pipeline正在执行或单测失败、异常时,不允许Github点击PR;支持手动触发Jenkins再跑一遍流水线。

2022-07-11 14:25:32 1038

原创 单元测试 CI/CD

目前做到的效果是:在Github提Pull requests时,自动触发Jenkins执行单元测试,并将执行结果反馈给Github Pull requests页。后续改进:- Github单测结果可视化- Github单测结果失败或异常时,不允许PR- Github支持跳转Jenkins具体构建任务-...............

2022-06-22 17:49:39 3087

原创 20220601-单元测试浅谈

​在Google官方文档中,将测试分为三级,最底层的属于小型测试即单元测试,本文以单测简称之,第二层属于中型测试即集成测试,第三层属于大型测试即UI测试,每一层的比例约为小型测试占 70%,中型测试占 20%,大型测试占 10%。小型测试:针对单个函数的测试,关注其内部逻辑,mock所有需要的服务。小型测试带来优秀的代码质量、良好的异常处理、优雅的错误报告。中型测试:验证两个或多个制定的模块应用之间的交互。大型测试:也被称为“系统测试”或“端到端测试”。大型测试在一个较高层次上运行,验证系统作为一

2022-06-01 16:34:51 355

APK反编译.zip

APK反编译工具集合。已分为两部分,按需存取——看manifest和资源文件;看源码。 一、看manifest和资源文件: 1、apktool.bat;apktool.jar 官网下载地址:https://ibotpeaches.github.io/Apktool/install/ 作用:最大程度的还原apk中的manifest文件和资源文件 。 使用apktool工具反编译apk文件比直接解压同一个apk文件大; 还可以将反编译之后的apk重新打包成apk文件,但需要重新签名,才能安装使用。 二、看源码 2、dex2jar 官方下载地址:https://sourceforge.net/projects/dex2jar/ 作用:将APK直接解压后,目录下包含的一个classes.dex文件反编译为classes-dex2jar.jar文件。 3、jd-gui.jar 官方下载地址:http://java-decompiler.github.io/ 作用:直接查看classes-dex2jar.jar文件。

2020-04-08

Android_烧录文档.docx

烧录文档。通常,我们使用的烧录方式有两种——空烧卡升级或正常升级

2019-05-25

Android烧录文档.zip

烧录文档。通常,我们使用的烧录方式有两种——空烧卡升级或正常升级

2019-05-25

蓝牙BLE4.0接收广播App

蓝牙BLE4.0接收广播App,手机模拟BLE设备的话可以通过我的另一个下载——手机模拟BLE设备发送广播App. 这两个App可以完成2台Android手机,通过BLE4.0进行通信,可以发送和接收数据。 其中一台Android手机T模拟发出广播,作为BLE设备(周边设备),这个BLE设备在生产环境中就是我们用到的气体检测传感器、智能手环、体重秤、血压计等等; 另一台Android手机B,作为中央设备,搜索手机T发出的广播并连接; 手机B可以接收手机T的数据,也可以发送数据给手机T; 当然手机T也可以通过通知发送数据给手机B。

2019-03-21

手机模拟BLE设备发送广播App

手机模拟BLE设备,通过蓝牙BLE4.0发送广播,接收广播并通信的话可以通过我的另一个下载——蓝牙BLE4.0接收广播App. 这两个App可以完成2台Android手机,通过BLE4.0进行通信,可以发送和接收数据。 其中一台Android手机T模拟发出广播,作为BLE设备(周边设备),这个BLE设备在生产环境中就是我们用到的气体检测传感器、智能手环、体重秤、血压计等等; 另一台Android手机B,作为中央设备,搜索手机T发出的广播并连接; 手机B可以接收手机T的数据,也可以发送数据给手机T; 当然手机T也可以通过通知发送数据给手机B。

2019-03-21

Android Debug Database原理简析

虽然这个工具用的很爽,但是不知道你有没有想过如下问题: 为什么要用局域网?用互联网有什么不好的吗? 为什么在gradle文件里implementation一下相应的库就可以直接使用,不需要额外的初始化和配置? 为什么要使用浏览器? 浏览器端的数据和手机端的数据是怎样交互的?

2019-01-30

关于Java内存泄漏的讨论

什么是内存泄漏?造成内存泄漏的原因?如何解决内存泄漏?以及如何避免内存泄漏等。。。

2019-01-28

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除