
熬夜再战Android系列
文章平均质量分 92
工作几年后再学Android,从青铜到王者,以经验者的角度解读旧知识的新含义。欢迎私我交朋友更深入交流。
芝麻粒儿
专注于Android/Unity以及资源分享,欢迎联系我,交流让学习不再孤单!
展开
-
《导航贴》-Android手册,重温移动开发
Android导航帖 - 百分百不断更新!!专注于Android/Unity和各种游戏开发技巧,以及各种资源分享(网站、工具、素材、源码、游戏等)原创 2022-03-05 18:05:52 · 34435 阅读 · 45 评论 -
Android修行手册之从头到尾学Kotlin【全】
1.3万字总结Kotlin基础,快速学习!原创 2021-12-06 21:36:30 · 7331 阅读 · 18 评论 -
【万字】熬夜修行Android Studio技巧到出神入化,快速涨薪【建议收藏】
往期文章分享点击跳转=>熬夜再战Android从青铜到王者-UI组件快速搭建App界面点击跳转=>熬夜再战Android从青铜到王者-几个适配方案点击跳转=>熬夜再战Android从青铜到王者-开发效率插件篇点击跳转=>Unity粒子特效系列-龙卷风预制体做好了,unitypackage包直接用!点击跳转=>姐姐喊我解锁套娃新技能:FairyGUI在Unity中实现List嵌套List/立体画廊等,玩出花儿来点击跳转=>Unity新手必备5款宝藏插件–价值上.原创 2021-10-15 09:27:40 · 14336 阅读 · 41 评论 -
Android修行手册-五种比较图片相似或相同
用途:用于衡量两幅图像之间的相似度,特别适用于评估图像质量。原理:通过比较亮度、对比度和结构三个方面的信息来计算两个图像间的相似度得分。用途:用于检测和描述图像中的局部特征点,广泛应用于图像匹配、物体识别等领域。原理:通过在不同尺度空间中寻找关键点,并为每个关键点生成一个描述符,该描述符对于旋转、缩放、亮度变化具有鲁棒性。用途:用于快速查找相似图像或检测重复图像,常用于版权保护、图像搜索等场景。原理:基于图像的低频分量生成哈希值,即使图像经过轻微修改也能保持较高的相似度。原创 2025-02-07 16:55:28 · 1501 阅读 · 1 评论 -
2025年Android NDK超全版本下载地址
🌟今日传你,点了吧,未来你成功☀️,我分文不取,若不成功⚡️,也好回来找我。(网站、工具、素材、源码、游戏等) 有什么需要欢迎底部卡片私我,交流让学习。,谈吐间隐隐有王者霸气💚,日后定有一番大作为📝!和各种游戏开发技巧,以及。原创 2025-02-06 12:25:03 · 1169 阅读 · 0 评论 -
Android修行手册 - 移动端几种常用动画方案对比
移动端几种常用动画方案:GIF、视频、APNG/WEBP、LOTTIE/SVGA原创 2024-12-23 17:30:20 · 977 阅读 · 0 评论 -
Android修行手册-Chaquopy中opencv、numpy的初步应用
相比之下,使用Chaquopy集成Python和OpenCV库,可以简化Android开发中对OpenCV库的使用和集成,使得开发人员可以更加轻松地开发应用。使用Chaquopy,开发人员可以直接使用Python编写OpenCV的代码,避免Java语言本身的一些限制。原创 2024-03-01 18:52:22 · 1553 阅读 · 0 评论 -
Android修行手册 - 一套源码发布多个apk(多包名,多名称,多Logo)
专注于Android/Unity和各种游戏开发技巧,以及各种资源分享(网站、工具、素材、源码、游戏等)原创 2024-01-25 16:50:54 · 1706 阅读 · 15 评论 -
Android控件全解手册 - 多语言切换完美解决方案(兼容7.0以上版本)
自此,多语言切换的问题已经完美解决了。经测试,完全兼容7.0以上系统的多语言切换。原创 2023-11-30 06:15:00 · 1292 阅读 · 2 评论 -
Android修行手册 - 一篇文章从0到1搞一个Android Studio插件。
我们选择New,选择一个SDK。这里系统一般Idea的根目录,我们直接确定即可。接下来系统会让你选择一个JDK,也就是java环境,同样也会定位到相应位置,如果没有定位到,我们使用开发Android时JDK的路径就可以了。查看Android Studio中的JDK路径:原创 2023-11-30 03:30:00 · 978 阅读 · 0 评论 -
Android控件全解手册 - 任意View缩放平移工具-实现思路和讲解
这个功能肯定需要监听用户的手势,我本来想的是直接重新控件的onTouchEvent方法的,不过前人用了一个`GestureDetector`这个类及其子类和一些相关监听。这个以前确实没用到过,简单看了一下后,这是个好东西啊,缩放,平移手势全帮你写好了,还是系统自带的方法,有了这个神器,实现平移缩放还不是分分钟的事!原创 2023-11-29 03:00:00 · 1730 阅读 · 0 评论 -
Android控件全解手册 - 任意View缩放平移工具-源码
关于作者。原创 2023-11-29 07:30:00 · 540 阅读 · 0 评论 -
Android修行手册 - 使用ViewPager2实现画廊效果
目前我们看似完成了期望效果,但目前有小伙伴应该发现因为我们设置了ViewPager的宽度是没有填满根布局的,过渡滑动的效果很影响美感,我们第一反应肯定实在xml中加入android:overScrollMode=“never”原创 2023-11-28 05:15:00 · 3091 阅读 · 1 评论 -
Android修行手册-ViewPager定制页面切换以及实现原理剖析
当前我们的viewpager存在一个currentItem,就是当前的current position位置,我们记录此时的坐标轴为0,那么向右移动时,前一个view的position也是像右移动的,只是它的坐标是由-1慢慢变大到0的,这种position的值是一个相对值,是相对于当前curerntItem的坐标位置的相对值;同理右边的view也会向右移动,只是它的相对值由1慢慢变得无限大。原创 2023-11-25 19:55:33 · 1759 阅读 · 0 评论 -
Android修行手册-Event.getX 、Event.getRawX、left, top, x, y, translationX, translationY解析
left ,top ,right,bottom的值都是 View相对于父容器.具体为父容器的左上角,以及右下角.translationX/Y 是View左上角相对与父容器的偏移量,translationX/Y默认为0,和View的四个基本位置参数一样,View也为它们提供了get/set方法.View在发生平移的时候,top和left表示的原始左上角的位置信息,其值不会发生变化.代码实现说明) {textView.translationX = 30.0f // x 轴正方向。原创 2023-11-25 18:53:22 · 1588 阅读 · 0 评论 -
Android修行手册-超出父布局进行显示以及超出父布局实现点击
小应用场景:有时候一个按钮效果很小,就很难触发点击事件,我们通常会增大下这个点击区间范围。大应用场景:我实现了多个脑图的功能,里面因为方便画线穿插过某个UI,就用到了此类知识。原创 2023-11-23 21:33:10 · 1791 阅读 · 0 评论 -
Android修行手册-溢出父布局的按钮实现点击
小应用场景:有时候一个按钮效果很小,就很难触发点击事件,我们通常会增大下这个点击区间范围。大应用场景:我实现了多个脑图的功能,里面因为方便画线穿插过某个UI,就用到了此类知识。原创 2023-11-22 16:09:48 · 1236 阅读 · 0 评论 -
Android修行手册-POI操作Excel文档
这里我们用的是修改和精简过后,适合安卓的版本。POI 是3.12版本的,它不是 Apache 官方 POI 包,截止2023年11月我仍然在使用该 Jar 包开发应用,并且没有遇到什么问题。原创 2023-11-22 16:09:55 · 1894 阅读 · 1 评论 -
Android修行手册-POI操作中文API文档
/ 创建一个HSSFCellStyle对象// 设置填充颜色为青色// 设置填充模式为实心填充// 创建一个HSSFFont对象// 设置字体颜色为红色// 将字体设置为创建的HSSFFont对象// 将单元格的样式设置为创建的HSSFCellStyle对象。原创 2023-11-19 17:38:14 · 1817 阅读 · 0 评论 -
【itext7】itext7操作PDF文档之添加段落文本内容、添加List列表、添加Image图片、添加Table表格-支持Android
itext中使用List类表示列表对象,列表可以有序列表、无序列表,列表中的每一项使用ListItem类表示,一个List列表可以包含多个ListItem列表项,List列表可以设置缩进、列表项的符号等。,图片可以从URL、File等来源进行创建,Image类中的构造方法是protected修饰的,所以不能直接使用new关键字进行创建对象,可以使用itext中提供的。创建Table对象的时候,对应的构造方法必须指定表格中每一个单元格的宽度,列宽度的单位可以是pt、也可以设置百分比,推荐使用百分比单位。转载 2023-11-20 07:15:00 · 1155 阅读 · 2 评论 -
PDFBox操作PDF文档之创建PDF文档、加载PDF文档、添加空白页面、删除页面、获取总页数、添加文本内容、PDFBox坐标系-支持Android
PDFBox是Apache提供的一款专门用于操作PDF文档的工具组件,使用PDFBox可以很方便对PDF文档进行各种操作,例如:创建PDF文档、读取PDF文档内容、加载PDF文档内容、合并PDF文档、拆分PDF文档等等,使用PDFBox需要引入对应的依赖,这篇文章就基于下面的依赖,介绍一下PDFBox中一些常见的方法及其使用方式。-- 引入 PDFBox 相关的依赖 开始 -->-- 引入 PDFBox 相关的依赖 结束 -->转载 2023-11-20 02:45:00 · 4285 阅读 · 1 评论 -
【PDFBox】PDFBox操作PDF文档之添加本地图片、添加网络图片、图片宽高自适应、图片水平垂直居中对齐-支持Android
PDImageXObject类中提个了一些静态方法createFromFile(imagePath,doc)方法:采用File文件的方式读取本地磁盘中的图片。imagePath参数:图片的路径。doc参数:PDF文档对象。getImage()方法:返回BufferedImage图片对象。getSuffix()方法:返回图片的后缀类型,例如:jpg、png等。转载 2023-11-19 04:15:00 · 1515 阅读 · 2 评论 -
【itext7】itext7操作PDF文档之添加段落文本内容、添加List列表、添加Image图片、添加Table表格-支持Android
itext中使用List类表示列表对象,列表可以有序列表、无序列表,列表中的每一项使用ListItem类表示,一个List列表可以包含多个ListItem列表项,List列表可以设置缩进、列表项的符号等。,图片可以从URL、File等来源进行创建,Image类中的构造方法是protected修饰的,所以不能直接使用new关键字进行创建对象,可以使用itext中提供的。创建Table对象的时候,对应的构造方法必须指定表格中每一个单元格的宽度,列宽度的单位可以是pt、也可以设置百分比,推荐使用百分比单位。转载 2023-11-18 07:30:00 · 2837 阅读 · 1 评论 -
PDFBox操作PDF文档之读取指定页面文本内容、读取所有页面文本内容、根据模板文件生成PDF文档-支持Android
第一个参数是text:表示当前读取到的文本内容。第二个参数是List:表示当前文本内容中某一个字符的坐标信息。/*** @Description: 自定义文本提取器,获取查找文本的坐标位置*//*** 查找的关键字集合*//*** 查找成功的关键字实体对象集合*/@Overridei < size;i++) {// 获取当前读取的字符// 当前字符 和 keyWord 关键字进行匹配if (!转载 2023-11-19 03:30:00 · 3612 阅读 · 1 评论 -
【导出Word】如何使用Java+Freemarker模板引擎,根据XML模板文件生成Word文档(只含文本内容的模板)-支持Android
Word文件有两种后缀格式,分别是:doc和docx,doc是Word2003之前使用的,docx是Word2007之后使用的,可以说docx是对doc的扩展和优化。上面的模板文件只是简单的文本,你也可以添加表格、图片等内容到模板文件里面,可以使用Freemarker中的循环标签实现表格数据的自动添加,图片内容是采用base64编码,所以需要读取图片将其转换成base64编码之后,再渲染到XML文件中,后面的文章在介绍表格和图片的模板导出。,最终就是我们看到的Word文件样式啦。转载 2023-11-18 02:30:00 · 866 阅读 · 0 评论 -
【itext7】itext7操作PDF文档之添加表单控件(单行文本框、多行文本框、单选框、复选框、下拉框、按钮)-支持Android
单选框使用【PdfFormField.createRadioButton()】方法创建,单选框可以有多个,这些单选框可以构成一个组,这一组中的单选框只能选中其中一个,单选框组采用【PdfFormField.createRadioGroup()】方法进行创建。复选框使用【PdfFormField.createCheckBox()】方法进行创建,复选框可以设置选中之后显示的图标样式,有6种可选样式,分别是:五角星、圆点、方块、勾号、叉号、菱形。,这些类中提供了很多的静态方法,可以创建各种类型的。转载 2023-11-18 03:15:00 · 1960 阅读 · 0 评论 -
JasperReports之模板文件七大组成区域介绍(Title、PageHeader、ColumnHeader、Detail、ColumnFooter等)--支持Android
Title区域是只会显示在模板文件的第一页最开头位置,注意啦,这个只会显示一次,并且只会显示在第一个页面里面,这个区域一般是设置整个模板文件的大字标题,例如:我们写论文的时候,都会在第一页中写【xxx。Summary区域是显示在最后一页的位置,一般情况下,都是用作合计区域,例如:表格要合计某一列的汇总值,那么就可以在Summary区域进行显示,因为这个区域只会显示一次,刚好符和合计的功能(Detail区域是正文内容,可以有多个Detail区域,Detail区域是我们模板内容的核心区域。转载 2023-11-17 04:15:00 · 1054 阅读 · 0 评论 -
【JasperReports笔记01】Jasper Studio报表开发工具的安装以及使用Java填充模板文件内容-支持Android
双击Jaspersoft Studio.exe文件,启动JasperReports报表工具,如下图所示:上图就是启动之后的欢迎界面,看着有点像eclipse开发工具对吧!没错,Jasper Studio就是基于Eclipse进行开发的,它可以单独使用,也可以作为Eclipse的插件添加到Eclipse开发工具中使用。可以看到在Jasper Studio的主报表区域有很多的组成部分,如下图所示:Title区域:这个区域只会在模板文件的第一页中显示,从第二页开始就不会显示,主要定义文件的标题内容。转载 2023-11-16 21:09:47 · 4278 阅读 · 4 评论 -
【JasperReports笔记04】如何使用Jasper Studio制作父子报表,并且通过Java + Parameters参数填充模板文件支持Android
这里表格每一个字段的列宽是固定的,根据实际需求来调整,例如:我这里设置的name、price、amount三个字段的列宽度都是185px,和子报表中的列宽度是一致的,这是因为一会这三个列需要嵌入子报表组件,宽度设置成一样更好些。父报表制作完成之后,就可以设置父报表中子报表组件使用的数据源以及子报表的路径位置啦,首先选中子报表,在右下角区域可以设置表达式。到这里,我们的父子报表模板文件就制作成功啦,编译模板文件,生成对应的【】文件,将其放入到Java工程里面。进行渲染模板文件,首先创建子报表模板文件。转载 2023-11-17 04:15:00 · 2127 阅读 · 3 评论 -
【JasperReports笔记05】JasperReport指定自定义字体文件,解决中文不显示问题支持Android
字体文件前面几篇文章,介绍了如何使用JasperReport开发报表,可以发现,我们之前的模板文件都是使用的英文,从来没有写过中文,这是因为,默认情况下,JasperReport是不支持显示中文,如果要显示中文,那么我们就需要自己指定采用的字体文件,下面就介绍一下,如何自定义字体文件,显示中文内容。转载 2023-11-17 02:30:00 · 1955 阅读 · 0 评论 -
【JasperReports笔记06】JasperReport报表开发之常见的组件元素(Table、Subreport、Barcode等)-支持Android
TextField是一个基础组件,它表示的是一个文本域,可以设置一个表达式对象,例如:Parameters、Fields等,也就是说,TextField文本域组件可以在程序运行过程中,动态的显示文本内容。StaticText是Jasper中的一个基础组件,用于表示静态文本内容,它表示的内容在程序运行过程中是不可以改变的,在制作模板文件的时候,就已经固定了文本内容。Subreport是子报表组件,它可以在一张报表中嵌入另一个报表,从而实现父子报表的功能,父子报表我在之前的文章中有介绍了,可以看下这篇文章【转载 2023-11-16 21:03:14 · 2113 阅读 · 1 评论 -
【itext7】使用itext7将多个PDF文件、图片合并成一个PDF文件,图片旋转、图片缩放-支持Android
最简单的合并方式,那就是读取两个PDF文件,然后将其合并成一个新的PDF文件,保存到服务器上面之后,在将这个新的PDF文件和下一个待合并的PDF文件进行合并,以此类推,最终可以得到一个完整的PDF文件,但是这种方式缺点在于,每一次合并之后,都需要新生成一个PDF文件,并且下一次合并之后,还要再读取这个PDF文件,这就会导致多次读取文件的过程,效率不是很理想。这篇文章,我主要是将PDF作为字节数组/*** 基于内存中的字节数组进行PDF文档的合并* @param firstPdf 第一个PDF文档。转载 2023-11-16 21:02:32 · 2554 阅读 · 1 评论 -
Android修行手册 - 阴影效果的几种实现以及一些特别注意点
我们处在一个三维空间中,有阳光的地方就有阴影,真实的阴影其实是一种光影的效果。一个有光照的角度,加上物体有厚度就会形成一个阴影层。知道了阴影的产生需要光源和高度,技术也是如此,技术的实现是基于现实生活的现象。在各种平台开发中阴影基本都是以拔高 Z 轴来实现的。可以理解为有一束斜光投向屏幕,Z 轴值越大,离光就越近,阴影的范围就越大;Z 轴值越小,离光就越远,阴影的范围就越小。在 Android 平台实现阴影的方式有三种。原创 2023-11-15 17:04:58 · 2175 阅读 · 0 评论 -
Android修行手册-ViewBinding会引发内存泄露?
对于ViewBinding为了防止内存泄漏而出现的模板代码,可以将模板代码提取至基类Fragment中或者借助Fragment的viewLifecycleOwner的生命周期进行自动清理;对于onCreateView中为了创建ViewBinding而出现的模板代码,可以借助Fragment#onCreateView的默认实现以及ViewBinding生成的bind函数进行创建,或者通过反射调用ViewBinding生成的inflate方法创建ViewBinding。转载 2023-11-13 14:39:15 · 786 阅读 · 1 评论 -
Android修行手册 - 万字梳理JNI开发正确技巧和错误缺陷
本文阐述了 JNI 编程可能引发的内存泄漏,JNI 编程既可能引发 Java Heap 的内存泄漏,也可能引发 native memory 的内存泄漏,严重的情况可能使 JVM 运行异常终止。native code 本身的内存管理机制依然要遵循。使用 Global reference 时,当 native code 不再需要访问 Global reference 时,应当调用 JNI 函数 DeleteGlobalRef() 删除 Global reference 和它引用的 Java 对象。原创 2023-11-12 22:05:56 · 769 阅读 · 1 评论 -
Android修行手册 - 可变参数中星号什么作用(冷知识)
这是因为 Java 中的 vararg 参数在被传递给 **String.format()** 方法时,会自动被转换为一个数组。这表示我们将 args 数组作为参数传递给 String.format() 方法。这样做是为了确保 **args** 数组能够以参数的形式传递给 String.format() 方法,以便正确地进行格式化字符串。原创 2023-11-12 17:52:03 · 320 阅读 · 0 评论 -
Android修行手册 - POI操作Excel常用样式(字体,背景,颜色,Style)
该函数通过调用Workbook的createFont()方法创建了一个字体对象,并设置了一些属性,比如字体的高度和粗细。然后,通过调用Workbook的createCellStyle()方法创建了一个单元格样式对象,并设置了一些属性,比如对齐方式和填充颜色。之后,将之前创建的字体对象设置为单元格样式的字体。最后,将单元格样式对象存储在一个Map中,以字符串作为键和单元格样式对象作为值。这个函数的目的是创建一些常用的单元格样式,并存储在一个Map中方便后续使用。原创 2023-11-10 20:37:14 · 1555 阅读 · 0 评论 -
Android修行手册-POI操作Excel实现超链接并且变为蓝色
关于作者。我有个 Excel 文档,里面有很多的图片链接,需要进行内容提取分类,并且保存为新的 Excel 文件。写入保存后看到里面的超链接是默认的文本形式。失去了原 Excel 的超链接蓝色以及跳转功能。原创 2023-11-10 20:11:36 · 1633 阅读 · 0 评论 -
Android修行手册-实现利用POI将图片插入到Excel中(文末送书)
前两天有个小工具的开发,实现自动化将Excel中的图片链接Down下来然后插入到Excel表格中。朋友一直维护着任务类的(就那种打分评分啊,刷好评啊那些)。她量大,需要审核,靠人力实在是劳累。所以我研究了自动化。原创 2023-11-09 08:30:38 · 4020 阅读 · 17 评论 -
Android修行手册 - 一文全了解Kotlin几种静态变量、函数实现的那些事
在 Java 中使用静态方法或者静态变量,我们直接使用 static 进行静态修饰即可。调用起来不论是 Java 调用还是 Kotlin 调用,方式一样都很方便,类名.方法名 即可。但是在 Kotlin 中使用静态的方式可就不止一种,有三四种呢,而且不同的方式在 Java 中引用使用方式还不同。具体采用哪种方式,还需要自己根据场景选择了~原创 2023-11-07 21:21:35 · 2520 阅读 · 14 评论