自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 安卓targetSdkVersion的简单理解

安卓targetSdkVersion的简单理解

2022-08-31 22:03:18 336 1

原创 Handler中Looper类的简单理解

是Handler消息机制中的动力来源,是它开启了一个循环,不断轮询取出消息,分发处理,让Handler机制能不断正常运作。

2022-08-20 18:28:27 186

原创 Handler中消息Message从MessageQueue出队的过程

即next()方法取出Message的逻辑,仅考虑取值逻辑,不讨论休眠、唤醒等逻辑这里要分为两种情况讨论。

2022-08-20 15:02:02 163

原创 Handler中消息Message入队MessageQueue的过程

这里又分两种情况,一是当消息队列没有消息,或者消息时间(消息预计生效的时间)为0,或者比队头时间小时,直接头插。二是其他情况,即时间要比队头大,需要挨个往后比对,找到合适的位置插入。本文中的代码省去了一些与入队流程联系不大的代码,请留意。验证消息的目标Handler不为空。消息入队的过程并不算复杂。1.首先进行一系列验证。验证消息没有正在被使用。

2022-08-20 10:17:42 168

原创 ViewPager添加和删除Fragment

2.在Activity中移除title和fragment后调用pagerAdapter的notifyDataSetChanged方法。1.自定义的PagerAdapter需要重写。

2022-08-09 17:21:49 450

原创 对ArrayDeque的一些理解

(elements.length - 1) 的作用是当head为0时,再减1能回退到数组长度减1的值,即head == elements.length - 1。关注输入数字的最高位的1,当不断相或的过程中,会不断把最高位后面的0都改成1,最后再加1,就成了2的整数次幂。(同理, tail加1的时候也是这样处理,目的是为了加到等于数组长度的时候能变回到1)5.向头部插入元素,只需要把元素赋值到head - 1的位置上,需要注意这里的算法。4.数组的长度是2的整数次幂(小于8时就直接是8)...

2022-08-06 10:20:25 151

原创 安卓实现View的惯性滚动效果(Fling)

实现惯性滚动核心步骤就三步:1.算出手指抬起时页面滚动的速度2.根据这个速度算接下来每个时间段内应该滚动的距离3.滚动这个距离首先我们来算速度,速度怎么算?请回忆以前学物理的时候的打点计时器。我们需要借助一个工具类VelocityTracker,这个工具就很像打点计时器。我们在每次出发触摸事件的时候,调用这个类的addMovement(event)方法,打个点,当我们想要计算速度时,调用获取速度的方法,它能根据这些打点帮我们算出我们想要的速度然后我们来算手指抬起后每个时间段滚动的距离,这个距离同样不需

2022-07-27 09:31:05 1816

原创 安卓实现View的滚动效果

重点主要在于在每次触摸事件中计算和上次触摸事件的偏移值,然后滚动这个距离。

2022-07-26 17:56:17 576

原创 安卓多点触控之getAction()和getActionMasked()的区别

理所当然地,既然有截取事件类型的方法,肯定就有获取事件是第几根手指的方法,即getActionIndex(),它和getActionMasked()相似,是截取低9~16位(先用0xff00和整形相与,再将结果右移8位)masked有掩盖的意思,即掩盖住不重要的部分,不看了,就只有我们需要的部分。对于单指操作而言,getAction()和getActionMasked()的结果并没有区别,是一样的。触摸事件的整形int的低9~16位的含义是指代第几只手指。安卓用一个32位的整型int标识一次触摸事件。...

2022-07-26 14:28:49 1390

原创 安卓沉浸式状态栏

然后让状态栏颜色透明(文字和图标不透明)首先让布局延申至状态栏中。

2022-07-21 09:29:52 42

原创 刘海屏全屏显示(主要是隐藏状态栏且布局在状态栏位置上生效)

但对于刘海屏,光这样还不够,状态栏倒是隐藏了,但原本状态栏的部分会有一条黑条,页面布局不能在状态栏的位置生效。此时我们需要做一些额外的工作。其实非刘海屏的话,只需要在清单文件对应的activity下指定一个自定义的theme,theme的内容为以下内容即可。我的手机是红米Note9刘海屏,其他刘海屏不一定有用,但不妨试一试。然后我们用代码将布局的位置延申到状态栏的位置。首先,我们用代码夺取状态栏位置的使用权。...

2022-07-20 17:35:24 1107

原创 关于KMP算法中next数组的一点理解

最近在看KMP算法相关的内容,一直对next数组的作用和代码求取方式有点混乱。在看了许多博客后,有了一点个人的感悟,希望能给同样有此疑惑的小伙伴提供一个参考思路。

2022-07-04 17:03:42 214

原创 饥荒mod文件夹相关杂项

饥荒文件夹路径饥荒部分文件夹在G:\Game\Steam\steamapps\workshop\content\322330文件夹下其他的才正常的在G:\Game\Steam\steamapps\common\Don’t Starve Together\mods文件夹下

2022-05-26 20:19:50 1117

原创 用Lua定义一个类

前置知识点首先,lua并不是一个面向对象的语言,但是我们可以通过适当的方法来模拟出面向对象的效果。在lua里,最像对象的我们可以马上联想到lua中的表。但是我们印象中的对象普遍都有属性和方法,但表里面好像只有属性啊。比如,local obj = { a = "a", b = "b" }没关系,上面我们也说了,需要使用适当的方法模拟。我们只需要改变一下思路,local obj = { a = "a", b = "b", print = function(msg1, msg

2022-05-26 15:38:02 732

原创 关于安卓项目依赖的一些实验

关于安卓项目依赖的一些实验单模块无依赖将app模块下的build.gradle文件中的dependencies的依赖全部删除(注意,需要自己解决各种乱七八糟的报错),项目就一个MainActivity页面,继承自Activity,页面就一个Hello World的TextView。将运行后得到的apk文件(需要改后缀名为rar)解压,得到把classes.dex拖进android studio添加依赖appcompat库在app模块下的build.gradle文件中的dependencies

2022-05-09 17:07:14 372

原创 从简单例子理解RxJava

从简单例子理解RxJava我们的目的是通过一个简单的例子,理解RxJava中“事件流”这个过程这里需要大家在看本文时自己去对照源码配合着来看,源码并不复杂先上例子val myObserver = object : SingleObserver<String> { override fun onSubscribe(d: Disposable) {} override fun onSuccess(t: String) { Log.e("TAG", t)} override fun o

2022-05-07 17:22:36 148

原创 ViewModel在页面重建时的存取

ViewModel在页面重建时的存取存当页面配置发生改变,会调用ActivityThread的handleRelaunchActivity方法,里面会依次执行销毁页面handleDestroyActivity和重建页面handleLaunchActivity。在handleDestroyActivity中又会调用performDestroyActivity 方法。最终我们的ViewModel容器就在performDestroyActivity 中存下来。关键代码:在Activity的retain

2022-05-05 10:56:52 433

原创 安卓Lifecycle的理解

安卓Lifecycle的理解个人理解,仅供参考简单使用自定义一个类(可以是一个自定义控件)实现LifecycleObserver接口这个类实现若干个你需要的生命周期方法,并在这些方法上用OnLifecycleEvent注解进行注释,注释中的值要写上对应的生命周期在用到这个类的Activity或Fragment中调用getLifecycle方法获得LifecycleRegistry,然后调用LifecycleRegistry的addObserver方法将这个类的实例添加进去就能自动检测生命周期的改

2022-05-02 16:40:51 122

原创 UML类图中五种关系的理解

UML类图中五种关系的理解我会将它们分为两大块,第一块是泛化和实现,第二块是关联、聚合和组合。每一块内部各种无法通过代码层面的实现来进行区分,更多的是需要通过具体情境下他们对于的 语义来判断。泛化和实现他们都是继承的关系,代码层面无法有效区分他们,需要通过语义来进行判断泛化表示一般与特殊的关系,它指定了子类如何特化父类的特征与行为。例如:老虎 - 动物鱼 - 动物蜘蛛 - 动物实现表示抽象和具体的关系,它指定了子类如何实现父类的特征与行为。例如:东北虎 - 老虎孟加拉虎 - 老

2022-05-01 11:19:10 162

空空如也

空空如也

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

TA关注的人

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