安卓开发学习笔记
文章平均质量分 62
代码盗圣
我爱编程
展开
-
codemirror 5前端代码编辑器资料整理。
CodeMirror 是基于js的源代码编辑器组件,它支持javascript等多种高级语言,tampermonkey内置的代码编辑器就是基于它。它的按键组合方式兼容vim,emacs等,调用者还可自定义”自动完成“的列表窗口,自由度极高,相当成熟。但是这个库也是问题多多,很需要深度配置、改良优化。前排提示:由于信息闭塞,所以才研究了 codemirror 5。研究完才发现, codemirror 5官方基本处于弃坑状态 ……原创 2023-04-21 15:03:30 · 4045 阅读 · 1 评论 -
gradle mavenPublish 切换不同源码,根据不同的代码 flavor 生成并发布不同分支的 aar 库
本例定义了两个flavor:normal 、dragsort ,其维度为 "listpopup",意即…… 最后,需要告诉 maven Publish 插件:要用 components 指定打包内容 ……原创 2023-04-16 19:58:18 · 396 阅读 · 0 评论 -
Idea和Android Studio【插件】全局自动设置代码高亮级别为 Syntax
本文介绍一种使用插件完成类似目的的方法 —— 通过开发idea插件,将默认的 highlighting level 设为 Syntax,如需要重新 inspect all problem,则将鼠标移动至滚动条上方,等待弹出小型设置窗口,将 syntax 下拉菜单改成 all problem 即可(见视频中的操作)。不过这样设置对于已经打开的文件时无效的,不会触发重新分析,无法自动动态设置,只能用作默认值,在新开idea窗口、双击打开代码文件时起作用。网上已有一些全局设置的方法,比如inspect设置中,原创 2023-04-05 17:58:35 · 2689 阅读 · 0 评论 -
【无限思维画布】制作思维导图第五步,节点创建与连接,拖拽对齐与双击缩放
正在为无限词典制作单词思维导图功能,实现无限单词导图,无限思维画布。目前制作到第五步,实现节点创建、节点连接、节点拖拽对齐:节点创建与连接,拖拽对齐。原创 2023-02-27 17:12:18 · 663 阅读 · 1 评论 -
Jitpack使用指南:maven-publish如虎,jitpack如翼 【安卓Java组件化模块化】【更多gradle技巧】
上文整理了三种多模块开发的方法。我的第一个开源项目就依次用过,如今更是如虎添翼。原创 2023-01-17 17:07:08 · 1883 阅读 · 0 评论 -
安卓Accessibility(Talkback无障碍读屏器)适配笔记
视图只要保证这两点,就可以被读屏器点读……有些按钮可能需要根据情况提供不同的读屏内容,建议用委托类实现,不用总是自定义视图。原创 2022-11-26 22:16:59 · 1797 阅读 · 0 评论 -
终于把下载安装更新的功能整出来了,记录关键点
我的第一个安卓应用终于也有了APP内安装更新的功能(赶上末班车了吗),记录一些关键点,方方面面的。原创 2022-11-17 20:41:35 · 608 阅读 · 0 评论 -
Android WebView target=“_blank“ 打开新窗口【正解】
网页可使用target="_blank"打开新窗口,但webview默认是不会通过WebChromeClient中的onCreateWindow方法的,须预先设置:final WebSettings settings = wv.getSettings();settings.setSupportMultipleWindows(true); // 支持多窗口然后在WebChromeClient回调中处理:public boolean onCreateWindow(WebView view, boole原创 2022-03-09 15:56:43 · 7850 阅读 · 2 评论 -
android 点击Notification的定义视图后收起通知栏
百度搜`setOnClickPendingIntent 收起通知栏`,结果前排的csdn、博客园文章都是无效的(用了反射)。最终在Stack Overflow上找到了解决方案,记录如下。方法很简单,实际内容只有一行:…原创 2022-02-10 16:03:18 · 2626 阅读 · 0 评论 -
华为后台保活
首先明确一个问题——保的什么活?活就是活性,主要有两点:一、APP的虚拟机进程不被杀死。二、可以执行代码。需求就是就么简单。一个是进程活性,另一个是代码活性。失去进程活性,APP名存实亡,只存在一点点内存缓存,比直接划掉好一点点。失去代码活性,APP丢失权柄,令不出九宫,实际上是被休眠了。保活手段有三。一、系统设置>>应用启动管理,勾选允许后台启动。二、申请电池优化白名单(inent启动Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS)原创 2022-01-19 19:47:54 · 2592 阅读 · 0 评论 -
【安卓之巅】如何混淆Activity等四大组件(非标题党非自动生成)
如果把默认打包好的release.apk拖入android studio,双击打开dex文件,可以看到里面的Activity、View、布局等等全部都有是原来取的名字,感觉底裤都不剩了,怎么办?公开的有以下两种方案:一、使用第三方加固服务缺点:1.性能贼低,包括启动慢和运行慢。启动慢大多是冷启动慢,最多也就多出1~2秒的样子,可以接受。但在有的设备上,加固后的Java层代码可有十倍性能损失(测试出来的数据,是真的十倍!),需在Java层开多线程、多任务的慎重使用。2.不开源,产品不受开发者本人控制,对于原创 2021-12-22 20:19:26 · 2571 阅读 · 0 评论 -
Java创建zip压缩文件(不依赖第三方库)
话不多说,直接上代码:package com.knziha.myapplication;import org.junit.Test;import java.io.*;import java.util.zip.ZipEntry;import java.util.zip.ZipOutputStream;public class File2Zip { @Test public void test() { String rootPath = "C:\\Users\\Ad原创 2021-12-22 19:25:19 · 920 阅读 · 2 评论 -
解决 Android 开启混淆后 Crash 信息行号对不上 (一)完整流程
前言在 Gradle 插件版本达到 3.4.0 及以上,默认会开启 R8 进行代码优化,以往我们都是使用 SDK 自带的 proguardgui.bat 来还原堆栈信息,但在开启了 R8 混淆后这个方法就失效了,原因是 R8 内部会做各种代码优化诸如内联操作等,并实施行号映射,这时候在堆栈信息中抛出的行号就完全不是真实的崩溃位置了…如何解决?先来看下 release 版开启混淆后所抛出的异常信息可以看到,我们实际是在第 45 行抛出一个 NullPointerException 的,但 Logc原创 2021-12-08 03:41:22 · 2854 阅读 · 0 评论 -
【JAVA】MANIFEST.MF / CERT.SF 中 文件SHA1-Digest计算方法
前言: 给旧手机刷机,rom.zip 直接解压魔改,完后再压缩为zip刷入手机。其间遇到了 MANIFEST.MF / CERT.SF 这两个文件,看看是怎么回事吧。MANIFEST.MFManifest-Version: 1.0Created-By: 1.0 (Android SignApk)...Name: system/app/webview/webview.apkSHA1-Digest: zjehQbk00n2eu+YoBb1LZdieREo=CERT.SFName: syst.原创 2021-12-06 16:25:44 · 2333 阅读 · 4 评论 -
【Java】10进制与62进制互相转换
稍稍参(复)考(制)了 《10进制与62进制互相转换_Heartsuit的博客》之后,我将两个方法改写成Java,惊讶于Java与C#语法、接口之近似,基本上改改API名称的首字母大小写就能兼容。kotlin那种六亲不认的语法还是丢给小朋友玩吧。 可以将Long转换为String,支持的数字范围是Long.MIN_VALUE~Long.MAX_VALUE,支持负数。不过生成的字符串是小端版本:2147483647 ==> “1bcKL2”9223372036854775807 ==>原创 2021-12-01 18:17:45 · 1060 阅读 · 0 评论 -
如何更精细地调整安卓系统的音量级别?
原生安卓系统只能调出15级音量,而市面上很多已上传的音量APP也只能调整这15级音量,这样的调整方式,级别粗糙,不够贴心。可以用全局均衡器来进一步微调音量,相当于为15个音量级别的每一级额外增加数千个微调等级。构造全局均衡器(应用于系统级别)与构造一般均衡器(APP内部有效)一样,无需 context,却别全局均衡器是传入的 session id 为零:mEqualizer = new Equalizer(999, 0);全局均衡器被一部分官方标注为不推荐,甚至废弃,但没有替代方案,也未被彻底舍弃原创 2021-06-27 15:03:20 · 11701 阅读 · 0 评论 -
如何让安卓的进度条在被触摸后立即开始调整数值?
默认的seekbar,在触摸开始后,不会立即调整数值。只有在触摸停止,或者滑动一段距离后,才会有视觉上的进度变化,这样的进度条,反应太慢,不够灵敏。解决方案:在触摸开始后,手动调用调整进度。sysVolSeek.setOnTouchListener((v, event) -> { if (event.getActionMasked()==MotionEvent.ACTION_DOWN) { try { Method mm = AbsSeekBar.class.getDecl原创 2021-06-27 10:25:26 · 205 阅读 · 0 评论