自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

hsw

  • 博客(180)
  • 资源 (4)
  • 收藏
  • 关注

原创 自定义View和自定义ViewGroup的区别

自定义View和自定义ViewGroup在Android开发中各有其独特的作用和优势。自定义View侧重于实现个性化的绘制效果和交互逻辑,而自定义ViewGroup则侧重于管理子视图的布局和绘制逻辑。开发者可以根据具体的需求和场景选择使用自定义View或自定义ViewGroup来创建满足要求的界面元素。

2024-07-12 10:06:07 365

原创 View 面试常见问题

ViewRootImpl是Android系统中的一个重要类,它用于管理视图层级结构的根节点,是View与WindowManager之间联系的桥梁。

2024-07-12 10:03:41 610

原创 startActivity 流程

在 Android 系统中,startActivity 方法是 Android 应用中用于启动另一个 Activity 的关键方法。一旦 Activity 的启动配置完成,AMS 会通知 WindowManager 来准备显示新的 Activity。在 Activity 显示给用户之前,系统会按照 Activity 的生命周期回调方法(如 onCreate(), onStart(),在 Activity 类中,startActivity 方法实际上是一个封装方法,它最终会调用 Activity 的。

2024-07-12 10:02:37 297

原创 setContentView 流程

如果是使用 AppCompatActivity, 还会多一步设置 mSubDecor。它是在DecorView 上又加了一层,主要用于设置主题。此时UI绘制流程基本结束,页面也展示出来了。

2024-07-12 10:01:49 483

原创 onCreate和onResume为什么不能直接获取宽高

这里要结合Handler的消息机制,我们post到Handler中的消息,并不是立刻执行,不要认为我们是先dispatchAttachedToWindow的,后执行的测量和绘制,就没办法拿到宽高。实则不是,我们只是将Runnable放到了handler的消息队列,然后继续执行后面的内容,也就是绘制流程,结束后,下一个主线程任务才会去取Handler中的消息,并执行。,执行队列里面的任务, 就可以获取view的宽高了。会把任务添加到队列中,在当绘制完成之后会执行。,创建了各个控件的对象;

2024-07-12 10:00:25 334

原创 Activity 、Window、PhoneWindow、View、ViewRootImpl 之间的关系

在Android系统中,ActivityWindowView这几个组件扮演着至关重要的角色,它们之间有着紧密的联系和明确的分工。

2024-07-12 09:59:07 343

原创 Kotlin Class

转换为Java后的变化。转换为Java后的变化。转换为Java后的变化。

2024-07-10 15:05:30 487

原创 解决 kex_exchange_identification 报错

在 ~/.ssh/config (没有就新建一个)文件中添加下面的配置即可,之后就可以正常操作了。GIT Clone 报错。

2024-06-03 09:12:23 377

原创 Flutter Android 热修复方案(3.22.0)

本文基于Flutter 3.22.0 实现Flutter 在 Android 的Release编译产物为 libapp.so,我们只需要把它换成我们要修复的so即可。

2024-05-30 11:02:24 632

原创 切换Flutter版本后运行 Android 报错

flutter 版本从 3.22.0 切换到 3.19.6 后,clean get 之后运行Android 后,报错。

2024-05-28 09:32:48 180

原创 Java 单例

/ 这里同样适用了Volatile 来保持可见性。Doule Check 方式。lazy 可以实现懒加载。

2024-05-24 10:06:00 287

原创 Build Dart SDK 遇到的问题

不然克隆不下来的,尽量不要使用别人开源的 depot_tools 因为使用的时候还是会版本升级, 还是要翻墙。这个时候首先检查网络,如果网络连接和翻墙都是正常的,可能是网络不稳定造成的。这个错误时说明没配置好翻墙,继续检查下看是哪里出现了问题。执行 proxy_test 测试是否可以访问成功。下载 depot_tools 需要科学上网。我也是尝试了两天跳过各种坑才解决的。这个上网还算稳定,可以考虑下。把上面的配置移除掉就好了。然后执行 proxy。

2024-05-22 17:06:39 221

原创 MAC 配置代理在终端不生效的解决方案

【代码】MAC 配置代理在终端不生效的解决方案。

2024-05-21 15:07:10 501

原创 ANDROID OLLVM 混淆配置

其实是存在的,为了解决只好打开。当我打开对应的文件夹,发现。这时就可以进行打包测试了,编译过程中我的报了错误。,然后再编译就好了。

2024-05-20 18:45:51 425

原创 SaToken 全局登录校验和过滤

【代码】SaToken 全局登录校验和过滤。

2024-05-14 13:34:12 246

原创 Flutter 获取系统是否是暗黑模式的方式

有两种方式可以获取到。

2024-03-26 19:07:52 745 1

原创 React Native Hermes 反编译

对于很多应用来说,启用 Hermes 引擎可以优化启动时间,减少内存占用以及空间占用。Hermes官方提供了hbcdump工具,可以进行反编译,但使用起来比较麻烦,有另一个开源工具hbctool可以对hermesbytecode进行反编译与回编译。也就说在0.70 后基本上 index.android.bundle是Hermes的bytecode,没办法直接查看源码,需要借助其他工具进行反编译。提供了59, 62, 74, 76版本的反编译。安装可以反编译84版本的hbctool。并没有自动配置全局命令。

2024-01-19 17:16:05 962

原创 Flutter BottomSheet 拖动分两段展示

的 Drag 方法,动态改变Dialog的高度,通过设置一个最大高度和最小高度分成两层进行展示。因为上面我们隐藏了自带的 DragHeader ,这里自定义一个可拖动的Header。常用的展示BottomSheet的方法为。

2023-12-29 18:05:14 936

原创 Flutter IOS 前后台切换主题自动变化的问题

首先在获取 lightTheme 和 darkTheme 进行断点,发现在切换到后台的时候会重新获取,猜测它应该是在进入后台的时候对主题进行了保存,但是存储机制可能是错误的。此时如果把App前后台切换,使用Obx包括起来的内容会跟谁异常主题变换,未使用Obx的颜色不会变化。既然存储异常了,就在进入后台之前再重新设置一遍主题好了;重新测试一下,问题解决。

2023-11-08 14:46:30 880

原创 Mac M1芯片电脑,使用pod install报错

【代码】Mac M1芯片电脑,使用pod install报错。

2023-10-27 09:36:39 266

原创 NewGlobalRef 无法传入jclass的解决办法

使用NewGlobalRef 对jobject全局引用,然后通过 GetObjectClass,得到jclass。

2023-09-25 15:41:22 93

原创 多线程模式下的单例创建

Java 单例Doule Check 方式。

2023-09-21 15:36:25 98

原创 TabController 回调两次处理

通过打印发现 两次的 index 是相同的,然后发现还有一个参数就是 indexIsChanging 结合打印发现 indexIsChangeing 两次 只有一次为false。使用 TabController 的 addListener 方法监听,发现每次都会回调两次,对于同步操作还好处理,如果是异步操作就比较难处理了。

2023-09-21 09:50:56 144

原创 Flutter TabBar 自定义 indicator 的宽、高、圆角

Flutter TabBar indicator 提供了高度和形状的设置,没法直接设置其宽度;参数来重新绘制indicator来实现;

2023-09-20 15:44:43 514

转载 nodeJs xxx is not a constructor 报错原因

这里举个例子说明下,假如在A文件中引入了B文件,B文件中引入了C文件,此时是没问题的,但是如果在C文件中再引入A文件或者B文件,就会出问题。

2023-07-19 11:27:16 1527

原创 如何监听inflate方法

});} // 创建AppCompatDelegate public static AppCompatDelegate create(@NonNull Activity activity , @Nullable AppCompatCallback callback) {

2023-07-08 10:37:26 139

原创 Android 删除文件或文件夹

【代码】Android 删除文件或文件夹。

2023-06-29 15:17:22 884

原创 发布Android Lib 到 MavenCentral

上面的问题修改完成后,为了加快进度,可以用一句优美的英文评论下。点击 Staging Repositories 菜单,点击 Release 进行发布即可。创建完成后下面很快会有回应,具体你的表单有什么问题,下一步怎么操作都会列举出来。然后可以集成到自己的项目中测试一下能不能正常下载。然后在上面的搜索中搜索你的项目名称即可以看到了。如果Tasks下面没有这么多菜单,而是出现。:如果是github上面的项目,不要使用。这里注册不需要什么验证码,很简单。:自定义,写项目名称即可。插件,配置比较简单。

2023-06-15 20:04:25 785

原创 使用FFmpeg实现最简单的视频播放

/ 加载so库init {// 定义接口方法布局使用设置) {})我这里直接在data/data/{packageName}/files/ 下面放了一个MP4格式的视频。

2023-06-06 17:56:16 786

原创 FFmpeg入门基础

FFmpeg 提供了多种媒体格式的封装和解封装,包括多种音视频编码、多种协议的流媒体、多种色彩格式转换、多种采样率转换、多种码率转换等;尽管 FFmpeg 功能强大,但是由于其采用的是带有传染性的 LGPL/GPL 开源协议,所以一些大厂基本上都是自己独立开发类似的音视频处理库,甚至在接口和组织模块上模仿 FFmpeg。FFmpeg 既是一款音视频编解码工具,同时也是一组音视频编解码开发套件,作为编解码开发套件,他为开发者提供了丰富的音视频处理的调用接口。主要通过命令的方式进行对FFmpeg的调用。

2023-05-31 15:04:36 865

原创 音视频基础知识

YUV模式下,色彩分量被分开表示,人眼感知亮度和颜色不同,YUV模式将图像的亮度和颜色分开处理,不仅可以节省存储空间,而且适合人眼的视觉特性,优化了图像的压缩,常用于数字电视、DVD、视频编码等应用中。有些超高帧率的视频达到60fps。RGB即红绿蓝三个通道的颜色模型,每个像素由三个颜色通道的取值组成,代表了像素的红、绿、蓝三个基本颜色成分的浓度,RGB模式下每个像素需要占用三个字节的存储空间,而且强调颜色分量之间的独立性,对于色调、亮度、色彩鲜艳、清晰度要求高的场合使用比较多,如显示器、电视、摄像机等。

2023-05-31 14:58:12 2401

原创 Jetpack StartUp

实际开发中大部分三方的SDK都是需要application作为依赖的,所以使用StartUp的机会并不多。如果是不依赖的建议使用这种方式,毕竟我们使用的jetpack都已经用它初始化了,我们在里面多加一条,相当于搭了顺风车,省时省力。

2023-05-17 14:59:36 568

原创 ViewBindingKtx

在Android SDK中提供了里面包含的对viewModel的扩展方法,可以直接获取viewModel在MVVM架构模式中主要使用的就是viewModel和(dataBinding 要在xml布局写逻辑,个人很不喜欢)。官方并没有提供相关扩展,所以就自己造一个。原理基本上都是使用反射来实现的,我之前是写在BaseActivity中的,但是这样就有点耦合。所以使用委托的方式实现。

2023-05-06 18:41:25 195

原创 Android App 合规检测

合规检测主要是对隐私API的无声明调用的筛选。

2023-03-18 11:32:10 464

原创 Android Tapjacking

android 安全

2022-08-10 15:17:56 787

原创 RecyclerView setHasStableIds

setStableIds 标记了是否是稳定的数据源,数据源不可改变。此时不可再添加 adapter.registerAdapterDataObserver。如果设置为true如果adapter.hasStableIds返回true,ViewHolder放入mAttachedScrap中,否则会将ViewHolder回收到非scrap缓存中...

2022-03-25 14:20:23 1944

原创 Kotlin For 循环

fun main() { // 循环包含开头和结尾的数据 for (i in 0..10) { print("$i ") } // 0 1 2 3 4 5 6 7 8 9 10 println() // 倒序循环包含开头和结尾的数据 for (i in 10 downTo 0) { print("$i ") } // 10 9 8 7 6 5 4 3 2 1 0 println()

2022-03-22 15:02:57 4285

原创 webview_flutter 加载本地html和js文件

flutter version: 2.10.1dart version: 2.16.1webview_flutter version: ^3.0.0网上看到别人使用的js都是直接写在index.html<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> <script type=".

2022-02-15 13:53:25 4187

原创 Jadx 打开闪退

好久没用jadx,今天打开一直闪退。去下载最新版本也不行。然后想起来最近把java 版本升级到了11。把环境变量改成8就好了。

2022-02-09 13:20:20 1795

原创 协程timeout和suspendCoroutine

kotlin.runCatching { withContext(Dispatchers.IO) { withTimeout(2100) { suspendCancellableCoroutine<String> { Thread.sleep(3000) logger("time continue") it.resumeWith(Result.succe

2022-01-17 15:47:07 1842

无标题dwewerwerwerwrwqrqwrqwrwqre

无标题dwewerwerwerwrwqrqwrqwrwqre

2024-06-06

tronjjar.zip

Tron java开发工具包,使用TronClient

2021-11-04

MiPush_Server_Java_20190420.zip

小米推送服务端java代码,里面修改了部分的代码,更快速便捷的使用,使用是尽量使用springboot框架更方便接入

2020-02-28

jsoup(java解析html工具)

java解析html工具

2017-03-15

h5 九宫格拼图游戏

h5 九宫格拼图游戏

2016-08-16

空空如也

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

TA关注的人

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