自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(51)
  • 收藏
  • 关注

原创 编程思想:编程范式:响应式编程

响应一般指对于事件的响应,事件包括数据变化或其他事件响应流程包括事件的发生,事件的传递,和事件的最终处理事件在起点处发生,开始传递过程传递过程,包括对事件的一系列处理,如事件封装的数据的类型转化,数据集合的批处理事件最终传递到终点,响应处理过的事件。

2024-10-11 03:50:32 161

原创 Android系统:系统架构

Android的系统结构的设计混合了分层设计和分块设计。

2024-09-23 10:10:12 559

原创 编程思想:占位思想

参数化,编译时用XXX占位,运行时用XXX替换。

2024-09-18 09:37:25 194

原创 编程思想:静态与动态:编译时和运行时

编译时,对应的是静态运行时,对应的是动态。

2024-09-18 09:20:47 325

原创 编程思想:静态与动态

文章目录 懒加载和预加载 编译时和运行时 总结 懒加载和预加载​​​​​​​编译时和运行时总结

2024-09-18 09:20:35 177

原创 编程思想:编程范式:面向对象

类A继承类B,类A隐式持有一个类B对象,类A中可以直接调用类B的可继承属性和方法。编译时,在类中定义引用变量时,使用父类作为变量的类型,使用引用变量调用重写方法。运行时,把子类的实例对象赋值引用变量,调用的重写方法实际上调用的是子类中的方法。在子类中持有父类对象,可直接调用父类的方法,本质上是持有的父类对象调用方法。重写:子类的实例对象调用重写方法,调用的是子类中的方法,不是父类中的方法。父类中的方法,使用super,标明调用的是父类中的方法。类的封装,把抽象出来的相同的属性和方法封装在类中。

2024-08-26 07:01:05 285

原创 Android UI:PopupWindow:源码分析:设置WindowManager.LayoutParams中的各种参数

mIsDropdown可以通过set方法直接设置,也可通过调用showAtLocation(设置为false)或调用showAsDropDown(设置为true)mXXXMode可通过调用setWindowLayoutMode设置,可设置为MATCH_PARENT或WRAP_CONTENT。调用showAsDropDown,设置为anchor.getApplicatonWindowToken()调用showAtLocation, 设置为parent.getWindowToken()

2024-08-21 08:01:41 458

原创 Android UI:PopupWindow:API

持有一个View对象和一个WindowManager对象,将外部传入的View对象通过WindowManger.addView的方式显示在屏幕上。屏幕的装饰器,如NavigatonBar。数值越小,Window越靠近屏幕。

2024-08-20 08:41:31 891

原创 代码设计:设计模式:过滤器模式

使用不同的标准来过滤/筛选一组对象。

2024-08-16 05:23:57 271

原创 代码设计:设计模式:中介者模式

作为中介者1.间接实现的A调用B的方法2.实现A与B的松耦合,B的代码变化尽量不影响A的代码。

2024-08-16 04:56:20 213

原创 代码设计:设计模式:桥接模式

桥接模式核心思想是从原有类抽取出独立功能的接口,类似工厂模式、Builder模式都是抽取出独立功能的类。

2024-08-16 04:26:31 367

原创 代码设计:设计模式:委托模式

委托,指的是调用被依赖的类的方法类A依赖类B,一般都是A调用B的方法,但委托是B调用A的方法。

2024-08-15 15:56:30 514

原创 代码设计:设计模式:抽象工厂和工厂方法

工厂方法,一个工厂生产多个产品抽象工厂,一个工厂生产一个产品​​​​​​​抽象工厂可以看作工厂方法的升级,当工厂方法中工厂类代码过于复杂,可以将其改成为抽象工厂,降低工厂类的代码复杂。

2024-08-15 12:16:31 166

原创 架构设计:架构设计与框架设计的区别

通常设计的是一个模块/组件/插件的结构,模块/组件/插件一般涉及一个单独的功能/业务,所以不需要分块设计,只需分层设计。通常设计的是系统/App的结构,系统/App涉及多个功能/业务,使用分层设计+分块设计。

2024-08-07 09:33:15 172

原创 Android 线程并发:线程通信:AsyncTask

线程池负责提供完成任务的子线程Handler实现子线程和UI线程的通信通信流程:1.UI线程将【参数】传给子线程2.子线程获取【参数】,处理,将【结果】传给UI线程3.子线程中将【处理进度】传给UI线程4.UI线程获取【处理进度】,最终获取结果。

2024-07-31 22:18:24 465

原创 Android 线程并发:线程通信:Handler机制

发送消息自定义Handler重写handleMessage方法,处理Message获取App的UI线程的Looper对象创建Looper对象开启死循环获取当前线程的Looper对象获取MessageQueue对象获取Thread对象获取HandlerThread对象对应的Looper对象

2024-07-24 17:14:25 456

原创 Android 适配:版本适配

Android 7只需要重写ViewGroup的generateLayoutParams方法,创建需要的LayoutParmas@OverrideAndroid 15 需要重写ViewGroup的generateLayoutParams方法和generateDefaultLayoutParams方法@Override@Override。

2024-07-23 09:49:14 388

原创 Android 源码分析:ViewGroup

如果要自定义ViewGroup,对添加到其中的View对应LayoutParams有特殊要求(如需要是MarginLayoutParams),可重写ViewGroup.generateDefaultLayoutParams()和ViewGroup.generateLayoutParams()如果调用的是ViewGroup.addView(View),会调用ViewGroup.generateDefaultLayoutParams()创建需要的LayoutParamas对象。

2024-07-23 09:41:27 456

原创 代码设计:设计模式:访问者模式

类结构定义多个重载的抽象方法,方法用于访问不同的数据,方法传入数据类型实现抽象类或接口,实现多个重载的抽象方法,完成具体的数据访问并没有建立紧密的耦合关系,而是通过定义方法的参数为对方类型,建立松耦合关系访问者相关代码数据访问代码总结

2024-06-23 16:55:17 233

原创 Android 第三方框架:网络:OkHttp:源码分析:拦截器

将传入的Interceptor对象放入OkHttpClient.interceptors中OkHttpClient.interceptors最早添加到Interceptor的责任链中被添加到所有系统定义的Interceptor之前。

2024-06-21 09:16:38 639

原创 Http协议:Http缓存

http缓存重要问题在于如何实现客户端与服务端的数据同步更新问题。

2024-06-14 07:19:52 599 1

原创 Android:UI:Drawable:View/ImageView与Drawable

调用传入的Drawable.Callback的invalidateDrawable方法。

2024-06-11 15:04:12 458

原创 编程语言:语法:创建类的全局变量在声明时创建与在构造器中创建的区别

意味着无论创建对象时,使用的是哪个构造器,该变量都会被创建。在构造器中创建,类似懒加载,用时加载,不一定会被创建。构造器中创建,代表该变量根据不同的需求确定是否创建。意味着只有使用这个构造器时,变量才会被创建。在声明时创建,类似预加载,一定会被创建。声明时创建,代表该变量一定会创建。

2024-06-11 10:08:12 309

原创 编程思想:静态与动态:预加载与懒加载

预加载和懒加载就是App启动时和App运行时。

2024-06-11 10:07:40 347

原创 Android UI:Drawable:DrawableContainer

DrawableContainer封装一组Drawable,不同的DrawableContainer实现Drawable不同的展示方式。

2024-06-08 11:08:13 614

原创 Android UI:Drawable:更新操作的源码分析

更新调用传入的Callable的invalidateDrawable方法调用Drawable的invalidateSelf方法,实际上是调用View的invalidate方法调用Drawable的scheduleSelf/unscheduleSelf方法,实际上是在UI线程中延时执行或取消执行传入的Runnable。

2024-06-06 10:40:38 456 1

原创 Android 第三方框架:图片加载:Glide:功能介绍

网络加载。

2024-05-26 10:50:24 494

原创 Android 第三方框架:图片加载:Glide:API

无论是磁盘缓存,还是内存缓存,相似的一个接口,负责定义缓存的各种操作,一个实体类,负责封装缓存的数据结构(LinkedHashMap),实现具体的缓存各种操作一个封装类,实现接口,继承实体类,利用继承的实体类的方法去实现接口中的缓存的各种操作。

2024-05-26 10:40:02 726

原创 Android UI:ViewTree: 监听

观察者模式+策略模式实现依赖反转,将开发者代码注入系统的ViewTree的布局、绘制、与Window的依附关系的过程中。

2024-05-21 17:17:51 1042

原创 Android UI:ViewTree: 事件处理:Touch事件

ViewGroup继承ViewViewGroup重写View的dispatchTouchEvent ViewGroup.dispatchTouchEvent负责分发、传递Touch事件 View.dispatchTouchEvent负责处理Touch事件当查找到处理TouchEvent的View,自下而上建立一个TouchTarget的单向链表,用于记录从ViewTree的树顶到处理Touch事件的View的包含所有相关View的路线这个单向链表负责事件的传递View.disptachTo

2024-05-16 17:04:09 993

原创 Android UI: 动画:属性动画

一段时间内,属性值从A变化到B属性可以是任何类的任何属性。

2024-05-13 15:07:15 409

原创 Android UI:动画:帧动画

按顺序展示不同的图片。

2024-05-12 13:38:08 254 1

原创 Android UI:动画:视图动画

视图动画

2024-05-01 11:36:04 868

原创 面向对象:对象操作

对象操作:1.比较操作 2.NULL检查操作 3.序列化操作 4.创建对象操作 5.动态类型检查操作

2024-03-11 08:52:51 514

原创 面向对象:类操作

类操作(主要是针对引用类型的操作): 1.类型转换 2.参数化类型(泛型)

2024-03-10 20:24:03 405

原创 面向对象:数据类型

值类型的变量和常量保存的常量值引用类型的变量和常量保存的是对象

2024-03-10 19:20:14 356

原创 面向对象:面向对象的特性

面向对象的特性:1.封装和抽象 2.继承 3.重写 4.多态

2024-03-09 15:33:48 340

原创 Android UI: 自定义控件:可换行的布局控件

可换行的布局控件的实现步骤

2024-03-09 12:28:19 692

原创 Android UI:自定义控件:可换行的布局控件:代码实现

可换行的布局控件的代码实现

2024-03-09 12:26:26 1036

原创 Android UI:ViewTree

事件包括:measure、layout、draw、TouchEvent

2024-03-08 17:21:40 1978

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除