技术分享

最近偶然间看到一篇博客Android Scroller 滑动机制介绍了Android中ScrollView的滚动本质,并从源码级别进行了介绍,只能说大佬牛逼了,然后写一个demo来加强记忆咯 1、Scroll的方向傻傻乎乎分不清楚 如图所示,如果需要向右边滚动,参...

发布 2 条评论

方案一:使用主题文件 定义换肤资源 在values/下新建一个xml文件,比如theme_attrs.xml,然后定义换肤的资源类型 <?xml version="1.0" encoding="utf-8"?> <resources> <attr name="them...

发布 0 条评论

类的生命周期 加载阶段 加载阶段可以细分如下 加载类的二进制流 数据结构转换,将二进制流所代表的静态存储结构转化成方法区的运行时的数据结构 生成java.lang.Class对象,作为方法区这个类的各种数据的访问入口 加载类的二进制流...

发布 0 条评论

Android虚拟机 Android4.4版本以前是Dalvik虚拟机,4.4版本开始引入ART虚拟机(Android Runtime)。在4.4版本上,两种运行时环境共存,可以相互切换,但是在5.0版本以后,Dalvik虚拟机则被彻底的丢弃,全部采用ART。 ART ART 是一种执...

发布 0 条评论

垃圾回收机制 对象创建过程 对象内存分布 对象的访问 对象回收算法 引用计数法:可能存在的问题,对象相互引用 可达性分析: 可达性分析算法的主要思路是先找出一批根节点对象集合作为GC Roots(可称为根节点枚举),然后从这...

发布 0 条评论

ViewGroup#onMeasure //将layoutParams转变成为 measureSpec //参数一:parentWidthMeasureSpec //参数二:padding,父布局的padding,或者padding+已用空间 //参数三:ChildView的LayoutParams,比如lp.width,lp.height public stati...

发布 0 条评论

泛型类型擦除 Java泛型这个特性是从JDK 1.5才开始加入的,因此为了兼容之前的版本,Java泛型的实现采取了“伪泛型”的策略,即Java在语法上支持泛型,但是在编译阶段会进行所谓的“类型擦除”(Type Erasure),将所有的泛型表示(尖括号...

发布 0 条评论

Java 虚拟机将 Java 程序执行的区域称为运行时数据区,根据各自功能不同将运行时数据区划分为若干个不同的区域, 具体分为两大块,线程共享部分和线程私有部分。线程共享部分可以分为堆、方法区(jdk1.8 后这块区域被称为元空间);线...

发布 0 条评论

Java 内存模型(JMM) JMM 是 Java 虚拟机(JVM)在计算机内存(RAM)中的工作方式,JMM规定了内存主要划分为主内存和工作内存两种 此处的主内存和工作内存跟JVM内存划分(堆、栈、方法区)是在不同的层次上进行的,如果非要对应起来,主内...

发布 0 条评论

ConstraintLayout属性 固定比例: layout_constraintDimensionRatio ="4:1";宽:高=4:1,宽为高的4倍 或者 app:layout_constraintDimensionRatio="H,2:3"指的是 高:宽=2:3 app:layout_constraintDimensionRatio=&q...

发布 0 条评论