AndroidStudio使用Cmake编译armeabi-v7a,arm64-v8a的so库
摘要:使用AndroidStudio编译armeabi-v7a,arm64-v8a库文件步骤: 1.新建项目 2.修改CMakeLists.txt文件 # For more information about using CMake with Android Studio, read the # docu
阅读全文
posted @
2020-11-24 14:33
飘杨......
阅读(6711)
推荐(0) 编辑
图片压缩原理
摘要:一、无损压缩: 相同颜色的的信息只需要保存一次,从本质上来讲无损压缩可以删除一些重复的像素数据,从而减少图片占用磁盘空间的大小。 特点: 1.可以减少占用磁盘空间大小 2.无法压缩图片载入内存的大小因为图片的分辨率和像素值没变 应用:上传本地图片到服务器(如:拍照、本地制作的图片等) 二、有损压缩:
阅读全文
posted @
2020-11-23 11:18
飘杨......
阅读(3203)
推荐(0) 编辑
AndroidStudio在连接USB安装apk后无法直接启动Apk
摘要:原因:没有设置默认启动的Activity,只需要在AndroidStudio做一下简单设置就行了。 第一步: 第二步: . OK,大功告成了
阅读全文
posted @
2020-11-20 10:45
飘杨......
阅读(437)
推荐(0) 编辑
Android自定义多图片适配器(根据图片的个数展示不同的布局)
摘要:一、概述&效果图 项目上有一个需求根据不同的图片个数展示不同的的布局样式,且图片个数不能超过四个。要说起来手动写也挺方便的,就是代码看起来比较臃肿,考虑了两秒决定用自定义布局试实现 思路: 1.让布局继承ViewGroup 2.利用ViewGroup测量自己以及测量子View的宽高 3.根据宽高在l
阅读全文
posted @
2020-11-06 18:02
飘杨......
阅读(939)
推荐(0) 编辑
Android可设置任意高度的TextView,如:设置0.5px设置0.1px等等
摘要:一、概述 今天UI给提了一个bug,说分割线的宽度有问题。必须要求线的高度为0.5px。但是layout_height只允许输入整数。想通过直接设置View高度的办法宣告凉凉的。 然后突然想到Android绘图工具上可以把线的宽度设置成任意的。哎,还别说,这个办法还真行 二、原理 自定义一View,
阅读全文
posted @
2020-10-13 19:13
飘杨......
阅读(707)
推荐(0) 编辑
Android可以打开微信支付,但是没法调起小程序支付
摘要:一、问题描述 昨天测试的同学说华为P20,Android10的系统无法调用微信小程序支付,但是却可以调用起微信支付,这个奇怪的现象。 二、产生原因 最后发现产生这个现象的原因是Android10系统加强对用户权限控制导致的。因为Android10系统增加了从后台弹出Activity的限制。需要开权限
阅读全文
posted @
2020-09-24 09:27
飘杨......
阅读(1176)
推荐(0) 编辑
Android 通用的TabLayout组件
摘要:一、概述: 目前主流的app一般都会使用到的TabLayout。现在的app设计一般都是定制,定制就意味着个性化。而google提供的tablayout有时候并不能满足我们的需求,还需要用代码一点点的写,这样不仅耗费时间出错率也会更加很多。因此决定封装一些通用的TabLayout来加快这种个性化的t
阅读全文
posted @
2020-06-01 11:03
飘杨......
阅读(1996)
推荐(0) 编辑
Android使用AnnotationProcessor模仿ButterKnife
摘要:一、概述 在之前的一篇文章中,我们用反射实现了ButterKnife。但使用反射实现ButterKnife性能会受损。这一节我们使用AnnotationProcessor来实现一个ButterKnife(仅实现bindView作参考),在代码编译之前生成辅助类来帮助我们去掉繁琐的findViewBy
阅读全文
posted @
2020-03-21 23:49
飘杨......
阅读(1233)
推荐(0) 编辑
Android自定义Gradle插件
摘要:一、概述 当前开发一个Android项目必定会用到gradle插件(不管你想不想其实都在用)。上一节我们说了app的打包流程,其实主要是为接下来要说的内容做铺垫。打包流程大致分为:aapt把资源文件生成R.java文件,JavaCompiler把java文件编译成class文件,dex工具又把cla
阅读全文
posted @
2020-03-20 00:35
飘杨......
阅读(2400)
推荐(1) 编辑
App打包流程概述
摘要:一、概述 什么是App的打包流程? 答:App的打包流程是指通过把资源(图片、文本)、源代码等资源打包成一个apk的过程。 了解打包流程能干什么事情? 通过了解打包流程我们可以对app打包的过程进行干涉,例如:1.在热更新项目中我们可以干涉R.java中资源id的生成来防止宿主App和插件App资源
阅读全文
posted @
2020-03-19 16:42
飘杨......
阅读(2124)
推荐(0) 编辑
Handler、Looper、MessageQueue原理分析
摘要:一、概述 Android的消息机制是指Handler的运行机制,Handler的运行需要底层的MessageQueue和Looper的支撑。我们在开发中使用Handler一般是切换线程更新UI等操作。因为Android规范规定Android只能在主线程中更新UI,这一点可以在ViewRootIml的
阅读全文
posted @
2020-03-16 23:09
飘杨......
阅读(441)
推荐(0) 编辑
ThreadLocal原理分析
摘要:一、概述 简单点来说ThreadLocal其实是一个数据存储类,通过get(),和set(key)来实现对数据的存取。并且可以在指定的线程中存储取数据,而在这个线程中存储的数据对于其他线程是访问不到的。 什么情况下比较适合使用ThreadLocal来存取数据? 答:当数据的作用域是线程或者不同的线程
阅读全文
posted @
2020-03-16 12:29
飘杨......
阅读(189)
推荐(0) 编辑
Android so加载原理
摘要:一、概述 本节介绍一下so的加载原理,促使我写这个小节的原因有两点: 1.可以在给App瘦身的时候提供参考依据 2.可以给so插件化提供参考依据 下面就开始看so的加载原理吧。 二、so加载原理分析 2.1.so的编译类型 在Android中只支持三种CPU架构:x86体系、mips体系、arm体系
阅读全文
posted @
2020-03-15 21:54
飘杨......
阅读(1426)
推荐(0) 编辑
HashMap原理分析(含1.8以后的红黑树)
摘要:一、概述 HashMap这个类不管是Java开发还是Android开发都会经常用到,当有数据需要通过键值对的形式存储的时候,使用Map会非常的方便。为什么要学习HashMap的原理呢?其中有两点原因: 1.通过对HashMap原理的学习,可以修炼开发者的内功,因为一旦理解的HashMap等于把数据结
阅读全文
posted @
2020-03-15 17:02
飘杨......
阅读(1591)
推荐(0) 编辑
TCP三次握手和四次挥手
摘要:一、概述 TCP的三次握手和四次挥手是一个老生长谈的问题,当然也是在面试中被问到的一个大概率的问题。之所以被经常问到是因为这个知识点是可以区别初级、中级、高级开发者的一个分水岭,可以达到筛选应聘者的目的。另外原因是公司可能真的会用到这方面的内容,例如:有些时候我们会选用websocket作为数据传输
阅读全文
posted @
2020-03-14 16:37
飘杨......
阅读(382)
推荐(0) 编辑
ButterKnife原理以及源代码分析
摘要:一、概述 相信绝大多数Android开发都用过ButterKnife这个框架,因为其老牌且知名。其通过注解来绑定视图,把开发从烦琐的findViewById中解放出来。 ButterKnife有两种实现形式: 1.使用注解编译器来实现,其结果就是编译略微耗时,但其运行基本无损。 2.完全使用反射来实
阅读全文
posted @
2020-03-12 22:08
飘杨......
阅读(1300)
推荐(0) 编辑
Android Service启动原理分析
摘要:一、概述 Service是Android的四大组件之一,我们可以利用它开启一个后台服务,Service的优先级比较高,一旦其在后台运行即使App处于后台则Service运行的任务也不容易被杀死。了解Service的工作原来除了可以加深对底层的Service机制的理解以外还可以为当前比较流行的热更新做
阅读全文
posted @
2020-03-12 11:15
飘杨......
阅读(1273)
推荐(0) 编辑
线程池原理分析
摘要:一、概述 众所周知Android中可以使用线程池来管理线程,有非常多的框架一旦涉及到多线程都会优先采用线程池来处理线程,例如:EventBus、Retrofit2、RxJava、OkHttp等框架。那么Android为什么能使用线程池呢?其实这源于Java的java.util.cuncurrent包
阅读全文
posted @
2020-03-11 20:17
飘杨......
阅读(407)
推荐(0) 编辑
仿EventBus做一个简单的基于订阅发布的事件总线
摘要:一、概述 在上一节分析了EventBus的源代码。本节仿照EventBus自己做一个事件总线框架,去掉了一些代码,只保留了核心框架,旨在梳理框架的框架原理,加深对框架流程的理解。 在贴出源代码之前先把这个自定义的EventBus的功能介绍一下。核心流程还是三个,注册、发布、取消注册(未写Annota
阅读全文
posted @
2020-03-11 16:57
飘杨......
阅读(418)
推荐(0) 编辑
Android从点击Launcher图标开始到App打开流程分析
摘要:一、概述 从我们在屏幕上点击一个App快捷图标开始到app打开到启动页不过短短的500~1500毫秒之间。但是在这个过程的底层却做了非常多的事情,光大步骤就分了7步。其中AMS在这里面占据了非常重要的角色,基本上每一步都离不开他。 有些同学可能有疑问,了解这些东西有啥用啊?作用还是很大的,比如:我们
阅读全文
posted @
2020-03-10 17:15
飘杨......
阅读(3132)
推荐(1) 编辑