- 博客(51)
- 收藏
- 关注
原创 Android高效加载大图学习笔记
本文介绍了Android中高效加载大图的方法。通过BitmapFactory.Options设置inJustDecodeBounds属性可以获取图片尺寸而不分配内存,避免OOM。关键是通过计算inSampleSize压缩比例,使图片尺寸与控件匹配,大幅减少内存占用。具体步骤包括:1)获取图片原始尺寸;2)根据目标尺寸计算压缩比例;3)重新解码时应用压缩比例。示例代码展示了如何将任意图片压缩为100x100缩略图并显示在ImageView中。这种方法能有效解决大图加载的内存问题。
2026-04-01 14:49:51
310
原创 Java线程池学习笔记
本文总结了Java线程池的核心知识点:1) Executor框架解耦任务创建与执行,提供execute和submit两种提交方式;2) ThreadPoolExecutor的7个构造参数及执行流程;3) 四种常见线程池的特点和使用场景(FixedThreadPool、CachedThreadPool、SingleThreadExecutor、ScheduledThreadPool);4) 线程池与其他异步处理方案的比较,特别指出Android开发中Executors的局限性。文章还详细介绍了Schedule
2026-03-22 23:23:45
335
原创 Android架构学习笔记
本文总结了Android开发中常见的三种架构模式。MVC模式存在Activity职责过重的问题;MVP通过引入Presenter层分离视图与业务逻辑,提高了复用性但耦合度仍较高;MVVM采用数据绑定实现数据与UI自动同步,具有生命周期感知优势,但调试困难且视图复用性差。三种架构各有优缺点,开发者需根据项目需求选择合适的模式。
2026-03-16 20:55:56
47
原创 Android组件化学习笔记
本文总结了Android组件化的核心概念和ARouter框架的实现原理。组件化的意义在于实现模块解耦、自由组合和重复使用,解决传统项目代码耦合、协作冲突等问题。组件通信可通过EventBus、广播或ARouter等框架实现。ARouter利用APT在编译期扫描@Route注解生成路由表,运行时通过映射路径找到目标类实现跳转,其核心是维护组名与路由类的映射关系,最终完成模块间的解耦通信。
2026-03-16 20:04:07
207
原创 gradle常用指令使用笔记
本文总结了Gradle常用指令及配置方法,主要包括:1)编译APK指令(assembleRelease/assembleDebug);2)签名配置方法(定义签名参数并关联到release构建类型);3)APK输出文件名定制方案(静态命名和包含版本号、构建类型、时间等信息的动态命名)。配置后产物默认存放在app/build/outputs/apk/目录下。这些配置可帮助开发者更灵活地管理构建过程及输出文件。
2026-03-09 16:10:36
58
原创 配置Makefile编译apk学习笔记
本文介绍了Android应用Makefile配置要点:1) 提供了标准APK的Makefile模板,包含模块名、源文件、签名等关键配置项;2) 说明如何被系统根Makefile引用,通过PRODUCT_PACKAGES添加模块名;3) 查找根Makefile的方法;4) 普通应用系统签名流程:创建目录、配置platform签名、执行编译命令生成系统应用。全文提供了完整的Makefile配置示例和实际操作指南。
2026-03-02 14:17:08
157
原创 GCC&Makefile学习笔记(一)
GCC(GNU编译器套件)是开源的编译工具集,最初仅支持C语言(GNU C Compiler),后扩展支持多种语言并更名为GNU Compiler Collection。Linux系统通常自带GCC,Windows需安装MinGW(极简GNU工具集)。安装MinGW需下载对应版本并配置环境变量。常用IDE如VS、CLion等集成了编译器和调试器。GCC官网提供详细文档和使用手册,包含各版本特性说明。开发者可通过gcc --version验证安装,并通过手册查询具体编译选项和功能。
2026-03-02 14:08:46
285
原创 Android Studio jbr安装教程
本文介绍了JetBrains Runtime(JBR)的安装步骤:首先从GitHub下载对应版本的JBR,然后在IDE中通过"Help > Find Action > Choose Boot Java Runtime"查看当前运行时版本号,下载匹配版本。接着添加自定义运行时路径,选择下载解压后的JBR文件夹,最后重启IDE完成安装。整个过程需要确保下载的JBR版本与当前IDE运行时版本一致。
2026-02-28 10:41:11
148
原创 C语言翁凯老师课程学习笔记(一)
本文摘要:文章系统介绍了程序设计基础概念,重点讲解了C语言的特点与应用。主要内容包括:1) 程序设计的目的是理解计算机工作原理;2) 计算机解决问题的具体步骤;3) 程序执行方式(解释与编译);4) 算法定义;5) C语言的发展历史、版本演变及工业应用领域;6) C语言开发环境配置建议。文章强调C语言作为底层系统编程语言的重要性,并推荐了Dev C++等开发工具。
2026-02-25 19:26:04
268
原创 探究ContentProvider(一)
本文介绍了Android中的ContentProvider及其使用方式。ContentProvider是Android推荐的跨程序数据共享技术,比SharedPreferences和文件读写更安全可靠。文章阐述了ContentProvider的使用场景,包括读取其他程序数据或自定义共享接口。重点讲解了通过ContentResolver操作数据的方法(增删改查)以及URI的组成与解析方式。最后详细说明了query、insert、update和delete方法的参数配置,为开发者提供了操作ContentProv
2025-09-24 21:54:31
996
原创 探究Android权限机制(一)
本文介绍了Android运行时权限机制,重点分析了权限分类和实现流程。Android 6.0引入的运行时权限机制要求危险权限必须在使用时动态申请,分为普通权限(自动授予)和危险权限(需用户授权)两类。文章详细列出了危险权限组及其包含的具体权限,并以拨打电话为例,演示了完整的权限申请流程:包括声明权限、检查权限状态、请求权限、处理授权结果等步骤。特别提醒开发者注意权限组可能调整,需及时关注官方更新。
2025-09-18 08:11:57
458
原创 【Framework开发】Aosp中死锁问题
本文分析了在Android AOSP中,RootWindowContainer的onDisplayAdded方法增加广播发送逻辑后引发的死锁问题。通过分析主线程、线程153和线程16的日志,发现死锁是由于线程16和线程153互相持有对方需要的锁(UnisocActivityManagerService对象锁和WindowManagerGlobalLock对象锁)导致的。
2025-02-23 13:56:39
590
原创 Android开发基础:SharedPreferences的使用
项目中当需要存储数据时,除了使用Sqlite数据库,还有一种方案就是SharedPreferences,这种存储方案是Android中常用的存储方案,使用起来方便,功能也很完整,适合简单数据的存储。SharedPreferences值得开发者掌握它的使用流程,以便于在适合的场景中使用,本文旨在介绍SharedPreferences的使用流程,希望各位读者能从中获益。
2023-10-26 17:55:26
447
原创 Android Studio XML没有代码提示
修改compileSdkVersion和buildToolsVersion为29、“29.0.0”。原因:如果版本是34的话,Android Studio可能不支持吧。
2023-09-20 14:11:21
267
原创 Android的焦点以及EditText第一次点击,点击事件没有回调的问题
焦点在日常开发中也是个重要的知识点,很多地方都会涉及到,如本文中所说的EditText,还有我曾经做过的TextView跑马灯效果也需要设置焦点。所以我们要合适的设置View是否具有获取焦点的能力,以及在合适时机获取焦点并且了解获取焦点了对程序的影响,这些都弄明白了处理起来问题就会简单很多。
2023-07-25 13:40:13
1129
原创 ScrollView中添加跑马灯效果TextView,自动滑动到TextView位置
ScrollView中有一个机制,如果ScrollView内布局产生变化就会滚动到获取焦点的View的位置。滚动到焦点View的距离是通过ScrollView的。所以我们只需要重写这个方法,改变它原有计算滑动距离的逻辑,直接返回0,这样当ScrollView内布局产生变化获取。跑马灯效果的TextView在显示的时候需要执行。返回值进行滚动,拿到的值是0,也就不会滚动。
2023-01-16 16:48:15
454
原创 Installed Build Tools revision 33.0.0 is corrupted.Remove and install again using the SDK Manager.
Android Studio报错:Installed Build Tools revision 33.0.0 is corrupted. Remove and install again using the SDK Manager.我的解决办法
2023-01-07 01:09:09
323
原创 Android Studio项目jdk升级至11报错this version of the Java Runtime only recognizes class file version
解决升级JDK11,Android Studio报错com/android/tools/idea/gradle/run/OutputBuildAction has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0
2023-01-05 16:53:32
2518
原创 Android-使用StaticLayout实现icon跟随TextView末尾效果
实现效果:在RelativeLayout中有一个TextView和ImageView,TextView会动态改变其内容,ImageView要始终跟着TextView的末尾处
2022-08-03 11:48:24
2307
2
原创 Android日常开发 - FlexboxLayout学习笔记
Android日常开发使用FlexboxLayout实现流式布局的效果,FlexboxLayout与h5中的flex使用十分相似,都是将父元素设置成flex布局,通过设置属性,使子元素实现不同的排列
2022-07-13 22:31:09
876
原创 Android下拉刷新的实现(二) - PtrFrameLayout篇
Android下拉刷新的实现系列文章准备了两篇,对应SwipeRefreshLayou和PtrFrameLayout。SwipeRefreshLayout作为Android原生的下拉刷新控件,UI效果比较简洁,也比较容易开发,但是实现的效果过于简单,对于提升页面的美观度有着局限性;PtrFrameLayout是一款下拉刷新框架,提供的UI效果比较好,复杂度也会高一点,大家可以按照自己的实际情况来进行选择...
2022-06-12 22:35:26
999
原创 Android下拉刷新的实现(一) - SwipeRefreshLayout篇
Android下拉刷新的实现系列文章准备了两篇,对应SwipeRefreshLayou和PtrFrameLayout。SwipeRefreshLayout作为Android原生的下拉刷新控件,UI效果比较简洁,也比较容易开发,但是实现的效果过于简单,对于提升页面的美观度有着局限性;PtrFrameLayout是一款下拉刷新框架,提供的UI效果比较好,复杂度也会高一点,大家可以按照自己的实际情况来进行选择......
2022-06-12 22:29:01
4200
3
原创 Android日常开发 - Fragment切换动画的实现
在日常工作中,经常会遇到某个功能的使用引导开发。引导中的多个步骤对应多个Fragment,完成一个步骤就跳转到下一个步骤,跳转的实现也就是Fragment的切换。我们一起看看如何实现Fragment切换以及在切换时实现动画!...
2022-06-05 22:48:43
3425
原创 Android日常开发 - SimpleDateFormat设置时区
海外项目中由于地区不同,时区也会不同。因为时区的不同,导致相同时间戳转出的日期有所不同,而且相同日期转时间戳也会不同;本文使用SimpleDateFormat进行Date和Str的转换
2022-05-31 15:28:50
3184
原创 Android日常开发 - 设置TextView的行间距和字间距
android:lineSpacingExtra:设置⾏间距的增数,表示在默认⾏间距基础上增加的间距,默认为0;如设置”3dp”:表示在默认⾏间距上增加3dp;android:lineSpacingMultiplier:设置⾏间距的倍数,表示将默认⾏间距乘以倍数,默认为1;如设置”1.2″:表示⾏间距设置为默认的1.2倍;代码中设置,setLineSpacing(float add,float mult):add对应android:lineSpacingExtra,注意设置的值单位是px,如果x
2022-05-27 17:07:22
7164
原创 Android日常开发 - 如何新建目录和文件
Android操作文件主要使用File类,创建目录对应的是mkdirs方法,创建文件对应的是createNewFile方法
2022-05-22 23:50:20
5498
2
原创 Android日常开发 - 详解Paint搭配SweepGradient实现扫描渐变
SweepGradient,扫描渐变,一般作用对象是圆或者弧线,从3点钟方向开始绘制。这篇文章告诉你它的使用并且还有相关拓展知识。
2022-05-18 08:30:00
1949
4
原创 Android日常开发 - Android7.0获取文件Uri
众所周知,Android7.0之前获取文件的Uri直接调用Uri.parse(path)即可,生成的Uri是file://xx/xx,也就是文件的本地真实路径。Android7.0后不再允许传递本地真实路径,因为这样不安全,并且给出解决方案,使用FileProvider选择性地将封装过的Uri分享给外部,从而提供应用的安全性
2022-05-15 22:07:21
2926
原创 Android实现引导效果
Android实现引导效果GuideView生成引导比较方便,就是一些细节容易忘记,我在工作中使用过几次了,但是这个流程还是不太清晰,所以做个笔记巩固
2022-05-09 20:38:39
1303
原创 解决AndroidStudio-sync下载太慢的问题
解决AndroidStudio-sync下载太慢的问题在项目的build.gradle中加入,然后再sync即可maven{ url "http://maven.aliyun.com/nexus/content/groups/public/"}完整代码// Top-level build file where you can add configuration options common to all sub-projects/modules.buildscript { reposi
2022-04-23 15:41:47
5665
原创 Android使用高斯模糊实现模糊背景
Android使用高斯模糊实现模糊背景引言最近的开发中实现了一个模糊背景的效果。大概效果是这样的:实现思路将View转成Bitmap,并且记录列表的滑动距离,生成bitmap时上移画布(这样是为了实现滑到那,模糊那的效果)上移画布:一般绘制View,canvas的起始点在屏幕的左上角,也就是(0,0)。当canvas上移距离y后,绘制的起点会变成(0,-y)。这样canvas竖直方向-y到0这一部分会在屏幕外,那么在绘制的时候view的top到top+y是在屏幕外面,我们看不到;我们能看到的
2022-04-01 23:17:50
10986
1
原创 getLocationOnScreen学习笔记
解析getLocationOnScreen,让读者知道如何使用getLocationOnScreen方法
2022-03-24 11:00:15
760
原创 Mac适配Window键盘
Mac适配Window键盘键盘对应关系苹果键盘Window键盘OptionAltControlCtrlCommandwin键FN+WIN有些键盘win键不能实现command的效果,需要按FN+WIN键,然后生效
2022-03-22 21:18:28
3346
原创 mac版本AndroidStudio删除module
1.在project视图下,右击需要删除module,选择 open module settings。2. 如果界面上面没有“-”,像这样:需要点一下最上面 Module:app 后面的图标。出现+ 和 - 符号后就可以选择module,点击 - 即可。最后在project视图下删除module的文件夹即可。...
2022-03-20 12:56:36
470
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅