自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

章鱼哥的博客

IT分享,个人感受。

  • 博客(56)
  • 资源 (1)
  • 收藏
  • 关注

原创 Java 反射 “实现动态代理” —— 进阶使用(二)

上一篇 叙述了Java 反射的基础使用 Java 反射“简单易懂版“ —— 基础使用(一) ,那么今天来看一下 【进阶使用场景】1、反射静态方法静态方法不属于对象,属于类本身,调用静态方法 可以直接使用 Class.Method()所以在调用invoke时也不用传入对象 传入null 即可public class MyStaticTest { public static void main(String[] args) { try { .

2022-01-15 13:34:28 122

原创 Java 反射“简单易懂版“ —— 基础使用(一)

Java 反射 “简单易懂版” —— 基础使用(一)反射的功能虽然不常用,但是页偶尔回出现 “书到用时方恨少” 的情况,索性今天来将他搞扎实些,同时希望能帮助到有同样需求的同学~

2022-01-13 23:19:20 298 1

原创 Gradle 的使用

Gradle 的使用相信对于大多数 Android dev 而言,Gradle 是一个熟悉又陌生的存在(手动狗头~)天天看见它,但是有问题时只能照搬网上的例子(谁不是呢~哦嚯嚯~)所以今天来说说它怎么用吧!按照惯例先来个 “Hello World” (此致敬礼~)运行指定任务:grade -q + 任务名如 gradle -q helloTktask helloTk { doLast{ println 'Hello World' }}// 打印:Hello Wor

2021-10-17 11:08:07 405

原创 # Kotlin 系列之Flow (四)组合与完成

Kotlin 系列之Flow (四)组合与完成Hello I`am Flow Welcome to Flow Unit 4这次来聊聊,Flow 的 组合 与 完成Flow 组合顾名思义:就是将 flow 与 flow 组合起来执行1 、zip 操作符用过RxJava 的同学对 zip 一定不陌生吧Flow 的 zip 的作用也几乎一致的就是将 flowA 中的一个 emit 和 flowB 中对应的一个 emit 进行合并,再次做为结果传递给 终止操作!Examplefun

2021-09-06 22:03:15 3501 2

原创 Kotlin 系列之Flow (三)执行顺序

Kotlin 系列之Flow (三)执行顺序Hello I`am Flow Welcome to Flow Unit 3这次来聊聊,Flow 的执行顺序 与 执行优化Flow 的执行顺序对于Flow的收集操作来说 ,他是运行在调用终止操作的那个协程上,默认情况下 它是不会启动新的协程。每发射一次 emit 发射的元素都会 经历所有的中间操作,最后在 终止操作被处理。(MD 就是从上到下走一遍)Examplefun main() = runBlocking { (1..3).as

2021-09-05 13:00:29 881

原创 Kotlin 系列 之 Flow(二)中间运算符

Kotlin 系列 之 Flow(二) 中间运算符Hello I`am Flow ,Welcome to Flow Unit 2说到 中间运算符 ,用过 RxJava 的同学可能会想,难道是命运的安排 ?我想说:这就是命啊!~ 他两的关系就是 (PX剑谱 和 KH宝典)PS:Flow 的中间 运算符内的代码块 是可以 调用挂起函数的Example 1 (耳熟能详的 map 、filter)map :对结果进行加工后继续向后传递filter : 对待操作的值 进行过滤private

2021-09-04 13:40:42 472

原创 Kotlin 系列 之 Flow (一)

Kotlin 系列 之 Flow (一)Hello I`am Flow , 一看到 Flow 就会很自觉的将它跟 【线程 同步 异步 阻塞】 …巴拉巴拉联系到一起我想说,这就对了!所以在介绍Flow 之前,先来参观一下我们之前的撸码场景:Example 1一次性返回 所有结果,阻塞线程 ,如果List 中的每个元素都需要很长时间,或者List很长的话。。。 (脑补上厕所pang guang炸裂~)差评!private fun myMethod() : List<String&gt

2021-08-30 21:45:12 610 1

原创 Monkey MonkeyScript And MonkeyRunner

monkeyTestAdb : Android Debug Bridge1、configuration 环境变量 tools ; platform-tools2、adb devices 确认连接设备 ; 未连接上 adb connect 127.0.0.1:52001 或者 62001 (夜神设备名称)8a791904 (我的手机)3、adb shell - > cd /system/bin4、cat monkey - > $base/framework

2020-11-06 07:54:44 238

原创 Kotlin 中 let、with、run、apply ‘标准函数 ’ 和 ‘ 静态方法 ’ 的使用

本文会介绍 部分 标准函数 和 静态方法 的使用,算是kotlin的一些高级小技巧,走起来~~一、let、with、run、applylet它主要是结合 ’ ?. ’ 进行判空的辅助,例如: var userBean:UserBean ?= null userBean?.let { //如果userBean为空,let空间的代码就不会执行了 println(it.name) }with它主要的对代码 进行一些精简的作用,比如我们要使用一个对的对象的方法.

2020-10-17 22:34:40 262 3

原创 Recycler View 性能优化 (你必须知道的几点)

Recycler View 性能优化 (你必须知道的几点)ViewHolder基本原理 :使不使用 ViewHolder 都在复用 convertView ,区别,是 findViewById 的性能节省。ListView 缓存机制Active View在 Active View 中的item ,在滑动过程中,listView 自动帮我们复用了,不会再走getView()方法凡是调用了 getView() 视图都需要重新绑定。Scrap ViewScrap View

2020-09-03 17:57:09 1246

原创 Okhttp 的核心方法 getResponseWithInterceptorChain()(三)

Okhttp 的核心方法 getResponseWithInterceptorChain()(四)了解这个方法,以及它内部调用的方法,我们就能知道 OKHttp 是怎样完成了 Http 的工作 和 OkHttp整个网络请求/响应过程中都做了什么事情。getResponseWithInterceptorChain() 方法在 RealCall 的 内部类 AsyncCall(AsyncCall实现了 Runnable) 的 run 方法中 其内部维护了一个,Interceptor (雁过插毛器

2020-08-27 17:14:58 416

原创 Android 11 适配、变动、以及 新的能力

Android 11 适配、变动、以及 新的能力适配1、文件存储分区好好管理你应用文件夹,别再乱用了AndroidQ文件存储适配Android Q(10) 文件存储适配AndroidQ(10)分区存储完美适配android10以上 uri转file2、Android 10 还没适配的要抓紧啦~关于Android 10.0适配,看这篇就够了官网地址 文件分区官方文档中也说明了,想要操作公共目录,使用 ContentResolver去进行一切 增删改查:变动1、AsyncTas

2020-08-21 18:16:17 1886

原创 Android 视频播放器(一) 使用 MediaPlayer

Android 视频播放器(一) 使用 MediaPlayer本文使用Kotlin 编码(提高一下Kotlin的熟悉度 _!),使用 MediaPlayer 结合 Lifecycler ViewModle,完成视频播放的横竖屏切换,状态UI的隐藏话不多少,上代码编写 ViewModel ,在 ViewModel 中完成对视频的 【准备工作监听】,【尺寸变化的监听】PlayerViewModel.ktclass PlayerViewModel:ViewModel(){ va

2020-07-24 14:07:12 1663 2

原创 Android 动画之 Motion Editor / SVGA / Lottie

Android 动画 SVGA 、 Lottie 与 Motion Editor目前在直播时,我们会看到很多非常 酷炫的动画,通常会使用 Lottie 或者 SVGA 格式输出。Lottie 、 SVGA是对图片内容进行动画;两种各有优劣,lottie包含图片会很大,但能够在mac上支持ae的图层颜色渐变(svga不支持)(1) 相关的网站用过的都说好,SVGA官网:https://svga.io/index.html图片压缩网站:https://tinypng.com/

2020-06-30 16:30:53 1666

原创 AndroidX 之 使用WorkManager 解决后台任务

Android WorkManager使用 WorkManager Api 可以轻松的调度即使在应用退出或者设备重启时仍应运行的可延迟一步任务用统一的方法解决绝大部分后台问题[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uAZ8utmM-1593253767829)(C:\Users\00\AppData\Roaming\Typora\typora-user-images\image-20200624181222641.png)]一、使用引入 impleme

2020-06-27 18:30:30 2361

原创 Flutter 之旅(四)—— Provider 状态管理

Flutter 之旅(四)—— Provider 状态管理在 flutter 开发中,我们经常会遇到,页面之间传值、以及状态管理 等操作,官方在最早提出的方案是在 StatefulWidget 中去处理,但是此方案非常繁琐切容易出错,对刚入门的新手非常不友好。。随后市面上就出现了一些解决方案,其中 最火的是 Redux ,其思想来源于前端,对与移动端的开发者(本人恰好就是)理解起来会话一些时间。。 又兴趣的同学可以自行了解一下 https://blog.csdn.net/xcf111/article/

2020-06-07 21:30:09 735

原创 Kotlin 高阶函数,匿名函数,Lambda

Kotlin 高阶函数 / 匿名函数 / Lambda高阶函数 / 匿名函数 / Lambda高阶函数 : 参数类型 或者 返回值 为 函数类型的函数 ,就称作 高阶函数。匿名函数: 函数类型的对象,可以作为参数传递, 它它它!不是函数 注意Lambda:同理 也是一个函数类型的对象PS:怎么使用"::" 加 函数 => ‘::’ 标示函数引用,会拿到一个 函数的对象 ;注意不是函数本身!就怎么使用 匿名函数,就怎么使用 Lambda示例代码记录1. b 函

2020-05-29 16:20:20 378

原创 Kotlin 协程 ‘素质双连’

Kotlin 协程 ‘素质双连’第一弹、基本使用 与 基本原理先上示例val repos = api.listRepos("getUserInfo") //后台线程textView.text=repos[0].name // 前台线程使用上下两行的连续调用的方式 SO 酷!sAndroid 下引入:implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.0-M2'implementation "org.jet

2020-05-29 14:57:46 238

原创 CSS3 属性样式总结记录(图文)

CSS3 属性样式总结记录1 、边框-背景border-image设置所有边框图像的速记属性。3border-radius一个用于设置所有四个边框- *-半径属性的速记属性3box-shadow附加一个或多个下拉框的阴影代码1-1 边框div{ border:2px solid #11a1a1a1; padding:10px 40px; background:#fff; width:300px; border-radius:25px; c

2020-05-23 14:28:41 1502

原创 Kotlin 扩展属性、扩展函数

Kotlin ---- 扩展属性、扩展函数在原有类的基础上,增加功能,及不用改源码,也不用写子类!简单的示例扩展属性val Float.dpTOpx get()= TypedValue.applyDimension( TypedValue.COMPLEX_UNIT_DIP,this, Resources.getSystem().displayMetrics)val Float.pxTOdpget() = this/Resources.getSys

2020-05-17 19:43:02 556

原创 OKhttp3 源码解析(二)OkHttpClient 大管家

OKhttp3 源码解析(二)OkHttpClient (大管家)的配置参数解析这一期来一一解读,OkHttpClient 中的 参数对象是干什么的Dispatcher (调度器) :负责控制 最大请数‘64’ 和 单服务器 最多连接数‘5’connectionPool (连接池):类似于 线程池,当有 ‘连接’处于空闲状态,就不创建新的资源了,interceptors ...

2020-04-01 09:09:50 392

原创 Flutter 之旅(三) —— 常用控件记录

Flutter 之旅(三) —— 常用控件记录将Flutter 中一些,常用的控件以及常用参数做一下记录方便之后忘记了查询学会这些控件,我们就可以尝试着去构建一些简单的页面啦!!一,Text Weight child: Text( 'hellowidget1asda123123123asdasdasd123sdasdasdasdasda...

2020-03-26 16:30:53 284

原创 OKhttp 源码解析(一)

OKhttp 源码解析(一)这一期我们先从 Okhttp 发送求情 到 收到响应这个过程的主体框架进行的了解,**后面几期在逐步深入源码细节。**让我们一起来学习吧(~ _ ~)!(Okhttp 从4.0开始都逐步换成Kotlin ,所以我们看的源码也都用Kotlin吧)OKhttp地址友情提醒:大家阅读源码的时候,最好是从使用场景出发,从你熟悉的 API 进入源码,有目的性的去逐步...

2020-03-25 14:43:06 204

原创 适配Android Q 图片选择器(超好用) ImageSelectorMore

Android 图片选择器(超好用) ImageSelectorMore由于项目需要,在GitHub上找了一些图片选择器的项目,轻松完成了需求,但是。。。后面需求升级了,需要加入视频选择(可预览),后面有加上了 ‘ 图片标注 ’ 功能 这。。。看了一下网上的项目,大都不支持视频,然后决定将之前用的 ImageSelector改造了一下,希望能帮助到 有同样需求的童鞋。主要功能:图片+...

2020-03-09 10:18:10 2944 6

原创 升级AndroidX 采坑

升级AndroidX 采坑先说说我为什么要将项目升级到 AndroidX1、官方推荐 :会在AndroidX 中加入新特性 ,但不会加入 support 包中,同时也是为了,整合臃肿的 support 包。2、在升级 gradle 到 3.4.2 之后 项目就默认 是AndroidX了3、我在新需求中,需要 竖直方向的 ViewPager “ 网上有很多 自定义实现的,效果都不太好 ” ...

2020-01-08 15:06:34 560 1

原创 2019再见,2020你好! 继续 “做时间的朋友”

2019再见,2020你好!2019再见经历了很多事情,比18年多很多,这些事情,让我欢喜也让我忧,同时让也我收获成长!先说欢喜的,从技术岗位升了一级 即 ‘P+1’,来的也很突然,那天领导在dingding上跟我说,你提一下晋升申请吧,当时我刚游完泳在回家的路上(内心喜出望外 嘿嘿)。自己的工作得到了,领导的认可,自然是很有成就感的,也说明自己的努力没有白费 ~ ~加油!随后因为一些...

2020-01-02 20:50:58 546

原创 别再if-else 走天下了

别再 if/else 走天下了转载地址:https://mp.weixin.qq.com/s/ufRf8DQQRYQI0q2VxG3hQg一 初衷我们在开发中,经常会遇到一个系统,有多种角色构成。业务之间也会产生层级管理,权限划分等场景。在使用 if/else 乐此不疲的时候 我们通常会将代码写成下面的样子: if (roleName.equals("ROLE_ROOT_...

2019-12-12 17:34:37 398

原创 2019 开启Flutter之旅(二) 使用包资源

2019 开启Flutter之旅(二) 使用包资源使用Dart包资源我们一开始使用 flutter 开发App 的时候肯定会想,我以前用的很顺手的第三方包(命根子),突然就不让用了这可怎么办~~ 别慌 我们来看看 Dart的开源库怎么集成。一 , 如果是国内用户(没有科学上网的情况)配置环境变量先。Linux 或 Mac export PUB_HOSTED_URL=https://...

2019-06-04 18:23:00 456

原创 ConstraintLayout—新特性

ConstraintLayout 新特性1 基线对其 layout_constraintBaseline_toBaselineOf <TextView android:id="@+id/btn1" android:text="按钮1" android:textSize="26sp"/><TextView android:id="@+id/b...

2019-03-29 14:42:45 3194 2

原创 优化Android 布局 —— ConstraintLayout

来来来 一起使用 ConstraintLayout好吧按照惯例 先来“吹一波”ConstraintLayout 的性能优势减少嵌套 ,尽可能的保持 扁平的的视图结构如下图:使用 ConstraintLayout 和 RelativeLayout 的对比ConstraintLayout 在测量/布局阶段的性能比 RelativeLayout大约高 40%:可以实现 拖拽绘制...

2019-03-21 17:38:59 257

原创 2019 Flutter 之旅 (一)环境搭建 (Window和Mac)

2019 开启 Flutter 之旅 (一)‘环境搭建’基本上按照 官网上说的的步骤就可以了,但是在windows上还是遇到一些问题。下面说说在Window上搭建环境的集体步骤(官网上说的没有太清楚)下载 安装 git (之前安装过的请忽略)使用git 下载 flutter ——&amp;gt; git clone https://github.com/flutter/flutter.git (...

2019-02-11 17:39:03 497

转载 APK 瘦身大法

Android Apk 瘦身大法原文地址: https://mp.weixin.qq.com/s/XS0tuLgTfyp4rW4h69wyQQ一, 我们在多人开发项目 或者 遗留项目中开发时,会有些自己没用到的资源文件,但是自己也没有把握删除,怕早还曾一些不可预估的问题。解决: Android studio 中 Refactor -&amp;gt; Remove Unused Resource...

2019-01-30 15:03:44 346

转载 SVN的使用 and 遇到的问题

SVN的使用 and 遇到的问题之前一直是使用git的,但是新入职的这家公司,还是在使用SVN (流汗)。SVN(tortoiseSVN)的基本使用还是很简单的,使用了一段时间没有什么问题。但是目前遇到了一个状况,比如:老本着急上线一个版本V1.0 但同时:有很多功能的V2.0也在开发中。针对V1.0又提出了,很多修改意见。那么,我的方案是新开一个【releasV1...

2019-01-23 17:42:42 5458

原创 融云IM整理(2)API

融云IM整理(2)API消息管理部分与融云断链后 接收消息的广播自定义广播接收器当您的应用处于后台运行或者和融云服务器 disconnect() 的时候,如果收到消息,融云 SDK 会以通知形式提醒您。所以您还需要自定义一个继承融云 PushMessageReceiver 的广播接收器,用来接收提醒通知。示例代码如图:public class SealNotificationRece...

2019-01-23 10:14:31 1754

原创 融云IM整理 01--- (API)

融云IM整理 01— (API)###常用的的方法有获取Token链接融云服务器发文本消息发送图片消息发送语音消息发送文件消息发送自定义消息插入消息(只在本地存储,不发送)获取本地未读消息数读取本地存储的历史消息读取远程服务器的消息获取位置共享信息获取会话(Conversation)信息删除会话(Conversation)信息清空消息断开连接, 继续接收Push...

2019-01-21 15:10:50 862 2

转载 RecycleView 滑动定位

RecycleView 滑动定位今天,看了篇文章 作者:点先生在这链接:https://www.jianshu.com/p/7734ae5f149c是来讲 RecyclerView 滑动定位的知识的感觉写的很好。所以在这里做个记录,方便自己以后看。...

2019-01-18 11:21:32 293

原创 Android微信支付“返回商家” 闪屏问题修复

Android微信支付“返回商家” 闪屏问题修复。在网上看了很多解决方案,大多都给 WXPayEntryActivity 加上一个 透明主题(效果有所好转,但还是差点意思)。分析:感觉在 WXPayEntryActivity 页面 finish 之前还有别的页面(有可能是WXPayEntryActivity 启动了多次)。所以改换WXPayEntryActivity的启动模式并且 设...

2019-01-15 22:36:25 1080

原创 2019 — 让我们“做时间的朋友”

2019 —— 让我们“做时间朋友” (一)2018年的最后一天,从早到晚一整天的排很充实,从坐车赶回家开始,到和家人一起吃饭、分享人生经验,到一起逛商场(等待他们买衣服的我无聊的去和小朋友们打电子游戏,还被偷拍了‘捂脸’),总之一天过的很快乐。 还有与往年不一样的是晚上跨年节目我是选择的“罗胖”的跨年演讲,从中收获很多,里面力道的很多点都很有感触。“做事的人” 和 “不做事的人” 这两种人区...

2019-01-02 22:58:23 1241

原创 RecyclerView 的核心知识(干货~~)

RecyclerView 的核心知识说道 RecyclerView 就不得不想起他的 前辈listView,RecyclerView 的 出现解决了ListView的一些问题。下面就说一下二者在缓存上面的区别。ListView 的缓存它分为两层缓存1 Active View (在屏幕内部,可视部分的缓存)2 Scrap View (滑出屏幕部分,不可见部分的缓存)RecycleBe...

2018-11-26 22:45:34 224

原创 RxJava2.0 学习(2)----实际使用场景 2019年

RxJava2.0 学习(2)----实际使用场景 2018年###看了 nanchen 大神得 Rxjava2.0 demo 自己做下总结###demo地址https://github.com/nanchen2251/RxJava2Examples0 线程切换subscribeOn() 指定的就是发射事件的线程,多次调用 subscribeOn() 只有第一次的有效observer...

2018-11-22 15:36:13 594

FFmpeg 编译出的 音频专用 so 库(arm64-v8a,armeabi-v7a平台)

导入项目直接使用, 如果您想自己编译so文件,并在编译过程中遇到了问题 请留言。QQ:287651776

2020-10-17

空空如也

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

TA关注的人

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