- 博客(184)
- 资源 (17)
- 收藏
- 关注
原创 AndroidStuio插件开发-适用于jetbrains全家桶
文章目录创建项目创建类获取文件解析文件展示解析内容写入文件写了个类似Butter Knife的开发库,但是并没有与其配套的AndroidStudio插件,抽时间研究了以下IDEA的api文档,撸了一个对应的插件,源码在这里代码参考https://github.com/avast/android-butterknife-zelezny所用到的知识点:查找文件解析xml写文件IDEA插件开发文档:https://jetbrains.org/intellij/sdk/docs/intro/welc
2020-12-15 10:16:39 935
原创 自定义Gradle-plugin
groovy 语法入门gradle 基础gradle 任务gradle 插件gradle-java 插件gradle-android 插件前面简单的写了点关于gradle的以及gradle插件的东西,现在我们来看一下如何自定义插件,本篇文章是基于AndroidStudio、Android工程进行讲述。存放插件源码我们可以在以下几个地方存放我们的插件源码Build Script每个module中都会有build.gradle文件,我们可以在该文件中编写一些所需要的插件功能,好处是可以被自
2020-11-29 18:13:40 1356
原创 Android打包流程
文章目录构建过程初见细节终章现在的Android开发大部分是在AndroidStudio中进行的,当我们想要得到APK文件的时候,点一下RUN,或者执行一下gradlew assembleDebug 就可以了,那么在这个过程中到底发生了什么,我们来详细看一下。构建的过程大致可以划分为两个过程:编译和打包编译:编译器(compileer)通过编译source code、AIDL files、source filse、dependednce files,最终生成Dex(s)文件和编译后的资源文件打包:打
2020-11-16 23:14:53 3177 1
原创 面试总结
2018-06-03 14:30:54文章目录操作系统相关:进程和线程的区别线程调度算法内存页面置换算法java相关:synchronized 和Lock的区别 以及实现原理Map、Set、List区别Java虚拟机捕获子线程异常线程池单例模式 线程安全Android相关:多进程写sp的问题sp底层实现Activity和Fragment生命周期,生命周期函数是谁调用的Activity启动模式,启动过程View点击事件分发流程View绘制过程Handler省电优化广播的底层实现(binder)计算机网络相关
2020-11-06 07:54:52 311
原创 通过简单的自定义view来看View的工作流程
2017-03-18 14:54:01文章目录一、自定义View的分类1.1 继承View重写onDraw方法1.2 继承ViewGroup派生特殊的Layout1.3 继承特定的View(如TextView)1.4 继承特定的ViewGroup二、值得注意的地方2.1 让View支持wrap_content2.2 如果有必要,让View支持padding2.3 尽量不要在View中使用Handler,没必要2.4 及时停止动画和线程2.5 View带有滑动嵌套情形时,需要处理好滑动冲突三、自定义View
2020-11-06 07:50:17 146
原创 适配全面屏手机
2018-11-12 20:05:56文章目录显示问题在AndroidManifest.xml声明max_aspect值更换资源文件关于折叠屏放个图感受一下,上面的图是折叠屏,并非是全面屏,全面屏是手机业界对于超高屏占比手机设计的一个宽泛的定义。全面屏手机屏幕的宽高比例比较特殊,不再是以前的16:9了。比如三星的Galaxy S8屏幕分辨率是:2960×1440,对应的屏幕比例为:18.5:9。VIVO X20手机屏幕分辨率是2160x1080,对应的屏幕比例:18:9。由于全面屏手机的高宽比比之前大,
2020-11-04 08:07:55 365
原创 适配Android高版本系统常见问题
2019-04-17 18:03:41文章目录文件操作(FileOperationActivity)拍照、选择图片(TakePhotoOrChoosePhotoActivity)存储访问框架(SAFActivity)通知管理(NotificationActivity)权限申请(MainActivity)快捷方式(ShortCutActivity)Android P,Q 版本适配常见问题项目地址 https://github.com/huangyuanlove/AdaptationAndroidP文
2020-11-04 08:00:36 1273
原创 自定义注解,打造自己的框架-最终篇
2019-12-12 21:42:27文章目录前提声明注解处理注解逻辑给使用者提供调用方法使用结语该系列介绍自定义注解,完成如下功能。 @BindView 代替 findViewById @ClickResponder 代替 setOnClickListener @LongClickResponder 代替 setOnLongClickListener @IntentValue 代替 getIntent().getXXX @UriValue 代替 getQueryParameter @B
2020-11-04 07:59:07 152
原创 自定义注解,打造自己的框架-下下下篇
2019-12-10 23:27:06文章目录前提声明注解处理注解逻辑给使用者提供调用方法使用该系列介绍自定义注解,完成如下功能。 @BindView 代替 findViewById @ClickResponder 代替 setOnClickListener @LongClickResponder 代替 setOnLongClickListener @IntentValue 代替 getIntent().getXXX @UriValue 代替 getQueryParameter @Bro
2020-11-04 07:57:59 150
原创 自定义注解,打造自己的框架-下下篇
2019-12-09 23:21:08文章目录前提声明注解处理注解逻辑给使用者提供调用方法使用该系列介绍自定义注解,完成如下功能。 @BindView 代替 findViewById @ClickResponder 代替 setOnClickListener @LongClickResponder 代替 setOnLongClickListener @IntentValue 代替 getIntent().getXXX @UriValue 代替 getQueryParameter @Bro
2020-11-04 07:57:19 127
原创 自定义注解,打造自己的框架-下篇
2019-12-04 22:53:52文章目录结构声明注解声明注解处理器处理注解逻辑给使用者提供调用方法使用该系列介绍自定义注解,完成如下功能。 @BindView 代替 findViewById @ClickResponder 代替 setOnClickListener @LongClickResponder 代替 setOnLongClickListener @IntentValue 代替 getIntent().getXXX @UriValue 代替 getQueryParamete
2020-11-04 07:56:41 207
原创 自定义注解,打造自己的框架 (中篇)
2019-12-01 17:42:27文章目录javapoet反射该系列介绍自定义注解,完成如下功能。 @BindView 代替 findViewById @ClickResponder 代替 setOnClickListener @LongClickResponder 代替 setOnLongClickListener @IntentValue 代替 getIntent().getXXX @UriValue 代替 getQueryParameter @BroadcastResponde
2020-11-04 07:56:00 150
原创 自定义注解,打造自己的框架(上篇)
2019-11-23 23:09:29文章目录常见的注解:太长不看系列总结注解的声明反射实现该系列介绍自定义注解,完成如下功能。 @BindView 代替 findViewById @ClickResponder 代替 setOnClickListener @LongClickResponder 代替 setOnLongClickListener @IntentValue 代替 getIntent().getXXX @UriValue 代替 getQueryParameter @Broa
2020-11-04 07:54:37 156
原创 自定义View--贝塞尔曲线、Shader
2019-01-20 21:56:52文章目录贝塞尔曲线的应用手势追踪,改变moveTo、LineTo生硬路径现象波浪效果望远镜效果(点击哪里则哪里出现图像)贝塞尔曲线可以将Path中的moveTo、LineTo等连接的生硬路径变得平滑,也能实现很多好看的效果。一阶贝塞曲线B(t)=P0(1−t)+tP1,t∈[0,1]B(t)=P_0(1-t)+tP_1,t\in[0,1]B(t)=P0(1−t)+tP1,t∈[0,1]二阶贝塞尔曲线B(t)=P0(1−t)2+2t(1−t)
2020-11-04 07:52:14 496
原创 网站免费升级https
2018-04-01 12:36:16文章目录昨天跟着酷壳网左耳朵耗子的文章把自己在亚马逊主机上的网站变成https的安全访问了,证书不是自签名的,也不是花钱购买的。据说https的网站在搜索引擎中的rank值会比http的更高一些。升级完成后的浏览器截图如下:下面是这次升级的记录。为网站开启https安装证书非常简单,我用的是 Let’s Encrypt 这个免费的解决方案。打开https://certbot.eff.org/这个网页在Software 和 System选项里面选择
2020-11-04 07:49:23 1192
原创 简单的桌面小部件
2017-03-20 11:51:11文章目录定义小部件界面定义小部件配置信息定义小部件的实现类实现一个简单的桌面小部件,响应点击事件,更新等功能。定义小部件界面定义小部件配置信息定义小部件的实现类声明小部件在AndroidStudio中只需要在main\java下新建一个widget,就可以了,IDE会自动在res\layout添加布局文件,在res\xml下新建配置信息文件。然后就可以进行具体实现了。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tM
2020-11-03 22:02:50 805
原创 正则表达式--上
2020-09-24 20:05:59文章目录写正则过程正则功能正则元字符量词与贪婪贪婪匹配(Greedy)非贪婪模式(Lazy)独占模式总结分组与引用分组与编号不保存子组括号嵌套命名分组分组引用分组引用在查找中使用分组引用在替换中使用匹配模式不区分大小写模式(Case-Insensitive)单行模式多行匹配模式(Multiline)注释模式(Comment)断言单词边界(Word Boundary)行的开始或结束环视( Look Around)环视与子组如果你有一个问题,你想到可以用正则来解决,那么
2020-11-03 22:01:28 144
原创 树莓派安装owncloud
2019-08-03 22:45:08文章目录安装系统安装 owncloud所需环境检查php环境是否可用下载owncloud源码并部署访问owncloud并配置其他买了个新玩具:树莓派3b+,挺好玩。一个开发板(包含cpu、内存、网卡、usb接口)。一张扩展卡(内存卡,就是之前手机上用的那种TF拓展卡,用来装系统,开发板上有专门的卡槽用来安装扩展卡)。一根网线(其实开发板上是有无线网卡的,据说配置起来听麻烦,就用网线上,插上就能用)一根HDMI视频线,毕竟安装系统的时候可能会用到其他配件
2020-11-03 22:00:28 817
原创 如何发布开源库到jcenter
2019-11-04 22:24:26文章目录准备上传到bintray发布到jcenter最近学习了一下Annotation和APT,简单的写了个库,想要发布到公共仓库供大家使用(虽然没人用,但就是想尝试一下),最简单的是通过https://jitpack.io/直接从github上抓取release代码打包,并且目前已经支持https://gitee.com/。但是,发布简单的纯java库或者Android Application库都比较简单,在github仓库中打个tag或者发布一下release,
2020-11-03 21:56:54 157
原创 利用PathMeasure实现路径动画
2019-01-04 21:47:21文章目录PathMeasuregetLength()getSegment()路径加载动画山寨支付宝支付成功动画我们可以利用路径动画实现很多好玩的东西,比如上面图中的类似支付宝支付完成的动画。主要用到了PathMeasure,ValueAnumator这两个类PathMeasure类似于一个计算器,可以计算一些和路径相关的东西。两种初始化方式:PathMeasure pathMeasure = new PathMeasure();pathMeasure.
2020-11-03 21:52:27 222
原创 使用express模拟后台返回数据
2018-09-27 14:52:19文章目录2018-09-27 14:52:19@[toc]安装node安装express项目结构仿写在研发过程中,有时候会遇到前端写完了,但是后端接口还没有完成的情况。一般情况下我们会写一些假数据来填充UI,这种方式没有办法检测网络请求有没有问题。我们可以自己搭一个服务,请求自己的服务来返回一些模拟数据。比如可以使用node和express模块来做。安装node官网自己查安装node会自动安装npm包管理工具,检查是否有安装node和npm包管理工具,可以
2020-11-03 21:49:20 1592
原创 Window和WindowManager
2017-03-21 20:05:01文章目录Window的内部机制Window的添加过程Window的删除过程Window的更新过程 Window表示一个窗口的概念,在日常开发中直接接触WIndow的机会并不对,再试在某些特殊时候我们需要在桌面上显示一个类似悬浮窗的东西,那么这种效果就需要用到Window来实现。 Window只是个抽象类,它的具体实现是PhoneWindow。创建一个Window是很简单的事,只需要通过WindowManager即可完成,WindowManager是外界访问Win
2020-11-03 21:47:38 123 1
原创 View绘制过程
2018-07-29 22:35:46文章目录MeasureSpecMeasureSpec和LayoutParamsView的工作流程measure过程layout过程draw过程抄的《Android开发艺术探索》第四章ViewRoot对应于ViewRootImpl类,它是连接WindowManager和DecorView的纽带,View的三大流程均是通过ViewRoot来完成的。在ActivityThread中,当Activity对象被创建完毕后,会将DecorView添加到Window中,同时会创
2020-11-03 21:46:44 101
原创 Android-View的滑动
2017-03-15 11:01:46文章目录一 VelocityTracker 和 GestureDetector二 使用ScrollTo/ScrollBy三 使用动画四 改变布局参数五 使用Scroller进行平滑移动View的位置主要由它的四个顶点来决定,分别对应于View的四个属性:top,left,right,bottom,其中top是左上角的纵坐标,left是左上角的横坐标,right是右下角的横坐标,bottom是右下角的纵坐标。需要注意的是,这些坐标都是相当于View的父容器来说的,因此
2020-11-03 21:45:49 114
原创 View事件分发
2018-07-29 11:28:20文章目录MotionEventTouchSloppublic boolean dispatchTouchEvent(MotionEvent ev)public boolean onInterceptTouchEvent(MotionEvent event)public boolean onTouchEvent(MotionEvent event)事件传递机制事件分发源码处理滑动冲突抄的《Android开发艺术探索》3.4.1 和 3.4.2MotionEvent
2020-11-03 21:44:24 91
原创 Ubuntu输入密码登陆后回到登录界面
2018-12-26 11:25:57文章目录.Xauthority 权限不对ubuntu-desktop 挂了既然推荐更新了,那就更呗,然后更新到了18.04,被小伙伴吐槽不用命令行更新的系统是没有灵魂的。更新之后玩了没几天,昨晚突然间无法登录桌面了。输入密码登录后显示一下桌面背景然后就回到了的登录界面,使用tty登录没问题。这就好办了,盲猜桌面服务挂了。然后猜原因:.Xauthority权限不对/tmp权限不对ubuntu-desktop挂了盲猜完了,验证一下.Xauthority
2020-11-02 23:07:01 3254
原创 Toast显示过程
2018-08-03 11:35:14文章目录抄书抄的有点烦,自己也学着分析一下源码,挑了个在我看来比较简单的Toast显示过程来玩一玩。Toast.makeText(context, text, duration).show();先了解一下makeText过程,该过程最终都会调用下面的方法:/** * Make a standard toast to display using the specified looper. * If looper is null, Loope
2020-11-02 23:05:54 630
原创 Tinker初探
2018-03-10 12:35:18文章目录注册 TinkerPatch 平台SDK接入添加Gradle插件依赖集成 TinkerPatch SDK配置 tinkerpatchSupport 参数初始化 TinkerPatch SDK使用步骤在tinker-patch平台发布差异包前两天想试一下热修复的功能,对比各大平台的热修复功能,看到tinker的文档介绍,最终决定先拿Tinker试一下。TinkerQZoneAndFixRobust类替换yesye
2020-11-02 23:04:59 220
原创 TCP协议的简单理解
2017-07-03 16:28:36文章目录TCP的主要特点TCP通过下列方式来提供可靠性停止等待协议连续ARQ协议滑动窗口TCP连接的建立TCP连接的释放TCP有限状态机尽管TCP和UDP都使用相同的网络层(IP),TCP却向应用层提供与UDP完全不同的服务。TCP提供一种面向连接的、可靠的字节流服务。这里的面向连接是指:两个使用TCP的应用(通常是一个客户一个服务器)在彼此交换数据之前必须先建立一个TCP连接。TCP的主要特点TCP是面向连接的运输层协议每一条TCP连接只能两个短点,每一
2020-11-02 23:03:05 570
原创 MMKV与SharedPreference
2020-08-23 11:31:39文章目录存储方式如何选择sp的N宗罪SP优化MMKV与SPMMKV原理:来源https://github.com/Tencent/MMKV使用方式参考鉴于SP的"种种问题",萌发了想要使用写文件的方式替换掉sp的想法,发现腾讯开源MMKV是个不错的选择。存储方式SharedPreferencesContentProvider文件数据库如何选择时间开销这里说的时间开销包括了CPU时间和/0时间,在I/O优化中我就多次提到相比C
2020-11-02 22:58:29 1230
原创 JVM垃圾回收-对象已死?
2017-03-29 17:23:36文章目录引用计数算法可达性分析算法生存还是死亡回收方法区在堆里面存放着Java世界中几乎所有的对象实例,垃圾收集器在对堆进行回收前,第一件事情就是要确定这些对象之中哪些还存活着,哪些已经死去(即不能再被任何途径使用的对象)。引用计数算法很多教科书判断对象是否存活的算法是这样的:给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1;当引用失效时,计数器就减1;任何时刻计数器为0的对象就是不可能再被使用的。客观来讲,引用计数法(Reference
2020-11-02 22:57:48 67
原创 JVM内存区域
2017-03-27 18:00:21文章目录程序计数器Java虚拟机栈本地方法栈Java堆方法区运行时常量池直接内存 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域.这些区域都有各自的用途,以及创建和销毁的时间.有的区域随着虚拟机进程的启动而存在,有些区域则依赖用户线程的启动和结束而建立和销毁.根据《Java虚拟机规范(JavaSE 7版)》的规定,Java虚拟机所管理的内存将会包括以下几个运行时数据区域.如下所示:程序计数器程序计数器(Program C
2020-11-02 22:57:09 60
原创 JVM-垃圾收集算法与实现
2017-03-30 10:27:05文章目录垃圾收集算法标记-清除算法1. 复制算法2. 标记-整理算法3. 分代收集算法HotSpot算法实现枚举根节点安全点安全区域由于垃圾收集算法的实现涉及大量的程序细节,而且各个平台的虚拟机操作内存的方法又各不相同,这里只是介绍几种算法的思想及其发展过程。垃圾收集算法标记-清除算法最基础的算法是"标记-清除"(Mark-Sweep)算法,算法分为’标记’和’清除’两个阶段:首先标记处所有需要回收的对象,在标记后统一回收所有被标记的对象。它的主要不足有两个
2020-11-02 22:56:11 79
原创 JVM-内存分配与回收策略
2017-04-07 15:27:46文章目录对象优先在Eden分配大对象直接进入老年代长期存活的对象将进入老年代动态对象年龄判定空间分配担保 Java技术体系中所提倡的自动内存管理最终可以归结为自动化的解决了两个问题:给对象分配内存以及回收分配给对象的内存。对象的内存分配,往大方向讲,就是在堆上分配(但也可能经过JIT编译后被拆散为标量类型并间接地栈上分配),对象主要分配在新生代的Eden区上,如果启动了本地线程分配缓冲,将按线程优先在TLAB上分配。少数情况下也可能会直接分配在老年代中,分配的规则并
2020-11-02 22:55:26 61
原创 JetPack中的WorkManager
2018年谷歌I/O 发布了一系列辅助android开发者的实用工具,合称Jetpack,以帮助开发者构建出色的 Android 应用。这次发布的 Android Jetpack 组件覆盖以下 4 个方面:Architecture、Foundation、Behavior 以及 UI。该系列博客介绍一下Jetpack中常用组件,本篇介绍LiveData、ViewModel、LifeCycle。最后借助于https://github.com/android/sunflower 来写一个完整的应用
2020-10-31 15:17:08 172
原创 JetPack中的Navigation
2018年谷歌I/O 发布了一系列辅助android开发者的实用工具,合称Jetpack,以帮助开发者构建出色的 Android 应用。这次发布的 Android Jetpack 组件覆盖以下 4 个方面:Architecture、Foundation、Behavior 以及 UI。该系列博客介绍一下Jetpack中常用组件,本篇介绍LiveData、ViewModel、LifeCycle。最后借助于https://github.com/android/sunflower 来写一个完整的应用
2020-10-31 15:16:07 228
原创 JetPack-sunflower
2018年谷歌I/O 发布了一系列辅助android开发者的实用工具,合称Jetpack,以帮助开发者构建出色的 Android 应用。sunflower with java,A gardening app illustrating Android development best practices with Android Jetpack.sunflower的java版本:园艺应用程序,说明了使用Android Jetpack进行Android开发的最佳做法。源码地址 <https://gith
2020-10-31 15:15:16 267
原创 JetPack中的Room
2018年谷歌I/O 发布了一系列辅助android开发者的实用工具,合称Jetpack,以帮助开发者构建出色的 Android 应用。这次发布的 Android Jetpack 组件覆盖以下 4 个方面:Architecture、Foundation、Behavior 以及 UI。该系列博客介绍一下Jetpack中常用组件,本篇介绍Room,结合ViewModel和LiveData完成上图的结构。最后借助于https://github.com/android/sunflower 来写一个完整的应用
2020-10-31 15:14:26 446
原创 JetPack中的LiveData、ViewModel、LifeCycle
018年谷歌I/O 发布了一系列辅助android开发者的实用工具,合称Jetpack,以帮助开发者构建出色的 Android 应用。这次发布的 Android Jetpack 组件覆盖以下 4 个方面:Architecture、Foundation、Behavior 以及 UI。该系列博客介绍一下Jetpack中常用组件,本篇介绍LiveData、ViewModel、LifeCycle。最后借助于https://github.com/android/sunflower 来写一个完整的应用
2020-10-31 15:12:42 268
原创 Jenkins安装与使用
2017-06-28 17:30:42文章目录Jenkins 环境安装Jenkinsjenkins安装插件创建jenkins用户配置Jenkins创建一个新的Maven工程配置工程开始构建公司需求,业务越来越多,服务器越来越多,后台部署项目麻烦的要死,于是上了jenkins这货。关于这货是干嘛的,请移步这里https://jenkins.io/,下载请移步这里https://jenkins.io/download/安装环境:ubuntu 16.04、tomcat7(这个是因为Jenkins是个war
2020-10-31 15:11:19 93
TranslatePlugin
2016-07-19
重构改善既有代码的设计
2015-05-11
jstl.jarANDstanderd.jar
2015-03-01
ajax_读取服务器文件内容.js
2014-11-19
代码格式化工具
2014-05-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人