- 博客(75)
- 收藏
- 关注
原创 鸿蒙Harmony实战开发教学(No.8)-Hyperlink超链接组件基础到进阶篇
本文全面解析鸿蒙系统Hyperlink组件,详细介绍了其核心特性、API体系及最佳实践。主要内容包括:组件定义与版本支持情况,构造函数和属性配置详解,图片超链接等子组件支持方式,以及基础与高级应用场景示例。文章还提供了性能优化策略,如权限管理和URL验证,并总结了常见问题解决方案。最后给出开发建议和版本兼容性指南,帮助开发者正确使用该组件实现网页跳转功能。
2025-10-24 22:35:03
1160
原创 鸿蒙Harmony实战开发教学(No.7)-Image组件基础到进阶篇
鸿蒙ArkUI Image组件精要解析 本文全面解析鸿蒙ArkUI Image组件的核心功能与最佳实践。Image组件支持多种图片格式(PNG/JPG/SVG/WebP等)和数据源(本地/网络/PixelMap),提供丰富的属性配置和事件处理机制。关键特性包括: 版本演进:从API7基础功能到API20的P3色域支持,持续增强 核心功能:多格式支持、30+属性配置、图片处理与优化 高级特性:AI图像分析、HDR显示、动态范围控制 性能优化:自动缩放、异步加载、内存管理等策略 文章通过代码示例详细展示图片显示
2025-10-17 19:17:23
1449
1
原创 鸿蒙Harmony实战开发教学(No.6)-Search组件基础到进阶篇
鸿蒙系统Search组件开发指南 摘要 鸿蒙系统Search组件是为搜索场景设计的专业输入组件,从API version 8开始支持。本文全面解析Search组件的功能特性与开发实践,包括: 组件概述:适用于浏览器搜索、应用内搜索等场景,支持API version 8-18不同特性 核心API:详细解析构造函数、搜索按钮设置、图标定制等关键功能 输入配置:支持多种搜索类型(数字、邮箱、URL等)和输入法回车键定制 样式定制:提供搜索图标、清除按钮、文本样式等丰富的自定义选项 实战应用:涵盖浏览器搜索框、应用
2025-10-17 18:19:09
826
原创 鸿蒙Harmony实战开发教学(No.5)-TextInput组件基础到进阶篇
鸿蒙系统TextInput组件全面解析摘要 本文深度剖析鸿蒙系统的TextInput单行文本输入组件,涵盖API7+版本特性。主要内容包括: 核心功能:支持多种输入类型(密码、邮箱、数字等)、自动填充、自定义键盘和输入过滤 API体系:详解40+属性配置,包括文本样式、输入限制、键盘类型等 实战应用:提供登录表单、搜索框、验证码输入等典型场景的实现方案 优化策略:内存管理、输入性能优化及自动填充最佳实践 问题排查:解决光标异常、密码显示同步等常见问题 适用于鸿蒙应用开发中的单行文本输入需求,帮助开发者快速掌
2025-10-16 14:36:59
1133
原创 鸿蒙Harmony实战开发教学(No.4)-RichText组件基础到高阶介绍篇
本文全面解析了鸿蒙系统RichText组件在HTML富文本显示中的最佳实践。文章从组件概述与适用场景入手,详细介绍了RichText的API体系、HTML标签支持情况,并通过新闻展示、产品详情等实战案例演示具体应用。同时提供了性能优化策略,包括避免在List中使用RichText、合理管理本地资源等建议。针对RichText组件的局限性,文章还给出了迁移至Web组件的指导方案,帮助开发者构建高效稳定的富文本显示功能。
2025-10-16 11:40:41
1033
原创 鸿蒙Harmony实战开发教学(No.3)-Text组件基础到高阶介绍篇
本文全面解析鸿蒙系统Text组件的API功能与应用,涵盖从基础属性到高级特性的完整使用指南。文章首先系统梳理了Text组件的7大类API,包括基础设置、布局控制、字体样式、文本效果等核心功能。随后通过具体代码示例,详细讲解了字符间距、文本对齐、行高控制等关键API的使用方法和注意事项。特别针对API 18+新增的跑马灯效果、实体识别等高级功能进行了深入分析。最后提供了新闻标题、电商价格、聊天气泡等5个典型应用场景的实现方案,并附有性能优化建议和常见问题解决方案,帮助开发者掌握Text组件的完整知识体系。
2025-10-16 10:05:21
548
原创 鸿蒙Harmony实战开发教学(No.2)-鸿蒙新项目创建+目录配置!(新手入门指南)
本文系统介绍了鸿蒙(HarmonyOS)开发项目的目录结构与核心配置。重点解析了AppScope(全局配置与资源目录)和Module(业务开发目录)的功能,包括app.json5、module.json5等关键配置文件的用途。同时详细说明了3个核心配置文件(build-profile.json5、hvigorfile.ts、oh-package.json5)在构建和依赖管理中的作用。文章还总结了编译规则(资源合并优先级)和发布规则(BundleName唯一性),并提示新手需避免修改AppScope目录名和资
2025-10-15 14:37:18
1494
原创 鸿蒙Harmony实战开发教学(No.1)-IDE新版本安装篇
本文介绍了鸿蒙应用开发工具DevEcoStudio的选型与配置指南。主要内容包括:1)推荐使用最新稳定版DevEcoStudio6.0,适配API20;2)下载地址和系统要求;3)6.0版本在UI界面和模拟器功能上的优化;4)后续将分享实战项目开发、调试技巧和应用上架审核要点。为开发者提供从0到1的完整学习路径,帮助新手快速上手鸿蒙应用开发。
2025-10-15 13:46:14
1051
原创 梳理一下常见的 JavaScript 数组操作
需要注意的是,reduce()方法会遍历数组的所有元素,并在每个元素上调用回调函数,进行累加或其他操作。最后,reduce()方法将返回最终累加的结果。如果数组为空,并且没有提供初始值,reduce()方法将抛出 TypeError。因此,在使用reduce()方法时,需要确保数组不为空或者提供初始值。方法是数组的一个高阶函数,用于对数组的所有元素进行累加计算,最终返回一个结果。reduce()方法接受一个回调函数作为参数,并且可以接受一个初始值作为累加的起始值。
2023-08-06 08:39:14
515
原创 HTTP协议各版本介绍
尽管HTTP的不同版本具有各自的特性和改进,但它们都遵循相同的基本原理和目标,即通过协议进行数据交换和通信。目前,HTTP/1.1和HTTP/2仍然是最常用的版本,而HTTP/3则在积极发展中,并为HTTP通信带来更多的优化和改进。
2023-07-26 22:48:34
1470
原创 Web Worker的概念、用法、使用场景
通过以上的示例,您创建了一个名为 worker.js 的 JavaScript 文件,并使用 new Worker() 方法在主线程中创建了一个 Web Worker。主线程通过 worker.postMessage() 向 Web Worker 发送消息,并通过 worker.onmessage 监听从 Web Worker 接收到的消息。在 Web Worker 的代码中,通过 self.postMessage() 将结果发送回主线程,并在主线程中处理和输出结果。。
2023-07-23 22:58:21
11965
1
原创 TypeScript中Class Interface Type的定义和区别
Class是用于定义对象的结构和行为,它是数据和行为的封装。Interface是用于描述对象的结构和行为的规范,它是对类的抽象。Type是用于定义数据的形状和结构,它是对数据的抽象。它们之间的区别在于使用方式和目的不同。Class用于创建对象,Interface用于定义规范,而Type用于定义数据类型。在实际应用中,根据具体需求选择合适的工具。
2023-07-22 23:43:54
1517
原创 网络协议知识梳理
TCP/IP协议:是互联网的核心协议,其中TCP负责数据的可靠传输,IP负责数据的路由和寻址。HTTP协议:用于在Web浏览器和Web服务器之间传输超文本数据,是Web应用开发中最常用的协议。UDP协议:与TCP类似,用于数据的传输,但不提供可靠性和顺序性,适用于实时通信等场景。FTP协议:用于文件的上传和下载,支持文件的管理和权限控制。DNS协议:用于将域名转换为IP地址,实现域名解析功能。DHCP协议:用于自动分配IP地址和其他网络配置信息。
2023-06-28 22:48:58
4105
原创 外部H5页面打开微信小程序最新流程
当前时间2022年11月22日,记录一下外部H5如何打开指定微信小程序的指定页面最新流程。以上适用于短信、邮件、外部网页、微信内等拉起小程序的业务场景。建议这步由后端完成请求方式:POST(这个token后端根据微信接口可以生成,不做详细介绍,可参考)这里的即是微信小程序 scheme 码,注意:自 2022 年 4 月 11 日起,URL Scheme有效期最长 30 天,不再支持永久有效的URL Scheme、不再区分短期有效URL Scheme与长期有效URL Scheme。
2022-11-23 09:52:57
7027
原创 Android 自有App内部跳转到微信小程序的方法
3)com.android.tools.build:gradle 需要升级至 3.6.0 版本,建议升级至最新的 3.6.4 版本。1)Android Studio 需要升级至 3.3 及以上,建议升级至 4.0 及以上版本;2)Android SDK Build-Tools 需要升级至 30 及以上版本;2.需打包已签名成功的apk验证,否则调用api时会提示校验失败。以上完成,即可通过App跳转到指定的微信小程序了。,android11如果不申明,可能使用时报错。WXEntryActivity中。
2022-10-10 17:59:22
6204
原创 Android全局悬浮窗Dialog
1.AndroidManifest.xml中申请如下权限: 2.从Android6.0开始,不仅需要上述权限,还需要动态申请此权限,用户手动开启才行。3.当在使用中出现权限拒绝,类型是2003时,完整代码如下:
2022-10-09 16:12:32
1426
原创 Jetpack DataBinding使用--Jetpack系列
DataBinding是一种支持库,借助该库,可以使用声明性格式(而非程序化地)将布局中的界面组件绑定到应用中的数据源。布局通常是使用调用界面框架方法的代码在 Activity 中定义的。
2022-06-28 14:51:17
751
原创 Jetpack LiveData使用--Jetpack系列
LiveData 是一种可观察的数据存储器类。与常规的可观察类不同,LiveData 具有生命周期感知能力,意指它遵循其他应用组件(如 Activity、Fragment 或 Service)的生命周期。如果观察者(由 Observer 类表示)的生命周期处于 STARTED 或 RESUMED 状态,则 LiveData 会认为该观察者处于活跃状态。LiveData 只会将更新通知给活跃的观察者。为观察 LiveData 对象而注册的非活跃观察者不会收到更改通知。......
2022-06-27 16:19:06
181
原创 AIDL跨进程示例
1.创建服务端APP项目main包下创建aidl文件夹,new-->aidl 创建如IMyAidlInterface.aidl文件举例:// IMyAidlInterface.aidlpackage com.ktbase.app;interface IMyAidlInterface { String getName(); void setName(String name);}AS rebuild之后,在build文件夹中可以看到编译成功的java文件,服务
2022-03-24 14:11:16
189
原创 Taro webview中的h5页面如何使用原生小程序API
Taro小程序开发过程中,往往会遇到h5页面与原生页面互相通讯的过程,而微信小程序为webview组件提供了JSSDK,使用方式:1.在h5项目的入口文件(即index.html)中与meta标签同一层级下,添加远程依赖<script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.3.2.js"></script>以上即在整个项目全局引入了JSSDK(这里不得不吐槽一下微信小程序开发
2021-09-01 16:40:28
5552
1
原创 Taro小程序webview使用API及避坑指南
Taro小程序webview组件是一个可以用来承载网页的容器,会自动铺满整个小程序页面。注意:个人类型的小程序暂不支持使用。客户端 6.7.2 版本开始,navigationStyle: custom 对 webview组件无效,小程序插件中不能使用。以上意味着:webview的页面无法自定义导航栏,无法自定义高度、样式等,去加载了webview,那么webview中的h5页面将具备最高控制权,所以小程序开发者如果想在webview组件上做任何修改,只能建议自定义组件。小程序开发者可以做哪些?1.可
2021-08-31 10:53:59
8564
1
原创 解决Taro小程序windows下自定义导航栏无法生效的兼容性问题
背景及发现的问题:小程序在手机、Mac下布局样式UI显示正常,但在windows下PC版微信上的小程序显示导航栏却出现了两个,自定义导航栏无法盖过默认导航栏生效,当前windows版微信版本3.3.5.42(已反馈此问题至微信,但当前版本仍未解决),此问题不仅仅出现于本人的小程序中,观察了如京东小程序、饿了么小程序等,都有同样的问题,页面会整体下移,导致部分功能可能无法正常显示及使用。原因:windows版微信客户端对小程序设置自定义导航栏无法生效,即 navigationStyle=“custom
2021-08-30 10:46:43
2256
原创 Taro小程序Uncaught SyntaxError: Unexpected identifier报错解决方案
运行小程序时,如遇到Uncaught SyntaxError: Unexpected identifier报错信息,请检查是否在*.config.js文件中 import引入了es6写法的文件A,注意所有带后缀为 .config.js 的文件是否有引入,如必须要引入,则需要将文件A中es6写法 export改为 module.exports即可如有帮助,记得点赞三连,谢谢~...
2021-08-01 18:11:20
1044
原创 Taro小程序分享功能
Taro小程序分享onShareAppMessage (Object)功能使用1.配置指定页面可分享(默认菜单栏分享按钮为灰色,不可分享)找到page.config.js,配置如下export default { enableShareAppMessage: true}2.Class类的页面添加如下:export default class Index extends Component { onShareAppMessage (res) { i
2021-08-01 17:57:58
10179
原创 Taro小程序 Input组件focus属性失效解决方案
Taro小程序开发在使用Input组件时,会遇到一个问题,设置了Input组件自动聚焦,但是在iPhone X与部分android机型上无法生效,此为官方组件的一个bug,截止Taro v3.2.7版本目前仍未解决此问题,使用方式如下:<Input type='text' placeholder='将会获取焦点' focus={true}/>解决方案:修改为微信小程序原生组件input即可<input type='text' placeholder='将会获取焦点' foc
2021-08-01 17:40:12
5314
1
原创 Taro小程序开发之自定义导航栏页面如何设置不可滑动
设置当前页面自定义导航栏之后,当页面滑动时,导航栏部分的view会上移至状态栏,如何固定页面不可滑动,如我们的A页面是index.js文件,则在同一层级添加index.config.js文件,配置如下即可:export default { navigationStyle:'custom', disableScroll:true }如有帮助,记得点赞三连,谢谢~...
2021-08-01 17:17:56
1458
原创 小程序开发之Taro环境搭建
目录1.node环境安装2.CLI 工具安装3.项目初始化4.编译运行5.小程序开发者工具预览、上传1.node环境安装Taro 项目基于 node,请确保已具备较新的 node 环境(>=12.0.0),下载地址:http://nodejs.cn/download/,根据自身使用系统去下载对应版本,一般下载最新版本即可,安装完成使用node -v 查看安装的版本是否符合,windows系统还需设置全局变量(此处不再赘述)。node -v2.CLI 工...
2021-08-01 16:49:03
2098
1
原创 Android 获取Keystore的MD5 SHA1 SHA256等信息
1、使用keytool.exe 这个工具获取,这个工具在jdk的bin目录下面.例如我机器的目录是C:\Users\xxx\jdk1.8.0_171\bin。那么打开cmd 进入到该目录,也可以将这个目录配置到环境变量Path下面,这样就可以直接keytool命令。2、keytool -list -v -keystore D:\Android\keystore\xxx.keystore D:\Android\keystore\xxx.keystore 就是你的keystore的文件路径。...
2021-03-29 11:14:35
870
原创 java Object类浅析
在Java中Object是所有类的父类,任何类都默认继承Object,其提供的方法主要有以下几种:package java.lang;/** * JDK1.8 */public class Object { // native关键字表示此方法通过JNI(java native interface)接口调用C/C++ 语言实现对底层的访问 private static native void registerNatives(); static { regis
2021-03-25 15:31:14
186
1
原创 lottie-react-native动画无法播放的解决方法
当前使用的版本号:"lottie-ios": "^3.1.8","lottie-react-native": "^3.5.0"遇到的情况:1.动画在手机上无法播放,官网上可以播放;2.动画资源切换之后,动画无法执行;3.android、iOS平台差异,在android可以播放,iOS平台无法播放;4.三星某手机,动画无法播放;(之前一直动画可以执行,某天突然无法执行了,手机恢复出厂设置又好了..)针对以上四种情况:使用方法:<LottieView ref={a...
2021-03-15 14:38:46
1371
2
原创 代理模式之静态代理、动态代理
代理模式,常用的一种设计模式。优点:1.Client端通过使用代理对象ProxySubject来间接的控制另外一个对象RealSubject,从而使Client端与具体实现类RealSubject解耦,扩展性更好;2.Client端不用关心具体实现类RealSubject的方法实现,只需要关系代理对象中提供的方法;3.代理ProxySubject也起到了控制安全访问的目的。缺点:1.由于增加了代理对象,所以有可能会造成请求的处理速度变慢;2.实现代理模式需要额外的工作,相同的方法需要在代理对象与
2021-02-02 15:38:09
184
1
原创 Handler中Looper死循环为什么不会导致应用卡死?
先来列举一下一般出现ANR的情况:1.键盘输入事件、触摸无响应5s;2.Receiver广播接收器10s超时无响应;3.Service服务20s超时无响应;...再简单介绍一下Handler会在应用启动之后,在ActivityThread的main 方法中启动:public static void main(String[] args) { Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "ActivityThreadMai
2021-01-31 16:20:06
594
原创 android蓝牙频繁断、连之后,无法发现蓝牙服务的解决方案
android蓝牙频繁断、连之后,某次在发现蓝牙服务的回调结果中,特征值服务列表为Null或者长度为0,BluetoothGattCallback gattCallback = new BluetoothGattCallback() { @Override public void onConnectionStateChange(BluetoothGatt gatt, int status,int newState) { if (status ==...
2020-12-28 19:39:18
6486
1
原创 android studio打包aar遇到的坑
先简单介绍一下前景,由于我们的sdk内部实现不想暴露出来,所以考虑到打成jar包的形式1.android sdk 一般分为两种:.jar(仅包含编译生成的class文件),.aar(包含jar和资源文件),这个根据个人的项目需求可以决定使用哪一种;2.如果我们的sdk内部不包括任何三方库,那么直接在android studio的gradle 自己module的Task-->build-->assemble 执行即可.。然后就可以在build文件夹中的outputs文件中
2020-12-21 15:57:56
3055
原创 python pandas excel文件如何一次性读取全部sheet,并重新一次性写入多个sheet?
关于如何一次性读取全部sheet,可看我之前写的一篇博客;本文重点讲述如何对同一个excel文件一次性写入多个sheet数据代码示例: import pandas as pd writer = pd.ExcelWriter("新数据.xlsx") sheet1Data = [] # 这个为要向Sheet1写入的数据 pd_look1 = pd.DataFrame(sheet1Data) pd_look1.to_excel(writer, sheet_name=...
2020-11-25 10:40:02
5390
1
原创 java 注解(Annotation)
java 注解(Annotation)Java 注解用于为 Java 代码提供元数据,是从JDK5.0引入的一种注释机制。先举几个我们常见的注解例子:@Override - 检查该方法是否是重写方法。如果发现其父类,或者是引用的接口中并没有该方法时,会报编译错误。@Deprecated - 标记过时方法。如果使用该方法,会报编译警告。@SuppressWarnings - 指示编译器去忽略注解中声明的警告。再来了解一下元注解:元注解可以理解为注解的注解,它是作用在注解中,方便我们使用注解实现想要
2020-11-23 16:36:31
163
原创 设计模式六大原则
设计模式六大原则1.单一职责原则(Single Responsibility Principle)一个类只负责一项职责,并且引起它变化的原因应该只有一个(尽可能少)。如果职责过多,代码可读性及维护性都会变差。2.里氏代换原则(Liskov Substitution Principle)任何基类可以出现的地方,子类一定可以出现。LSP 是继承复用的基石,只有当派生类可以替换掉基类,且软件单位的功能不受到影响时,基类才能真正被复用,而派生类也能够在基类的基础上增加新的行为。里氏代换原则是对开闭原
2020-11-10 17:47:33
135
原创 java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.vick.myapp/com.vick.mya
项目之前运行正常,但是当引入一些三方库时,在sync同步时,会报如下错误:java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.vick.myapp/com.vick.myapp.MainActivity}: java.lang.ClassNotFoundException: Didn't find class "com.vick.myapp.MainActivity" on path: DexPathLis
2020-10-28 14:09:07
485
原创 apktool反编译apk,并重新打包
反编译的工具有很多,本文暂时只介绍apktool:1.先下载apktool,下载地址: https://ibotpeaches.github.io/Apktool/install/ (我当前下载的版本是apktool_2.4.1.jar);2.修改文件名为"apktool.jar";3.执行java -jar apktool.jar 如果出现版本号,说明运行成功;4.将需要反编译的test.apk 文件放在和apktool.jar 同一层级;5.cd到apktool.jar所在..
2020-10-27 17:37:54
7454
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅