- 博客(51)
- 收藏
- 关注
原创 编程思想:编程范式:响应式编程
响应一般指对于事件的响应,事件包括数据变化或其他事件响应流程包括事件的发生,事件的传递,和事件的最终处理事件在起点处发生,开始传递过程传递过程,包括对事件的一系列处理,如事件封装的数据的类型转化,数据集合的批处理事件最终传递到终点,响应处理过的事件。
2024-10-11 03:50:32 161
原创 编程思想:编程范式:面向对象
类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-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
原创 Android:UI:Drawable:View/ImageView与Drawable
调用传入的Drawable.Callback的invalidateDrawable方法。
2024-06-11 15:04:12 458
原创 编程语言:语法:创建类的全局变量在声明时创建与在构造器中创建的区别
意味着无论创建对象时,使用的是哪个构造器,该变量都会被创建。在构造器中创建,类似懒加载,用时加载,不一定会被创建。构造器中创建,代表该变量根据不同的需求确定是否创建。意味着只有使用这个构造器时,变量才会被创建。在声明时创建,类似预加载,一定会被创建。声明时创建,代表该变量一定会创建。
2024-06-11 10:08:12 309
原创 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: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
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人