自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(112)
  • 收藏
  • 关注

原创 鸿蒙开发画布Canvas的核心API使用详解

完整API文档可参考鸿蒙开发者文档中心,实际开发中建议结合离屏渲染与路径复用提升性能。若多个图形共享同一路径,最后一次设置的样式会覆盖之前的所有图形。自动连接起点与终点,形成闭合路径。:两条线段颜色独立,互不影响。需为每个图形单独调用。

2025-04-19 19:40:20 446

原创 DevEco Studio安装配置指南:从零搭建鸿蒙开发环境

开发HarmonyOS NEXT需使用DevEco Studio 5.0+版本。

2025-04-19 16:17:59 249

原创 鸿蒙开发中动画的详细使用

在鸿蒙(HarmonyOS)开发中,动画是实现交互体验的重要部分,ArkTS提供了多种动画实现方式。

2025-04-18 20:21:28 353

原创 鸿蒙应用开发中的生命周期详解:UIAbility、页面与组件

鸿蒙应用的生命周期管理是一个层次化的体系,从UIAbility到页面再到组件,每个层级都有其特定的生命周期方法。理解这些生命周期及其相互关系,对于开发高性能、资源高效的鸿蒙应用至关重要。通过合理利用这些生命周期回调,开发者可以精确控制资源分配、数据加载和状态管理,从而提供流畅的用户体验。

2025-04-18 00:30:00 713

原创 鸿蒙系统开发中路由使用详解

/ 跳转时设置动画//入场动画效果type: RouteAnimation.SlideRight // 目标页从右侧滑入},//退场动画type: RouteAnimation.SlideLeft // 当前页向左滑出});//支持的动画类型://RouteAnimation.Slide:滑动效果(默认)。//RouteAnimation.Translate:平移效果。//RouteAnimation.Fade:淡入淡出效果。//RouteAnimation.None:无动画。

2025-04-17 20:30:41 416

原创 鸿蒙系统数据存储方式详解

鸿蒙系统(HarmonyOS)提供了多样化的数据存储解决方案,覆盖从轻量级配置到复杂结构化数据、从内存临时存储到持久化存储、从单设备到分布式场景的各种需求。以下是所有存储方式的系统化总结。

2025-04-17 10:33:19 973

原创 鸿蒙开发中,@Extend、@Styles 和 @Builder 的区别

装饰器作用范围参数支持适用场景定义位置@Extend特定组件扩展✔️扩展原生组件样式/事件仅全局@Styles通用样式复用❌提取公共样式全局或组件内@Builder结构与逻辑封装✔️复杂布局或动态内容复用全局或组件内通过合理使用这三种装饰器,可以显著提升鸿蒙开发的代码复用性和可读性。更多细节可参考官方文档或示例代码。

2025-04-15 23:35:23 350

原创 鸿蒙系统开发状态更新字段区别对比

在鸿蒙系统开发中,状态管理是构建响应式UI的核心机制,主要通过装饰器(Decorators)实现字段的状态观测与更新。根据鸿蒙的版本(V1稳定版和V2试用版),支持的装饰器及其特性有所不同。通过合理选择装饰器,可以高效管理鸿蒙应用的状态更新。如需更复杂的场景(如跨页面状态共享),可结合。等全局状态管理方案。

2025-04-15 22:52:48 486

原创 Mac 上解压缩 RAR 文件

RAR 在十几年前的互联网曾叱咤风云般的存在。在那时,你所能见到的压缩文件几乎都是 RAR 格式,大家在 Windows 上使用的压缩、解压缩软件基本都是 WinRAR。Mac 加压缩 RAR 工具推荐虽然这些年使用 RAR 格式的压缩包的情况在逐渐减少,但是你还是经常能在国内各种网站下载到使用 RAR 格式的压缩文件,可遗憾的是默认情况下在 Mac 上不能直接打开 RAR 文件解压缩,也没有 Mac 版 WinRAR。

2023-03-06 16:17:37 1898

转载 Java对象大小计算

结合第一章《理论篇》的知识,猜想一下,在64位虚拟机下,Java对象的大小。这是在代码中打印对象大小的方法。在 Maven 项目的。学习和掌握该知识,有助于分析。“应用系统的堆到底该设置为多大?3.1 指针压缩的 JVM 参数。3.2 借助 jol-core。本文计算的是Java对象在。2.1 Object对象大小。2.2 包含实例数据的对象。对齐填充(数组对象才有的)打印对象大小的 API 是。

2023-03-02 21:42:43 1081

原创 Java泛型全解析

无论为泛型的类型形参传入哪一种类型的实参,对于Java来说,他们依然被当成同一个类处理,在内存中也只占用一块内存空间,可以灵活的封装,并且同时有可以限定类型,泛型的接口和类更像是一种通用的模型,模型内部的类型由使用者自己限定。"用于操作具体的某个泛型类的时候,还未确定最终使用时,采用的对象类型,就用问号作为占位的含义。使用泛型接口或类的时候,虽然可以不加部分,但是推荐加上,不然还要强制类型转换等麻烦操作。可以有多个限定条件,存在多个限定条件的时候,使用&连接。使用类型通配符的类是各种该类的泛型的父类。

2023-01-17 18:54:05 552

转载 Flutter状态管理:Provider使用之ChangeNotifierProvider

Flutter状态管理

2022-12-09 17:13:59 1683

转载 TextFormField输入限制

【代码】TextFormField输入限制。

2022-09-19 14:44:51 363

原创 java多态的理解

多态方法调用的优先级: this.show(O(o )、super.show(O(O )、this.show )、super.show (super )、super (o ) )对象后,用该父类引用调用子类重写的方法,此时多态就出现了。多态是方法的多态,不是属性的多态(多态与属性无关)。多态的存在要有3个必要条件:继承,方法。,父类引用指向子类对象。

2022-09-16 10:31:57 130

原创 taskAffinity详解

一个Android应用程序功能通常会被拆分成多喝Activity,而各个Activity之间通过Intent进行连接,而Android系统,通过栈结构来保存整个App的Activity,栈低的元素是整个任务栈的发起者。一个合理的任务调度栈不仅是性能的保证,更是提供性能的基础。当一个App启动时,如果当前环境中不存在App的任务栈,那么系统就会创建一个任务栈。

2022-08-25 10:18:49 1457

原创 小米手机toast显示不全

排查了好久,最后是因为换行转义字符的锅,把\n换为\r\n,完美显示。

2022-07-27 10:12:05 1782

原创 Annotation Processor

当我们依赖一些第三方的库时,可能会遇到com.android.support冲突的问题,就是因为开发者使用的compile或api依赖的com.android.support包与我们本地所依赖的com.android.support包版本不一样。RetentionPolicy.SOURCE表示修饰的注解只在源码中保留,编译后就被遗弃了,也就是class文件中就不存在了。该依赖方式会传递所依赖的库,当其他module依赖了该module时,可以使用该module下使用api依赖的库。...

2022-07-25 16:17:11 4145

原创 手机屏幕共享工具

投屏 投屏软件 工具

2022-07-07 11:41:34 754

原创 ImageView比例缩放

备注: adjustViewBounds只有在ImageView一边固定,一边为wrap_content的时候,设置为true,可以让ImageView的比例和原始图片一样的效果。

2022-06-11 15:01:43 601

原创 时间转换 2021-08-03T06:06:41Z

fun formatDateTime(value: String?, format: String = "yyyy-MM-dd HH:mm"): String { if (TextUtils.isEmpty(value)) return "" return try { //系统类 DateTime(value).toString(format) } catch (e: Exception) { "" }}也是好不容易找到.

2022-05-16 15:37:43 339

原创 Debug.startMethodTracing,trace文件找不到

是因为生成文件的路径不是sd卡的根目录,网上的代码大部分还是不靠谱的。生成的文件在sd卡:Android/data/packagename/files/xxx.trace参考文章:启动优化工作选择 - 白一粥 - 博客园...

2021-12-02 11:45:09 702

转载 音频开发_如何获取单词的音频mp3文件

1.gstatic oxfordhttps://ssl.gstatic.com/dictionary/static/sounds/oxford/no--_gb_1.mp3https://ssl.gstatic.com/dictionary/static/sounds/oxford/yes--_gb_1.mp32.有道词典http://dict.youdao.com/dictvoice?type=1&audio=sheilahttp://dict.youdao.com/dictvoic

2021-11-16 00:13:15 1135

原创 流式布局FlowLayout使用

原先用的是三方的流式布局,后来发现google自己也有,效果是一样的。<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:orientation="vertical" an

2021-10-19 13:37:04 1588 1

转载 Notification

最近时不时地有人问我这样或那样的通知如何实现,所以本文将根据个人经验对Notification做个总结,以供参考!什么是通知(Notification)通知是一个可以在应用程序正常的用户界面之外显示给用户的消息。通知发出时,它首先出现在状态栏的通知区域中,用户打开通知抽屉可查看通知详情。通知区域和通知抽屉都是用户可以随时查看的系统控制区域。作为安卓用户界面的重要组成部分,通知有自己的设计指南。在Android 5.0(API level 21)中引入的 Material Design 的变化是

2021-10-19 11:52:32 670

原创 BottomNavigationView底部图标和文字的显示问题

一、BottomNavigationView3个以上图标不显示文字当图标大于3个时,显示图标和当前页的文字。调用BottomNavigationView的setLabelVisibilityMode方法可以解决布局设置:<com.google.android.material.bottomnavigation.BottomNavigationView android:id="@+id/bnv_main" app:menu="@menu/bottom_nav

2021-10-17 11:34:52 2998 3

转载 发布aar包到maven仓库

Android:发布aar包到maven仓库以及 maven插件 和 maven-publish 插件的区别在日常开发中,不可避免的需要把自己的 library 发布到 maven 仓库中,这样使用起来也更加方便。发布 aar 包到 maven 仓库,主要是使用 Gradle 提供的插件: maven 插件(旧版),在 Gradle 6.2 之后,就完全被弃用了(增加了@Deprecated注解) maven-publish 插件 maven插件,是 Gradle 1.0 的..

2021-10-12 13:40:21 2923

转载 资源id与资源名称互相转换

Android 资源名称(name)和id互相转换,动态获取一、通过传递图片名称,获取对应的图片idpublic int getId(String name){ Resources res=getResources(); //return res.getIdentifier(name,null,null);//带上地址 例如 包:type/name (org.anjoy.act:drawable/ic) return re

2021-09-12 12:08:54 461

转载 非静态内部类不能定义静态成员变量和静态方法

非静态内部类不能有静态成员!成员内部类必须先实例化外部类对象然后再实例化成员内部类;非static的内部类,在外部类加载的时候,并不会加载它,所以它里面不能有静态变量或者静态方法。1、static类型的属性和方法,在类加载的时候就会存在于内存中。2、要使用某个类的static属性或者方法,那么这个类必须要加载到jvm中。基于以上两点,可以看出,如果一个非static的内部类如果具有static的属性或者方法,那么就会出现一种情况:内部类未加载,但是却试图在内存中创建static的属性和方..

2021-09-04 10:08:52 976

原创 Handler之同步屏障机制(sync barrier)

分析中,发现不错的文章分析,暂时做个记录:https://www.cnblogs.com/wytiger/p/13031145.html

2021-06-09 10:13:51 221 1

原创 布局动画 LayoutTransition

在API 11后,添加了两个能实现在创建后添加控件仍能应用动画的方法,分别是android:animateLayoutChanges属性和LayoutTransition类。他们的API 等级必须>=11。使用方法:ViewGroup使用LayoutTransition即可为布局变化应用动画效果。ViewGroup#setLayoutTransition(LayoutTransition) android:animateLayoutChanges="true"通过...

2021-05-19 18:39:07 491 7

原创 SeekBar高度设置、自定义样式

最近在自定义SeekBar的滑块、拖动条时,发现底部的背景和滑块一样高,鼓捣了半天也没有效果,主要还是SeekBar的高度、滑块高度、拖动条高度定义未搞清楚,现在做个记录以便以后参考:1、滑块高度:可以在自定义Drawable文件中,通过<size android:height="10dp" android:width="10dp" />设置<selector xmlns:android="http://schemas.android.com/apk/r...

2021-05-14 15:14:06 3159 7

原创 Broadcast广播的分类

BroadcastReceiver(广播接收器),属于Android四大组件之一。在分析ANR产生原因时,涉及到部分广播的知识,我将针对广播类型,做个记录:1. 普通广播(Normal Broadcast)即开发者自身定义intent的广播(最常用),也就是并行广播。发送广播使用如下:Intent intent = new Intent();//对应BroadcastReceiver中intentFilter的actionintent.setAction(BROADCAST_AC...

2021-04-30 14:42:04 2650 2

转载 Android ANR 原理分析

ANR 简介ANR:Application Not Responding,即“应用程序无响应”。Android 运行时,AMS 和 WMS 会监测应用程序的响应时间,如果应用程序主线程(即UI线程)在超时时间内对输入事件没有处理完毕,或者对特定操作没有执行完毕,就会上报 ANR。ANR 的触发分为以下几类, InputDispatching Timeout:输入事件(包括按键和触屏事件)在5秒内无响应,就会弹出 ANR 提示框,供用户选择继续等待程序响应或者关闭这个应用程序(也就是杀掉这个应用

2021-04-30 11:51:45 1931 1

原创 android 跳转到当前应用的详情、设置页面

分析三方权限申请源码时,发现不错的逻辑,做个记录: Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS) .setData(Uri.fromParts("package", getPackageName(), null)); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);...

2021-04-28 11:03:20 2810 4

原创 自定义控件-时间轴

由于项目中有需求,就简单的封装一个,先记录一下,有时间上传到github。1、先增加自定义属性:<?xml version="1.0" encoding="utf-8"?><resources> <declare-styleable name="global_TimelineLayout"> <!--时间轴左偏移值--> <attr name="global_line_margin_left" for

2021-04-25 09:41:55 684 4

转载 android存储路径详解

前言前两天因为开发一个app更新的功能,我将从服务器下载的apk文件放在了内部存储目录(测试手机为小米,路径为:data/user/0/packagename/files)下面,然后安装的时候一直安装不了,提示解析包出错。后来查询发现,安装apk是调用了PackageInstaller,没有相关权限,这个无法获取内部路径,所以会安装不了。借机也复习了一遍Android下面存储相关的知识点,特来总结一番。存储分类对于Android存储目录,我总结成一张思维导图,如果有需要原图的,请在..

2021-04-20 17:53:38 16126 2

转载 toast能在子线程中弹出吗

Android人知道在安卓中不能在子线程中更新ui,为什么呢?真的不能吗?先做个试验,我们在子线程中调用toast,看看有什么效果,按照上边一句话的意思,这里应该会报错显示不能再子线程中刷新ui吧val thread = object : Thread() { override fun run() { Toast.makeText(this@MainActivity, "123", Toast.LENGTH_LONG).show() }}thread.start

2021-04-18 23:14:54 501 2

原创 获取顶部状态栏高度

//获取顶部status bar 高度private int getStatusBarHeight() { Resources resources = mActivity.getResources(); int resourceId = resources.getIdentifier("status_bar_height", "dimen","android"); int height = resources.getDimensionPixelSize(resourceId);.

2021-03-18 10:16:21 676

原创 maven设置每次构建获取最新jar包版本号

一般开发过程中,版本都是SNAPSHOT版本的。在跨工程引用的时候,获取最新版本的jar。经常就是不断的更新版本,通过版本变更来获取最新版本的jar。其实是可以声明变化版本,让gradle每次编译都去获取最新时间戳版本的jar(目前只可以解决相同分支jar问题,如果是多分支合作,代码获取会存在问题)。build.gradle中的依赖是通过设置maven依赖实现。我们知道,maven可以说是通过一个坐标定位来确定唯一一个包的,所说的坐标定位分别是groupId,artifactId和versi...

2021-03-17 11:55:08 3175

原创 小米手机电量和性能的白名单

小米手机Note 3有个“电量和性能”设置,如果没有把app设置为无限制,侧app在后台很容易被杀,导致每次重新启动app,针对该情况,做了个判断/** * 电池优化设置 */object BatteryOptimization { /** * 判断当前APP是否有加入电池优化的白名单(目前只限于小米 Note3手机) */ fun isIgnoreBatteryOptimization(activity: Activity?):...

2021-02-03 14:20:30 3471 2

空空如也

空空如也

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

TA关注的人

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