- 博客(69)
- 资源 (3)
- 收藏
- 关注
原创 Android Cmake 编译报错 cmake/api/v1/reply was not a directory
cmake 编译报错 cmake/api/v1/reply was not a directory
2024-12-15 00:01:47
122
原创 MVVM 基础
将 Model 的解析到 View 的映射逻辑放到 View Model 中,我们可以实现原本 View Controller 中代码的减少,同时,我们也可以不实例化 Controller 对 View Model 中的逻辑进行测,具体的 IOS 代码可以参考这篇文章。MVC 架构将应用程序中的角色分为 M V C 三个部分,这样的橘色拆分定义了角色,同时也为模块之间划分了边界,各个模块通过边界定义的接口去进行通信,角色划分之后,模块之间的组合方的不同,也会有不同的 MVC 模式。
2024-09-08 12:11:53
1252
原创 视图变换 - 等比例变换防止视图拉伸
到这里,使用上面的方式,已经可以实现将图片不拉伸显示在界面中,当然如果要避免图片放大后画面模糊,尽量选择一个像素不是那么少的图片进行放大,缩小的话那就不牵扯模糊的问题。以一个 16 : 9 纵横比的手机为例,当我们获取到的预览图的比例是 4 : 3 的话,如何把这张 4 : 3 的图片贴到屏幕上避免图片被拉伸呢。因为变换的时候我们的目标都是铺满目标区域,因此我们在变换的时候,采用上面铺满屏幕的变换方式,因此有下面的变换公式,这段代码在。如果是高度部分超出的话,就设置对应的负的 topMargin。
2024-08-18 12:36:16
1027
原创 lvalue / rvalue and lvalue reference / rvalue reference
表达式的类型 :type of an expression表达式的类别和表达式最终返回的对象、值、函数的类型相同。// 该表达式会在编译的时候确定 两个 int 相除,产生int类型的结果,因此 int 就是该表达式的类型。// 在c++中 auto 并不是一种动态类型,而是在编译时确定的,变量的类型在初始化时已经确定。// 算数运算符必须具有匹配类型的操作数 在计算 12.0 / 4;时,int 类型会被转换为 double 类型,然后进行除法运算。表达式的类型是在编译时确定的。
2024-06-02 20:24:39
911
原创 Android C++ 开发调试 & LLDB 工具使用
打印数组的内容:Print an array in memory, assuming we have a pointer like int/float/** *ptr。但是到目前为止,Android 上的 NDK 开发也可以使用 LLDB 进行调试,这里记录这么强大且通用的工具相关用法。显示 frame 中的变量的内容:Show the contents of local variable var。Android 中在进行 NDK 开发的时候,我们经常需要进行 C++ 代码调试,这里对调试工具。
2024-05-02 17:02:31
1551
3
原创 Android 开发部分基础工具使用
打开 Settings 按照下面的方式添加自己的工程路径到项目中,这样我们就可以将项目添加到Android studio 的git 管理工,在代码编辑的地方直接右键 Annotate 可以看到代码提交记录。NDK调试的过程中,如果debug包也是将so strip的话,可以在build选项中控制不strip。如果通过上面的方式 don’t strip 还是无法调试,可以尝试 增加。方便的jadx工具,可以直接反编译apk。与jd-gui有类似的界面。新的sysTrace工具。参数,增加调试信息。
2024-04-27 11:53:36
554
4
原创 Flutter中鼠标 onEnter onExit onHover 实现代码分析
生活会给你任何最有益的经历,以助你意识的演变。转载请注明出处:刘旭东-竺沐。这里对最近用到的一些 Flutter 开源的东西进行总结积累,希望能帮助到大家。
2023-12-24 17:28:15
1321
原创 VR 实现 Splash Screen 效果
OCULUS : https://developer.oculus.com/documentation/unity/unity-gs-overview/PICO : https://developer-global.pico-interactive.com/document/unity/create-a-developer-account-organization-and-app/在 PICO 和 OCULUS 的 Unity 工具链中,提供了设置 Splash Scren 的方式,需要参考官方的教程将
2023-12-02 13:12:19
1031
原创 Android 13 startActivity报错ActivityNotFoundException
setAction去指定action, addCategory()去指定category,还有一些其他的设置,这样我们就可以拉起我们的activity了。Android 13上只有intent匹配目标的intent-filter,这样才能拉起,所以对于Android 13 我们需要进行代码适配。查阅google官方的文档,有这么一段话,
2023-07-09 16:14:50
835
原创 c++基础学习记录
c++中如果有一些函数被频繁掉用,可以使用inline关键字定义一个方法,这样这个方法就变成了内敛函数,使用内联函数的地方会在运行的时候被替换为内联函数的方法体,通过这种方式减少函数栈的调用。原始类的定义中(包含友元类声明的那个类A.hpp),就不需要包含友元类的头文件,也不需要在类定义前去声明友元类,因为友元类的声明自身就是一种声明(它指明可以在类外找到友元类)友元类中定义的函数使用到了原始类的私有变量,那么就需要在友元类定义的文件中包含原始类定义的头文件,所以这里导入了A.hpp,int a = 0;
2023-07-02 20:24:43
532
原创 env->FindClass() ClassNotFound
上面的if (method!= nullptr) { 判断是否有Java堆栈帧,没有的话就走到下面的GetSystemClassLoader得到系统的类加载器,因此就找不到app中的类,当我们使用从c++层的线程去执行FindClass的时候会遇到上述问题,大家可以参考上面的解决方案尝试解决。在JNI调用的时候如果遇到了异常,不会立即抛出异常,当代码执行到受管理的代码时会抛出异常。什么是受管理的代码:使用 Java 或 Kotlin 编程语言编写的代码。为什么FindClass会走到系统类加载器呢?
2023-06-11 18:09:09
1397
原创 ARCore AREngine获取预览图,深度图实践
官方的设备支持列表,寻找带TOF获取深度硬件支持的设备,当然更多的设备是没有深度摄像头支持的,这样的设备上我们通过ARCore的depthAPI我们获取到的图片和深度图片不匹配,因为设备没有硬件支持的话,即使调用的是full depth api,最终获取到的也是raw depthapi经过采样的数据,原始图和深度图是不成比例的,自己测试过程中发现华为手机不带深度摄像头根本拿不到深度信息,ARCore可以拿到一个depth from motion的深度图。查看Android的Media库中接口,
2023-04-16 10:26:44
1083
原创 YUV基础
YUV在做手机图像或者视频处理的时候会经常用到的一个格式,用此文来记录YUV相关介绍,让项目中用到YUV不再对这个概念懵逼。链接:YUV 作为一种图像编码格式,Y表示亮度分量,UV表示色度信息:U表示蓝色部分投影,V表示红色部分投影。
2023-03-11 21:07:02
804
原创 Android - UI开发基础
spread会占用所有符合条件的空间,且因为spread时默认的layout_constraintWidth_default,所以可以不写,在使用spread属性的时候,对应方向的start,end,或者top,bottom方向都要进行设置,不然扩展属性不会生效。 浮点值,表示宽度和高度之间的比率;flow流式布局可以控制当元素个数过多形成多行的链时的显示规则,有none,chain,align等规则,同时,我们也可以控制每行显示的view的数量和每行上的view的对齐方式。
2022-10-29 23:53:29
1607
原创 Android中的Drawable
文章目录Drawable介绍BitmapDrawableDrawable介绍Android中Drawable表示可以在Cances上进行绘制,和View不同的是,Drawable不会像View一样,对用户的的交互作出反馈。Drawable可以是图片,同时也可以是xml,也可以使用代码构建具体的Drawable,非图片类型的Drawable也会占用更少的存储空间。Drawable有很多的子类,比如BitmapDrawable,GradientDrawable,hapeDrawable,LayerDra
2022-06-19 20:05:32
887
原创 java运算中的精度问题
文章目录0.59f * 100 和 0.59 * 100二进制基础知识:二进制数和10进制数字的相互转换计算机对浮点数的存储避免精度丢失:两个数相除得到double类型0.59f * 100 和 0.59 * 100上面两个运算公式的运算结果如下: int a1 = (int) (0.59f * 100); System.out.println(a1); // 输出:58 int a2 = (int) (0.59 * 100); Syste
2022-05-28 10:22:52
3282
1
原创 Gradle基础
编译debug包:./gradlew assembleDebug编译release包:./gradlew assembleRelease
2022-05-01 17:36:24
4327
1
原创 密钥基础记录
最近在做项目的时候用到了一些密钥知识,听懵逼的,同事的解释+老板的问题才让我有点明白这个是咋回事,这里对自己涉及到的一些密码基础知识进行记录非对称加密:密钥分为加密密钥和解密密钥两种。发送者用加密密钥对消息进行加密(私钥),接收者用解密密钥对密文进行解密(公钥)非对称加密算法: RSA和RSA2RSA: 对密钥的长度不限制,推荐使用2048位以上RSA2:强制要求RSA密钥的长度至少为2048公钥和私钥在项目中的调用关系发送者接收者发送者用私钥进行加密请求数据 -&g.
2022-04-30 11:15:40
319
原创 Android 插件化基础
加载apk中的代码Android中加载apk我们可以使用DexClassLoaderA class loader that loads classes from .jar and .apk files containing a classes.dex entry. This can be used to execute code not installed as part of an application.当我们的apk或者jar没有被加载的时候,我们可以使用DexClassLoader去加载对
2021-11-07 17:27:04
2104
原创 Activity启动流程
文章目录学习Android,有的东西总是绕不过,比如Acticity的启动流程源码学习,这个之前面试的时候准备看,但是发现太复杂了,没太多时间,现在找到新工作了,接触Replugin的时候涉及到,Activity的启动,就顺道一起学习下。Activity的启动流程:当用户在界面手点击屏幕上的应用图标时,应用程序的MainActivity是由Launcher启动的, boolean startActivitySafely(View v, Intent intent, Object tag)
2021-10-30 16:14:53
372
原创 Android混淆
文章目录开启混淆ProGuard的作用混淆的基本规则开启混淆Android中配置混淆,需要在gradle中配置minifyEnabled为true,然后再混淆的配置文件中加入我们的混淆规则就可以。android { ... buildTypes { release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'
2021-10-30 16:05:05
4962
9
原创 Android中创建Surface和TYPE_WALLPAPER类型的window
创建surface当需要自己创建一个surface的时候,首先应用必须是系统应用,因为底层的一些接口和权限只有系统应用才能获取到。创建Surface的时候我们需要下面的权限:<uses-permission android:name="android.permission.ACCESS_SURFACE_FLINGER"/>查看系统中对该权限的定义:<!-- @SystemApi Allows an application to use SurfaceFlinger's low
2021-07-24 16:23:55
880
3
原创 Android 知识相关问题整理
算法题:给你一个数组,判断该数组是不是二叉搜索树的后序遍历序列。(剑指offer30题)https://leetcode-cn.com/problems/er-cha-sou-suo-shu-de-hou-xu-bian-li-xu-lie-lcof/由于工作了,好久没看树方面的知识,二叉搜索树的定义有点忘了,面试后搜索定义如下:二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树)它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均
2021-05-19 22:55:12
453
1
原创 android知识总结
文章目录activity的启动过程(不要回答生命周期)Service的启动类锁和对象锁会冲突吗activity的启动过程(不要回答生命周期)Android中Activity的启动可以分为下面两种场景:根Activity的启动:当用户点击app图标的时候,该Activity的启动就代表了应用程序的启动。子Activity的启动:子Activity是由其它Activity拉起,子Activity有可能与拉其他的Activity运行在不同的进程中,这由自身的配置参数决定。启动对应的Activity的
2021-04-06 23:09:08
1204
原创 性能优化
取消闪屏问题https://www.jianshu.com/p/654dac931667// 优化布局https://juejin.im/post/6844903453609689101https://www.jianshu.com/p/4943dae4c333
2021-03-13 10:43:05
190
原创 辅助编码技巧
https://blog.youkuaiyun.com/Sunxiaolin2016/article/details/101549697
2021-02-16 11:18:22
448
1
原创 壁纸服务的启动过程
https://wizardforcel.gitbooks.io/deepin-android-vol3/content/8.htmlhttps://blog.youkuaiyun.com/Innost/article/details/47660645
2021-01-23 16:40:06
3589
5
原创 view实践妙用方法记录
文章目录clipToPadding属性clipChildren属性clipToPadding属性查看android中对该属性的注释Defines whether the ViewGroup will clip its children and resize (but not clip) anyEdgeEffect to its padding, if padding is not zero. This property is set to true bydefault.自己理解这段话为:该属
2020-12-27 18:38:15
586
原创 BitmapFactory.Options中参数使用
文章目录使用场景使用方式代码使用场景android开发的过程中,很多时候我们所需要的图片大小比原图小,这时候我们就没有必要加载原图进行显示毕竟大图占用的内存要大。使用方式使用BitmapFactory.Options的inSampleSize来调整图片的尺寸,查看inSampleSize的官方注解,inSampleSize当采样率大于一的时候 ,长和宽对应变为原来的 1/inSampleSize,对应的像素数量减少 1/(inSampleSize^2),bitmap的大小相应的也缩小为 1/(i
2020-10-11 16:24:46
3179
2
原创 Android Scroller实现弹性滑动
首先看下实现效果,可以看到当我们手指松开时图片会逐渐滑动到初始位置,而不是直接跳变到中心点。代码实现当手指触摸到view上时即TouchEvent位MotionEvent.ACTION_DOWN时,记录开始的坐标位置,同时由于手指再次按到屏幕上的的时候view还在执行动画,所以当动画还在执行的时候我们需要将动画停止。 if (!mScroller.isFinished()) { mScroller.abortAnimation()
2020-07-12 14:28:27
571
2
WindowsUpdateDiagnostic.diagcab
2018-01-31
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人