Android附加技能
文章平均质量分 85
OneDeveloper
当你无所事事的时候,就得好好想想还缺少什么!!!
展开
-
Android 编写一个简单的 gradle 插件
如何从零开发一个 gradle 插件(一)转载 2020-06-16 23:57:26 · 257 阅读 · 0 评论 -
Android 主动 try-catch 主线程的 Exception
android.os.Handler(android.os.Looper.getMainLooper()).post(object : Runnable { override fun run() { while (true) { try { android.os.Looper.loop() } catch (e: Throwable) { android.util.Log.原创 2020-05-26 20:57:01 · 800 阅读 · 2 评论 -
关于 DialogFragment 设置成充满屏幕的处理
在做需求的时候,有要做一个 Dialog,于是我就使用了 DialogFragment 来实现的。但是在做的时候就遇到了一个问题,那就是要显示的 Dialog 的尺寸比较大,如果我直接在其引用的布局文件中的根节点设置指定的数值较大的宽高,但是实际上显示出来的尺寸并不是设置的大小,而且根节点好像没有生效,比如在根节点设置了指定的背景色,把 DialogFragment 显示出来的时候并没有达到预期...原创 2019-11-11 12:53:44 · 1257 阅读 · 0 评论 -
关于 Android APK 签名的文章备忘
1、APK签名机制原理详解2、Android v1、v2、v3签名详解原创 2019-11-11 10:47:01 · 174 阅读 · 0 评论 -
Android 实现像异常日志一样跟踪到具体的日志打印处
即实现下图的效果public class MainActivity extends FragmentActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView...原创 2019-01-04 17:57:24 · 410 阅读 · 0 评论 -
实现进入界面默认不显示 EditText 的光标、不调起键盘
在一个界面,有一个或者数个 EditText,如果不做处理,有些机型会默认显示第一个 EditText 的光标,同时弹出键盘,此时,可以给这些 EditText 的公共父布局设置两个属性,就可以解决这个问题。android:focusable="true/false" android:focusableInTouchMode="true"focusable 属性为 true 或者 fals...原创 2019-01-04 20:25:19 · 2213 阅读 · 0 评论 -
Gradle之BuildConfig自定义常量
https://www.jianshu.com/p/274c9d95cf76转载 2019-01-03 10:54:18 · 1045 阅读 · 0 评论 -
Adapter 的 ViewHolder 多种 Type 的时候引发的异常
背景:因为我的 ListView 的 Adapter 要适配两种不同的 ViewHolder,然后在 getItemViewType() 的时候,分别返回 1、2,在 getViewTypeCount() 的时候返回 2,这样就引起了奔溃,而且奔溃的很诡异,就是在进入界面首次展示正常,但是刷新重新填充数据的时候就会奔溃了。错误提示:at android.widget.AbsListView$...原创 2019-01-25 17:13:08 · 501 阅读 · 0 评论 -
获取当天、本周、本月开始与结束时的时间戳
1、获取当天开始与结束的时间戳// 当天的 00:00:00fun getStartOfDay(): Long { val calendar = Calendar.getInstance() val year = calendar.get(Calendar.YEAR) val month = calendar.get(Calendar.MONTH) val da...原创 2019-01-21 15:49:43 · 2779 阅读 · 0 评论 -
okhttp3 同时上传文件与其他类型的字段
文章的代码摘抄自:Android网络编程(六)OkHttp3用法全解析private static final MediaType MEDIA_TYPE_TEXT = MediaType.parse("text/plain");public void sendMultipart(){ // okhttpclient() 方法用于返回 OkHttpClient 实例 mOkHt...原创 2019-02-26 20:31:07 · 1245 阅读 · 0 评论 -
Android 中的 ClassLoader 摘抄笔记
摘抄自:《Android 进阶解密》Java 中类加载器加载的是 jar 文件和 Class 文件(本质都是加载 Class 文件),但在 Android 中不适用,因为无论是 DVM 还是 ART,它们加载的都是 dex 文件。Android 中的 ClassLoader 分为两种类型,分别是系统类加载器和自定义加载器。系统类加载器1、BootClassLoaderAndroid 系统...转载 2019-05-16 18:39:04 · 227 阅读 · 0 评论 -
关于 <activity> 的 taskAffinity 属性一些情景测试记录
下列场景的测试环境:1、模拟机,Android 版本 8.0.02、开发环境:compileSdkVersion 28targetSdkVersion 281、taskAffinity 用于设置 activity 对于 Task 的亲和力,而 Task 的亲和关系由 Task 中的根 Activity 确定,即根 Activity 的 affinity 决定着 Task 的 affi...原创 2019-06-16 21:19:33 · 346 阅读 · 0 评论 -
【笔记整理】Glide 4.9.0 执行流程源码解析
对于源码的分析,是基于 Glide 最简单的使用的流程进行的:Glide.with(MainActivity.this).load("url of image resource").into(view);1. with() 方法with() 方法会传入当前 activity、fragment 等,目的就是为了获取对应的 context,然后根据该 context 来得到 RequestMa...原创 2019-08-27 00:33:35 · 454 阅读 · 0 评论 -
热修复之类加载方案 笔记整理
热修复分为:代码修复、资源修复、动态链接修复其中,代码修复又分为:类加载方案、底层替换方案、Instant Run 方案。本篇关于代码修复的类加载方案的笔记整理。涉及源码版本为 Android 7.1.1。参考文章:1、Android热更新实现原理浅析2、《Android 进阶解密》1、理论基础类加载方案是基于 Dex 分包方案的。Dex 分包方案主要做的是在打包的时候将应用代...原创 2019-09-07 22:07:00 · 584 阅读 · 0 评论 -
点击事件分发机制 关键源码笔记
请注意,涉及到的源码 SDK 版本为 27,不同版本可能存在偏差,一切以具体的源码为准。文字部分主要参考自 《Android 开发艺术探索》,源码部分的解读主要参考自 Android 触摸事件机制(四) ViewGroup中触摸事件详解,但是也加入了自己的思考。首先,需要明确的就是,同一个事件序列,就是一个连续的 ACTION_DOWN -&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt; A原创 2019-09-09 22:47:31 · 7339 阅读 · 2 评论 -
屏幕刷新机制 笔记整理
参阅文章:Android 屏幕刷新机制需要先仔细阅读一下原文,我这里只是把一些讲解步骤抽炼出来,使得看起来更直观。根据原文可以知道, View#invalidate() 最终会走到 ViewRootImpl#scheduleTraversals()每个 Activity 对应一颗以 DecorView 为根布局的 View 树,但其实 DecorView 还有 mParent,而且就是 V...原创 2018-11-09 21:37:53 · 1166 阅读 · 1 评论 -
反编译工具 Jadx 初级使用记录
反编译工具 Jadx :https://github.com/skylot/jadx操作环境为 Mac首先新建一个文件夹,可以命名为 jadx,然后把项目 clone 进该目录,之后再编译:mkdir jadxgit clone https://github.com/skylot/jadx.gitcd jadx./gradlew dist之后 jadx 目录有如下内容运行 ja...原创 2018-10-25 11:23:42 · 527 阅读 · 0 评论 -
RxJava2 学习笔记
有关 RxJava2 的学习笔记 额外参考文章:Android 响应式编程 RxJava2 完全解析一、给初学者的RxJava2.0教程系列1、创建的 Observable 和 Observer 的实例,不是一次性的(暂时需要加上某些前提,如在一般情况下),可以被重复使用,如下面代码所示:Observable<Integer> observable = Ob...原创 2018-03-25 23:35:14 · 305 阅读 · 0 评论 -
《Android 复杂的列表视图新写法 MultiType》知识点整理
阅读自:Android 复杂的列表视图新写法 MultiType1、实现线性布局和网格布局混排列表 的讲解 效果图 为了实现如上图的线性和网格的混合视图效果,只需要一个 GridLayoutManager(其继承自 LinearLayoutManager)而关键的代码就是下图中的为 GridLayoutManager 设置 GridLayoutManager.SpanSizeLookup ...原创 2018-03-29 10:31:56 · 1020 阅读 · 0 评论 -
“Android 硬件加速与 View Layer ”知识点笔记
阅读文章:HenCoder Android 自定义 View 1-8 硬件加速 辅助参考文章: 1、Display List构建过程分析 2、Android硬件加速原理与实现简介 3、关于硬件加速的那么点儿东西 4、《Android高性能编程》 P53 - P56 5、《Android应用性能优化最佳实践》 P63 - P66首先需要明确的是,什么是硬件加速? 所谓硬件加速,...原创 2018-04-04 11:18:17 · 1177 阅读 · 1 评论 -
《Android 高性能编程》—— @IntDef 注解,减缓枚举的使用
在书中的 P120 - 123,有介绍枚举,因为枚举对开发者友好,数量有限的元素、描述性的文字,可以增强代码的可读性,并且还支持多态。但是在性能上说,使用枚举却不一定是最佳的选择,因为枚举在经过编译器之后,变成了一个抽象类,它继承了 java.lang.Enum,为其定义的枚举常量则会变成相应的内部类,等。(具体见:java枚举类型的实现原理)所以文中有提替代枚举的主要方式就是利用类的 p...原创 2018-04-17 14:18:26 · 7433 阅读 · 4 评论 -
与 Android 屏幕适配有关的笔记
前言:对于 Android 来说,屏幕适配一直是一个不能忽略的点,毕竟手机厂商太多,屏幕碎片化太严重。虽然本人对于适配也看过了一些文章,但是一直是一知半解,而且在实际的项目中也接触得少,所以一直处于梦游状态。因为我有时候就会很懵,给我一张图,我应该放在哪个目录里面?drawable、drawable-mdpi... 哪个目录,怎么才能确定呢? 所以,以这个问题为出发点,我结合了其他的博客,写...原创 2018-04-19 23:26:47 · 197 阅读 · 0 评论 -
【Java 注解】笔记整理
阅读文章: 1、秒懂,Java 注解 (Annotation)你可以这样学 2、深入浅出Java注解 3、Java 技术之注解 Annotation 4、AbstractProcessor注解处理器注:下文 1 - 3 主要摘抄自 深入浅出Java注解1、注解的定义Annotation(注解)就是Java提供了一种源程序中的元素关联任何信息或者任何元数据(metada...原创 2019-05-10 08:26:01 · 462 阅读 · 0 评论 -
用 layer-list 实现指定边际的边框
最近在开发的时候,遇到一个有关 UI 的需求,大概就是要实现一个背景图,存在左、右、下方向上的边框,并且下边两个角要为圆角。示例的效果图如下: 其中黑色的为边框。然后就是具体的实现逻辑,使用的就是 shape,借助 layer-list:<layer-list xmlns:android="http://schemas.android.com/apk/res/android...原创 2018-08-21 12:57:04 · 1117 阅读 · 0 评论 -
Android Hook 机制备忘
Hook,又叫钩子,通常是指对一些方法进行拦截。这样当这些方法被调用时,也能够执行我们自己的代码,这也是面向切面编程的思想(AOP)。这里涉及的是 Java 层面的 Hook。需要涉及的内容:1、代理模式2、反射机制具体的步骤是:1、找出 Hook 点(即找出被 Hook 的对象)2、实现对应的代理类3、使用反射机制替换掉被 Hook 的对象具体的步骤可以参阅:A...原创 2018-08-31 15:31:27 · 262 阅读 · 0 评论 -
ConstraintLayout —— 约束布局 知识点整理
参考文章: 1、Android官方文档 2、约束布局(ConstraintLayout)1.1.2 版本的新特性 3、android ConstraintLayout使用详解 4、Android ConstraintLayout+ConstraintSet实现动画效果ConstraintLayout 的版本是 1.1.xlayout_constraintXXX_toYYYO...原创 2018-08-25 10:43:25 · 15258 阅读 · 1 评论 -
Android Studio 的 editor-fold 标签 与 region
editor-fold 是基于 IntelliJ 的 IDE 给我们提供了一种能够给我们的代码块进行归纳的标签。具体的效果以及使用方法参照 :https://puke3615.github.io/2017/03/21/Android-Studio-Code-Block-Mark/...原创 2018-09-04 13:01:14 · 2451 阅读 · 0 评论 -
自定义实现横向圆角进度条——简易版
UI 说需要实现这样圆角横向进度条,好,于是我就去屁颠屁颠的 Google。下面就是我的辛酸历程。1、 设置 ProgressBar 的 android:progressDrawable 属性首先找到的一种实现方法就是为 ProgressBar 设置 android:progressDrawable 属性,类似于 Progress内外圆角进度条 这篇文章里面说的。实现起来比较简单方便,但...原创 2018-09-23 13:36:04 · 2725 阅读 · 0 评论 -
禁止 ScrollView 在子控件的布局改变时自动滚动到最底部
在做项目的时候,遇到了一个问题,就是有下面那样一个布局:某种情况下要动态改变 ViewPager 的高度,但是有时候再改变之后,整个页面会自动滑动到最底部,而不是保持原有的位置。解决方法:重写scrollview中的如下方法,并将其返回值设为0即可。@Overrideprotected int computeScrollDeltaToGetChildRectOnScreen(Rect ...原创 2018-10-17 17:32:19 · 792 阅读 · 0 评论 -
RxJava2 学习笔记 (二)
1、compose 操作符compose 是用于复用的,可以把几个常用的操作函数封装为一个函数来复用代码,但是需要结合 ObservableTransformer 来使用的(在 RxJava2 中) 参考文章(使用的还会 RxJava1 的逻辑,会有差异): RxJava中操作符组合的复用利器compose() RxJava 的 compose() 操作函数实战演示代码如下:比如...原创 2018-03-31 18:29:53 · 242 阅读 · 0 评论