前言 一个窗口里面的所有的普通View都会共享一个Surface,这个Surface保存在ViewRootImpl里面。但是SurfaceView不同,SurfaceView...
前言 一个窗口里面的所有的普通View都会共享一个Surface,这个Surface保存在ViewRootImpl里面。但是SurfaceView不同,SurfaceView...
JVM运行时数据区: 虚拟机栈虚拟机栈包含了局部变量表,操作数栈,动态链接,方法出口等。每个方法从执行到完成就是一个栈帧入栈到出栈的过程,出栈以后会返回一条字节指令的地址( ...
前言 Glide 这个三方库使用起来非常简单Glide.with(this).load("").into(imageView)。便可以将资源图片加载到对应的控件上面而且 Gl...
一、背景 1.1、控件效果 要实现的自定义控件效果大致如下,实现过程中用到了比较多的自定义View的API,觉得比较有代表性,就分享出来也当做学习总结项目代码已上传githu...
WebSettings用于管理WebView状态配置,当WebView第一次被创建时,WebView包含着一个默认的配置,这些默认的配置将通过get方法返回,通过WebVie...
在《iPhone屏幕分辨率和适配规则(基础篇)》,《iPhone屏幕分辨率和适配规则(规则篇)》和《iPhone屏幕分辨率和视频规则(实现篇)》中已经介绍了iPhone的屏幕...
一、 拆分使用 先创建被观察者和观察者,然后建立订阅关系,这样在观察者中就会接收到个生命周期的回调: 运行结果: 二、 链式调用(一般都是这种写法): 三、更简单的观察者 C...
理一下Handler消息分发流程,一定离不开这几个类:Handler:用于消息发送和接收Message:消息MessageQueue:消息队列,用于存储消息Looper:循环...
首先是来一段写了一万遍的代码,Handler的基本使用 毫无疑问textView直接被改成了“二二三四”,那第一个问题问题来了: 一、可不可以在子线程里直接修改textVie...
责任链模式(Chain of Responsibility Pattern):避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这...
构造者模式(Builder Pattern)主要用于复杂对象的构建,将一个复杂对象的构造过程和它的表现层分离开来。 直接撸个盖房子的例子。这里三个类: BuildingDes...
DataBinding做了什么之前分析过了,DataBinding跟MVVM并没有什么直接的联系,在MVC、MVP中同样可以使用,只是这里的MVVM是用DataBinding...
没有MVVM!没有MVVM!没有MVVM! 一、dataBinding用法 app的build.gradle中添加依赖: 定义一个mode,两种写法是一样的l: 布局的写法要...
APT(Annotation Processing Tool),根据注解自动给生成代码。JavaPoet,代码生成框架。要自动生成类文件,JavaPoet并不是必须的,比如J...
这里的组件化每个模块可以单独运行、打包、测试,可随意拆卸、随意组装,既不互相依赖又可以互相调用。是通过在一个Project下通过创建多个Module实现的。假设三个模块:Ap...
通常项目中使用MVP架构并不会像MVP基础结构Demo中这样直接把类写死,而是要进行基类抽取,面向接口。 创建三个基类:BaseModel、BaseView、BasePres...
AOP:面向切面编程。什么是切面?在开发过程中经常会遇到这样的逻辑,在点击不同的按钮跳转的时候都需要判断是否已经登录,在数据库增删改之前都要先进行备份操作。这种共同的逻辑就可...
本文实现通过OpenGL在屏幕上画出一写简单图形(三角形、等腰三角形、矩形)。 开撸码前先了解一些概念性的东西: 什么是OpenGL?Open Graphics Librar...