记录一次Android7.0适配FileProvider踩坑

FileProvider重复 自定义FileProvider继承FileProvider。 12public class AppleFileProvider extends FileProvider {} AndroidManifest.xml中application节点下添加provider节点。 Provider1     阅读全文
CodePoem's avatar
CodePoem 11月 16, 2019

简析Bitmap

基于9.0(29)简析Bitmap类。 我们只关注Bitmap类暴露出来的(即访问权限为public)东西。 枚举类Config 枚举类CompressFormat 若干 createBitmap 静态方法 其他方法 枚举类Config可能的 bitmap 配置。bitmap 配置描述像素的存储方式。这会影响质量(颜色深度)以及显示透明/半透明颜色的能力。 Config 每个像素占用字节数 表示颜色种数 说明 ALPHA_8 1个字节,A分量占8位,不存储颜色信息 0 单透明通道 RGB_565 两个字节,R分量占5位,G分量占6位,B分量占5位 2^16(65536)     阅读全文
CodePoem's avatar
CodePoem 10月 16, 2019

简析BitmapFactory

基于9.0(29)简析BitmapFactory类。 我们只关注BitmapFactor类暴露出来的(即访问权限为public)东西。 静态内部类Options 若干decode方法 静态内部类OptionsOptions,顾名思义,是BitmapFactory用于decode方法的选项参数。让我们看看有哪些: Bitmap inBitmap如果使用此参数,decode方法会在加载内容时尝试重用此 bitmap ,如果编码操作不能使用此 bitmap (有限制条件),则会抛出 java.lang.IllegalArgumentException 异常。当前的重用实现方式要求 bitmap 必须是可变的,并且即使一个资源在decode后通常会得到不可变的 bitmap,在重用成功后所...     阅读全文
CodePoem's avatar
CodePoem 10月 14, 2019

Android图片压缩

为什么要压缩减少内存占用内存占用大小 = Bitmap大小 = 总像素点数 x 一个像素点占用的字节数 BitmapAndroid中图片在内存中的表达形式是Bitmap,即位图。 总像素点数总像素点数由什么决定呢? 总像素点数 = 图片源长度 x 缩放比例 x 图片源宽度 x 缩放比例 缩放比例可以大致表示为:(为什么说大致呢?因为不是绝对的,实际还有其他因素可以影响实际缩放比例,如inScreenDensity)缩放比例 = 1/inSam...     阅读全文
CodePoem's avatar
CodePoem 10月 14, 2019

模板整理之上传仓库

我们在日常打aar包和jar包,并上传到远端中央仓库时,需要引入大段gradle代码,较为繁琐。我这里整理了常用的上传到中央仓库的gradle代码,提供了较为方便的使用方式。上传代码模板GitHub目前只有上传到bintray也就是jcenter的整理,后期有需要其他远端中央仓库的会继续跟进。 模板整理GitHub     阅读全文
CodePoem's avatar
CodePoem 10月 09, 2019

模板整理之Travis CI

官方文档 免费Travis-CI(针对开源项目):https://travis-ci.org 收费Travis-CI(针对私有和商业项目):https://travis-ci.com 使用步骤 登录 Travis CI 并对指定的项目启用。 配置 .travis.yml ,参考官方文档。 push(或其他方式)触发Travis-CI。 实现工作流 构建。开...     阅读全文
CodePoem's avatar
CodePoem 10月 09, 2019

Crash治理之TimeoutException

产生原因与 GC 过程相关的守护线程中的2个守护线程 FinalizerDaemon 和 FinalizerWatchdogDaemon 有关。 FinalizerDaemon :析构守护线程。对于重写了成员函数 finalize 的对象,它们被 GC 决定回收时,并没有马上被回收,而是被放入到一个队列中,等待 FinalizerDaemon 守护线程去调用它们的成员函数 finalize ,然后再被回收。 FinalizerWatchdogDaemon :析构监护守护线程。用来监控 FinalizerDaemon 线程的执行。一旦检测那些重定了成员函数 finalize 的对象在执行成员函数 finalize 时超出一定的时间,那么就会退出 VM 。 原因小总结: GC 过程中 FinalizerDaemon 守护线程执行 doFinalize 方法超时。FinalizerWatchdogDaemon检测到后产生 TimeoutException 并退出虚拟机。(每个手机触发 Timeout 的时长不同,比如 vivo 的某些rom 是...     阅读全文
CodePoem's avatar
CodePoem 9月 25, 2019

Android动画

Android中动画划分为两大类 视图动画(View Animation)和 属性动画(Property Animation)。其中 属性动画(Property Animation)需要在Android3.0之后(API >= 11)使用。视图动画(View Animation)又包括了 帧动画(Frame Animation) 和 补间动画(Tweened Animation)。 视图动画(View Animation)帧动画(Frame Animation)帧动画(Frame Animation) 有时也叫 Drawable动画,这种动画的实质其实是Drawable。像播放幻灯片一样,利用视觉残留产生动画效果。 核心类:AnimationDrawable     阅读全文
CodePoem's avatar
CodePoem 9月 16, 2019

Android自定义View

什么是自定义View自定义 View 就是通过继承 View 或者 View 的子类,并在继承的类里面实现自定义的处理逻辑(重写相应的方法),以达到自己想要的效果。 为什么要自定义View 让界面有特定的显示效果、交互 优化布局(减少布局层次) 封装 如何自定义View自定义View主要流程 测量阶段 measure 布局阶段 layout ...     阅读全文
CodePoem's avatar
CodePoem 9月 16, 2019

Java泛型

概述泛型:参数化类型(将类型由原来的具体的类型参数化)。 特点: 适用于多种数据类型执行相同的代码。 使用泛型时,在实际使用之前类型就已经确定了,不需要强制类型转换。 泛型只在编译阶段有效。 泛型命名标识字母(常见字母): T Type K V Key Value E Element 简单使用泛型类12     阅读全文
CodePoem's avatar
CodePoem 9月 10, 2019