
android筑基
文章平均质量分 72
主要是整理一些目前常用的技术点和必须掌握的点。
放开那只肥鸡
Android移动开发
展开
-
Message享元模式学习
android是如何对Message进行复用的java的类是由成员变量+构造函数+成员方法组成->先看成员变量一开始的获取Message对象如何回收第一次进来第二次进来第三次进来回过头来我们再看获取message到了这里想必大家都明白它的核心是什么了吧?java的类是由成员变量+构造函数+成员方法组成->先看成员变量涉及复用的关键成员变量有:Message next;private static Message sPool;private static int sPoolSize =原创 2022-05-18 15:15:40 · 447 阅读 · 0 评论 -
支持禁用左右滑动切换的ViewPager
/** * 支持禁用左右滑动切换的ViewPager * setScrollable true 支持滑动切换 false 不允许滑动切换 * Created by Peekaboo on 2021/5/28 19:56 */public class DisableScrollViewPager extends ViewPager { private boolean mIsEnableScroll = true; public DisableScrollViewPager(Co原创 2022-01-11 11:02:11 · 121 阅读 · 0 评论 -
短信验证码输入框
其实用官方自定的那个inputEditText默认带下划线的,然后自己再实行焦点和输入框弹出等操作也可以。写这个自定义View主要是为了练习。/** * 实现了粘贴事件监听回调的 EditText */open class ListenPasteEditTextTest : AppCompatEditText { constructor(context: Context): super(context) constructor(context: Context, attribu.原创 2021-11-22 13:57:03 · 2283 阅读 · 0 评论 -
CoordinatorLayout+ AppBarLayout+ CollapsingToolbarLayout
主要记录一下在使用这几个组合控件中遇到的一些小问题。CollapsingToolbarLayout是只能作为AppBarLayout的子布局,一般会加toolbar和其它的布局,反正是一个FrameLayout,随便加。想要当前控件侵入到状态栏上,布局必须支持android:fitsSystemWindows=“true”。想要上面这个属性生效还必须设置系统状态栏:@android:color/transparent当设置透明就会默认把布局撑上去,上面这个是撑上去之后预留出状态栏的空间。来到了C原创 2021-11-18 10:25:58 · 4672 阅读 · 0 评论 -
给String字符串某些字添加高亮、点击监听、加粗等
原创 2021-10-29 16:18:28 · 912 阅读 · 0 评论 -
HashMap学习
线程表、链表查找快、曾删慢引出了hashMap数组加链表阈值 0.75 16头插法取模 === hash & (length -1)为什么一定是2的次幂因为二进制中进行&运算的时候,二进制码都是1。尽量减少hash碰撞,而且充分占据每个数组的位置,必须要保证(数组大小-1)的二进制全是1,例如(16-1)的二进制是1111。浪费了至少百分之75的空间,以空间换时间。SparseArraykey int key是顺序大小摆放,插入中间的话后面的位置全部arrayc原创 2021-08-24 22:47:03 · 2694 阅读 · 0 评论 -
ActivityManagerService学习
ActivityManagerService简称AMS,单单这个类本身就超过2万7千行代码,涉及到的类加起来更是一个天文数字,虽然不像前面的启动流程都是底层C和C++代码,但是如果不是做这一块的开发的话还是主要了解为主,扩展一下知识面。AMS是什么?1.从java角度来看,ams就是一个java对象,实现了Ibinder接口,所以它是一个用于进程之间通信的接口,这个对象初始化是在systemServer.java 的run()方法里面2. AMS是一个服务ActivityManagerServic原创 2021-06-01 19:47:29 · 731 阅读 · 1 评论 -
CoordinatorLayout:协调者布局
1、作为应用的顶层布局2、作为一个管理容器,管理与子View或者子View之间的交互功能:处理子控件之间依赖下的交互处理子控件之间的嵌套滑动处理子控件的测量与布局处理子控件的事件拦截与响应以上四个功能,都建立于 CoordainatorLayout中提供 的一个叫做Behavior的 “插件”之上。Behavior 内部也提供了相应方法来对 应这四个不同的功能NestedScrolling机制的局限性:child parent之间 1:1当CoordainatorLayout中子控原创 2021-05-05 12:57:08 · 1033 阅读 · 1 评论 -
嵌套滑动学习
我们知道两个同一方向的可以滑动的View,如果不做任何处理,会出现滑动冲突,处理滑动冲突我们内部和外部拦截法。如果有朋友还不知道事件分发的原理可以看事件分发源码的学习分享处理滑动冲突之后还是存在缺陷,比如无法一次滑动操作父View消费完之后子View没有办法继续消费,滑动惯性也无法传递,所有就有了:NestedScrollingParent和NestedScrollingChild而我们使用的时候是通过NestedScrollingParentHelper和NestedScrollingChildH原创 2021-04-22 22:47:15 · 352 阅读 · 0 评论 -
自定义LayoutManager实现探探图片滑动效果
它的item是一个帧布局,后面一个覆盖前面的,最先显示的是最后一张,后面显示的图片需要缩放一点点。没有拖动的时候只显示三张缩小,第三张后面的缩小参数可以说是一样的参数。至于拖动的话可以使用ItemTouchHelper来辅助使用...原创 2021-04-11 20:04:36 · 370 阅读 · 0 评论 -
RecyclerViewd回收复用
之前也从鸿洋大神那看过类似博文,留下的大概印象是:recyclerView有四级缓存,其中一种是自定义缓存,当时作者还尝试使用自定义的缓存,但是结果是缓存错乱,作者说暂时还不明确它的作用,目前官方为我们定义的其他的缓存已经够用了。看完之后感觉有点乱,还是没能理解它的原理和机制。我们知道缓存其实缓存的就是ViewHolder,可以通过打印查看onCreateViewHolder和onBindViewHolder来查看缓存情况。四级缓存:1. mChangeScrap与 mAttachedScrap 用原创 2021-04-11 14:42:52 · 190 阅读 · 0 评论 -
RecyclerView的ItemDecoration
本篇文章主要记录学习ItemDecoration的要点1、目前recyclerView的ItemDecoration是个抽象类,我们学习它的时候可以去看它的实现类DividerItemDecoration这里面主要有三个方法:onDraw、onDrawOver、getItemOffsets public DividerItemDecoration(Context context, int orientation) { final TypedArray a = context.obta原创 2021-04-08 21:19:52 · 385 阅读 · 0 评论 -
java并发编程学习三
java并发编程学习三我们继续跟进并发编程的相关技术。单例:懒汉式创建当CPU对创建single指令进行重排序的时候,开辟了一块地址给single,但是还没有对single的具体数据进行赋值,这个时候single的对象的引用有了,但是对象的域还没有进行赋值。可以把对volatile变量的单个读/写,看成是使用同一个锁对这些单个读/写操作做了同步//上传图片 get set方法volatile变量自身具有下列特性:可见性。对一个volatile变量的读,总是能看到(任意线程)对这个volat原创 2021-02-20 20:18:55 · 155 阅读 · 2 评论 -
android自定义View学习二之事件分发
android 自定义View学习一之onMeasure和onLayout这里我们开始第二篇学习:android的事件分发我们这里主要是将单点触摸:关键点:move事件会多次触发为什么这么说呢?我们往下开,等会会解开这个疑惑?一般情况下的分发逻辑:我们在屏幕上点击一下屏幕,首先是activity的dispatchTouchEvent先响应:public boolean dispatchTouchEvent(MotionEvent ev) { if (ev.getActio原创 2021-03-21 19:23:03 · 215 阅读 · 0 评论 -
android 自定义View学习一之onMeasure和onLayout
本文主要作为一个回忆笔记存在,不是从一开始的源码研究,所以是一个结论笔记。通常来说我们创建一个activity的布局层次:原创 2021-03-21 14:40:11 · 1901 阅读 · 0 评论 -
Android 虚拟机与ClassLoader类加载
本编文章是热修复的入门知识点。先说一下android的虚拟机运行与java的jvm运行有什么区别,如果有朋友看过我之前写java内存管理的话应该知道jvm的内存管理运行大概是一个什么样,其实android的虚拟机这里暂时称为Dalvik和jvm是非常相似的,因为就是仿着它的特性做的,其中有一些不同。jvm是基于栈的运行,一个线程运行到某个方法的时候,首先会方法入虚拟机栈,根据操作数栈进行操作,android的Dalvik也是差不多,但是android是虚拟寄存器。虚拟寄存器说白了就是块内存,它不是真原创 2021-03-10 21:37:50 · 192 阅读 · 0 评论