自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(128)
  • 资源 (12)
  • 收藏
  • 关注

原创 Android 11 (API 级别 30)AppOpsManager.OnOpNotedCallback监听隐私运行时权限调用

一、简介监听隐私运行时权限调用: 此流程在搭载 Android 11(API 级别 30)及更高版本的设备上可用,可让您更好地识别可能出现的意外数据访问。您的应用可以注册 AppOpsManager.OnOpNotedCallback 实例,该实例可在每次发生以下任一事件时执行相应操作:应用的代码访问私密数据。为了帮助您确定应用的哪个逻辑部分调用了事件,您可以按归因标记审核数据访问。依赖库或 SDK 中的代码访问私密数据。数据访问审核是在发生数据请求的线程上调用的。这意味着,如果应用中的第三方

2021-10-27 16:43:51 3362

原创 bytex-refercheck原理解析详细

一、背景及收益升级sdk或更新依赖库后,可能因为库之间依赖的版本号不同,API有变动时会报:NoSuchMethodError 等错误二、ByteX实现原理ByteX是一个基于gradle transform api和ASM的字节码而实现的三、bytex-referCheck 检测插件的整体实现思路:将所有的子插件注册到宿主插件中,并给每个子插件绑定一个TransformFlow【默认为全局MainTransformFlow】宿主插件的Transform方法中遍历执行每个子插件的Transfo

2021-08-28 20:45:51 453

原创 bytex-referCheck原理解析

一、背景及收益升级sdk或更新依赖库后,可能因为库之间依赖的版本号不同,API有变动时会报:NoSuchMethodError 等错误二、实现原理实现思路:在子插件的apply()方法中,将子插件注册到bytex宿主插件扩展类ByteXExtension中,执行transform时遍历构建产物 再交给每个子插件 【节省transform构建时间,添加子插件也不会影响太多整体的编译速度】是是是bytex宿主插件执行ByteXTransform...

2021-08-25 15:43:08 419

原创 Android监听截屏事件

截屏方案对比(截屏事件没有同一的api)方案一:利用FileObserver监听某个目录中资源变化情况优点:操作简单缺点:不同的手机,默认截屏图片储存的文件夹可能不同不同的手机,事件回调可能有些不同FileObserver只能监听文件夹中子文件和子文件夹的变化情况,不能监听子文件夹内部的资源变化方案二:利用ContentObserver用来监听指定uri的所有资源变化【适配R】优点:适配方便缺点:去重麻烦结合方案一方案二优缺点,且项目里已有方案是FileObse

2021-06-21 18:01:00 986

原创 Signal 11 内存地址报错排查

问题:Fatal signal 11 (SIGSEGV), code 2 (SEGV_ACCERR), fault addr 0xaa4f7704 in tid 27693 (AsyncTask #1), pid 27350 这种一般是native层报错,查看backtrace 后的堆栈信息1、可以使用arm-linux-androideabi-addr2line工具 进行NDK调试 【AS的SDK里添加NDK工具安装】2、配置arm-linux-androideabi-addr2line环

2021-06-11 15:45:06 4078

原创 Flutter-2 基本语法

一 内置的基本类型1.数值类型:num 【int 和 double】int x = 1;double y = 1.1;// 继承自num的 取整数round ads取绝对值int z = y.round();dart:math库 提供了三角函数、指数、对数、平方根等函数2. bool ture 和 false3. String 既能用单引号也能用双引号声明可以使用 ${value} 把一个表达式的值放进字符串。而如果是一个标识符,你可以省略{}例如:// 标识符int a

2021-06-06 22:09:43 1930 3

原创 Flutter-3 Dart 中的Mixin (混入)

Dart Mixin【混入】机制一、Mixin[混入]是什么二、Mixin[混入]的优势三、Mixin[混入]使用方式方式一:普通类使用 with 关键字方式二:声明类时 mixin代替class关键字 ,使用时 with关键字四、Mixin[混入]线性化分析场景一:当前使用类重写了该同名方法场景二:当前使用类没有重写同名方法Mixin的线性分析分析 类A的方法调用顺序五、Mixin[混入]的类型一、Mixin[混入]是什么dart官网解释: Mixins是一种可以在多个类层次结构中复用类代码的方式;

2021-06-06 22:09:02 1092

原创 Flutter-1 环境配置+ 基本介绍

flutter中文网flutter mac 环境变量配置FlutterApi一 Flutter 怎么保证在多个平台渲染效果是一样的?Flutter 是重写了一整套包括底层渲染逻辑【Skia底层2D图像渲染引擎】和上层开发语言【Dart】的完整解决方案;二 Flutter的框架图从下到上分为三层,依次为:Embedder、Engine、Framework。详见Flutter官网Embedder 是操作系统适配层,实现了渲染 Surface 设置,Thread设置,Plugin平台插件等平台

2021-06-01 17:57:06 171 2

原创 AS 通过WLAN与设备建立链接

adb官方文档一 adb 的工作原理当您启动某个 adb 客户端时,该客户端会先检查是否有 adb 服务器进程正在运行。如果没有,它会启动服务器进程。服务器在启动后会与本地 TCP 端口 5037 绑定,并监听 adb 客户端发出的命令 - 所有 adb 客户端均通过端口 5037 与 adb 服务器通信。然后,服务器会与所有正在运行的设备建立连接。它通过扫描 5555 到 5585 之间(该范围供前 16 个模拟器使用)的奇数号端口查找模拟器。服务器一旦发现 adb 守护程序 (adbd),便

2021-05-26 19:25:41 323

原创 自定义dialog中设置弹出消失动画

自定义dialog 将setContentView放在dialog 的onCreat()里方法一给dialog中 设置窗口属性 window.setWindowAnimations1-1 给dialog 设置主题 res/values/styles<resources><!-- 设置dialog 主题--> <style name="RequestDialog" parent="@android:style/Theme.Dialog">...

2021-05-22 15:21:35 1622

原创 Dialog 的生命周期

一 :生命周期一共 6个onCreate(),show(),onStart() ,cancel(),onDismiss(),Stop() 。注意:1 当自定义di当将setContentView()

2021-05-22 14:50:12 2769

原创 2021 面试题

一 几种Fragment懒加载方式 资料1 Add + hide+ show 方式 加载 fragment 时 可以搭配onHiddenChanged(boolean hidden)2ViewPager+Fragment 模式下的老方案使用传统方式处理 ViewPager 中 Fragment 的懒加载,我们需要控制 setUserVisibleHint(boolean isVisibleToUser) 函数3Androidx 下的懒加载:Androidx 在...

2021-04-19 19:40:12 203

原创 二叉树 和 平衡二叉树

HashMap 在Jdk1.8 以后 在链表长度超过8以后 把连接转换成 红黑树了原因: 红黑树 效率更高效特殊情况 : 二叉树 退化成链表了 左右两端不平衡,那么此时 二叉树的查询时间 和 链表一样都是O(n)一 平衡二叉树 为了 避免 二叉树退化成链表的极端情况即使元素很多,二叉树的深度 【根节点到子节点的最远距离 】也只有五层查找 二叉树的任一元素 通过二分法 最多查找五次就确定了。从而 一颗二叉树 查找效率是和树的高度有关系的。...

2021-04-10 17:28:13 232

原创 三角函数正弦 余弦

在Rt△ABC(直角三角形)中,∠C=90°(如图所示),∠A的余弦是它的邻边比三角形的斜边,即cosA=b/c,也可写为cosa=AC/AB。余弦函数:f(x)=cosx(x∈R)。正弦:在直角三角形中,任意一锐角∠A的对边与斜边的比叫做∠A的正弦,记作sinA(由英语sine一词简写得来),即sinA=∠A的对边/斜边。sinA = BC/AB...

2021-03-16 21:41:40 4185

原创 OkHttp源码解析三 之 getResponseWithInterceptorChain 网络请求全过程

一 首先分析 RealCall里的getResponseWithInterceptorChain()方法@Throws(IOException::class) internal fun getResponseWithInterceptorChain(): Response { // Build a full stack of interceptors. // 将各种工作的拦截器 加入到 拦截器 list里 相当于模型的链条 val interceptors.

2021-03-12 17:53:14 929

原创 Okhttp 源码解析 二 之 OkHttpClient

一 成员变量 介绍1 dispatcher 线程 调度器2@get:JvmName("connectionPool") val connectionPool: ConnectionPool = builder.connectionPool 连接池作用: 同类对象的批量管理,连接池 可以存储 一批的链接 ,当需要一个连接的时候 不是去创建的,而是连接池里 有没有一个链接可用的,有的话就直接拿走,没有的话 自己创建 或者让连接池 创建,当有一个连接 用完了,不直接 ...

2021-03-10 22:30:32 633

原创 Okhttp源码解析一

简单使用: var okhttpClient: OkHttpClient = OkHttpClient(); var request: Request = Request.Builder() .url("https://square.github.io/okhttp/") .build(); okhttpClient.newCall(request).enqueue(object : Call

2021-03-10 18:19:52 140

原创 AS 创建 车载模拟器时提示 A system image must be selected to continue

打开SDK manager 下载相关system image

2021-02-23 14:57:17 875

原创 Android 车载apk 驾驶模式检测 确保行车安全

一 gradle 依赖添加最新版本号:implementation "androidx.car:car:1.0.0-alpha7"二 在清单文件 所有的activity添加<meta-data android:name="distractionOptimized" android:value="true" />表示这个activity 驾驶模式由我们自己来处理三 在 需要处理的activity 里添加驾驶模式检测 进而控制遮罩非驾驶安全的功能...

2021-02-22 18:59:29 825

原创 Android Studio 生成jks报错

正常通过AS生成签名时会报如下错误然后终端执行 转pkcs12 进入 jks所在目录 执行如下 代码 key1name是要转的jks名字keytool -importkeystore -srckeystore key1name -destkeystore key1name -deststoretype pkcs12如果转前 转后 两次名一样则报如下错误keytool 错误: java.io.IOException: DerInputStream.getLengt...

2021-02-08 10:50:02 1013

原创 jks 转 keystore

先进入包含jks的指定路径1 先将jks转p12keytool -importkeystore -srckeystore qingyun.jks -srcstoretype JKS -deststoretype PKCS12 -destkeystore test1.p122 将p12转keystorekeytool -v -importkeystore -srckeystore test1.p12 -srcstoretype PKCS12 -destkeystore qingyun.keys

2020-12-03 15:38:10 294

原创 Android 判断冷启动 热启动 (应用在前台/ 后台)

冷启动: 在启动应用时,系统中没有该应用的进程,这时系统会创建一个新的进程分配给该应用; 热启动: 在启动应用时,系统中已有该应用的进程(例:按back键、home键,应用虽然会退出,但是该应用的进程还是保留在后台) 冷启动: Application onCreate 在冷启动的时候执行一次Application.ActivityLifecycleCallbacks 监听是用来监听所有 Activity 的生命周期回调 :可判断应用前后台/ 热启动appl..

2020-10-15 15:18:07 4568 1

原创 常用的数据结构与算法一

常用的数据结构与算法一一 常用的数据结构有: 数组,字符串【array String】 链表【linked-list】 栈【Stack】 队列 【Queue】 双端队列【deque】 树【tree】 数组优缺点: 优点: 1...

2020-06-20 17:18:10 122

原创 app\build\intermediates\res\resources-lemon_wap-LemonReader-stripped.ap_' specified for property '

1 打release包时 minifyEnabled 和shrinkResources 都开启时 报如下错误:1 : app\build\intermediates\res\resources-lemon_wap-LemonReader-stripped.ap_' specified for property 'resourceFile' does not exist2 :Xml pa...

2020-03-25 19:20:25 193

原创 AS Build Output 栏内汉字出现乱码的解决方案

解决方案:1:全局搜索"双击shift",搜索Edit Custom VM Options;2:进入第一个文件中, 添加‘-Dfile.encoding=UTF-8’3:修改出问题的文件的编码,在Android studio右下角重新选择UTF-84:重启As 备注:如果重启后AS无法正常启动 我们得在C盘 用户 文件夹搜索“studio64.exe.vmoptions...

2020-03-25 19:11:34 1491 2

原创 VelocityTracker 速度跟踪api

帮助器用于跟踪触摸事件的速度,用于实现投掷和其他此类手势。用于obtain()在开始跟踪时检索类的新实例。将收到的动作事件放入其中addMovement(MotionEvent)。当你想确定速度调用computeCurrentVelocity(int)然后调用getXVelocity(int)并getYVelocity(int)检索每个指针id的速度。 ...

2019-09-11 16:35:49 264

原创 Scroller中文api

构造函数 Scroller(Contextcontext) 创建具有默认持续时间和插值器的滚动条。[context:上下文] Scroller(Contextcontext,Interpolatorinterpolator) 使用指定的插插器创建滚动条。 [context:上下文int...

2019-09-11 16:17:54 210

原创 The SourceSet 'instrumentTest' is not recognized by the Android Gradle Plugin.

解决办法用 androidTest 替换 instrumentTest,编译运行即可。

2019-09-03 16:00:53 442

原创 AS3.5 升级后 Unable to resolve dependency for和Could not resolve project

把implementation project(':xxx')改为:implementation project(path: ':xxx', configuration:'default')

2019-09-03 15:37:26 392

原创 解决设置.gitignore忽略.idea不起作用的问题

情景: 第一次提交前 没有在.gitignore 中声明,.idea,之后声明不起作用// 1清除缓存git rm -r --cached .// 2将要忽略的文件 添加到 .gitignore中// 3添加文件git add .// 4再次提交git commit -m 'update .gitignore'git push origin master...

2019-08-23 17:49:38 1041

原创 Android 小说阅读护眼模式

Android 小说阅读护眼模式实现方案:采用全局dialog 覆盖APP 悬浮在 其他APP之上,给dialog设置护眼色值自定义护眼模式dialogpublic class EyeProtectionDialog extends Dialog { ImageView iv; publ...

2019-08-20 18:55:48 967

原创 RecyclerView 获取第一个曝光最大的itemposition

获取指定view 在屏幕中坐标 int[] location = new int[2];view.getLocationOnScreen(location); int x=location[0];//获取当前位置的横坐标 int y=location[1];//获取当前位置的纵坐标竖向滑动: public int getCurrentViewIndex...

2019-06-28 13:12:20 377

原创 Python 读取指定文件夹下 以某种格式结尾的文件名字 并写入 TXT中

import osimport os.pathrootdir = "C:\\Users\\xu\\Desktop\\ss"file_object = open('C:\\Users\\xu\\Desktop\\ss\\train_list.txt','w')for parent,dirnames,filenames in os.walk(rootdir): for filename...

2019-06-18 15:28:32 6741

原创 PaintFlagsDrawFilter canvas 抗锯齿

Android 中抗锯齿两种方式出现锯齿场景:① 当我们用Canvas绘制位图的时候,如果对位图进行了选择,则位图会出现锯齿。② 在用View的RotateAnimation做动画时候,如果View当中包含有大量的图形,一 : canvas ...

2019-05-14 14:06:56 1767

原创 Dialog设置全屏显示到状态栏

public ReadTopUtilsDialog(@NonNull Context context, View contentView) { super(context, R.style.ActionSheetDialogStyle); this.contentView = contentView; Window window = this.ge...

2019-04-23 18:10:33 4826 1

原创 Math.atan与Math.atan2

一 返回极坐标 : public static double Atan2(double y,double x)参数y 类型System.Double点的 y 坐标。x类型:System.Double点的 x 坐标。角度θ,以弧度为单位,满足 -π≤θ≤π,且 tan(θ) =y/x,其中 (x,y) 是笛卡尔平面中的点。请看下面: 如果 (x,y...

2019-04-12 15:43:41 2238

原创 Drawable / GradientDrawable 等 相关api

一Drawable setBounds() 注:Drawable.setBounds(int left,int top,int right,int bottom); 四边 永远平行坐标系x y 参数一 left 为矩形左侧距离y坐标系的距离 top为矩形区域上方距离x坐标系的距离 right 为 右侧 y坐标系距离的距离 ...

2019-04-12 13:42:14 328

原创 GradientDrawable 渐变背景使用

GradientDrawable 为动态设置背景 对应 的xml 为shape静态设置一 支持的形状和shape 一样 设置方法:public void setShape(int shape)/** * Shape is a rectangle, possibly with rounded corners */矩形 public stat...

2019-04-09 15:05:01 648

原创 自定义view之Canvas构造 new Canvas(Bitmap)中对canvas和bitmap的关系

一Canvas的定义:The Canvas class holds the "draw" calls. To draw something, you need 4 basic components: A Bitmap to hold the pixels, a Canvas to host the draw calls (writing into the bitmap), a drawing...

2019-03-06 14:16:55 2806

转载 通过反射获取当前Activity实例

转自:https://blog.csdn.net/baidu_31093133/article/details/52785580步骤:1、 获取ActivityThread中保存的所有的ActivityRecord 2 、从ActivityRecord中获取状态不是pause的Activity并返回,这个Activity就是当前处于活动状态的Activitypublic stati...

2019-02-25 16:31:39 2508 1

jacococli工具包

jacoco工具包

2023-01-03

read_file_name.py

python 读取指定目录下过滤指定类型 获取文件名写入TXT中

2019-06-18

无限轮播Viewpager

自定义无限轮播viewpager 加引导图 处理拖拽,无限循环

2018-04-04

自定义日期选择控件 三级联动

安卓自定义日期选择控件 三级联动,仿ios 自定义控制显示效果

2018-04-04

RangeSeekBarProgressbar

自定义双向滑动bar 拖动进度显示,双向截取控件,,,,

2017-12-17

RangeSeekBar

自定义滑动seekBar 滑动进度,,双向滑动控制view,

2017-12-17

自定义读取本地视频缩略图

通过读取本体媒体库,读取本地视频缩略图,在recycler显示

2017-11-25

自定义选择本地媒体demo

自定义媒体库,浏览本地视频 ,本地音乐,,本地图片,

2017-11-25

圆形进度条

自定义圆形进度条 进度边缘 笔帽 (圆角进度)显示

2017-11-25

python脚本

python打包脚本预埋信息,可通过zipComment拿到注入app的信息,,app打开时处理。python打包脚本预埋信息,可通过zipComment拿到注入app的信息,,app打开时处理。

2017-09-02

GreenDao3.2.2集成与使用

GreenDao的集成与使用

2017-06-20

安卓全局异常捕获处理

安卓全局异常处理

2017-06-16

空空如也

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

TA关注的人

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