- 博客(427)
- 资源 (2)
- 收藏
- 关注
原创 Android 属性动画常见效果收集
转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/128948795本文出自属性动画往期博客。
2023-02-09 10:58:16
117
1
原创 Android SVG认知误区?
为了更好的视觉效果,经常在项目中使用了 svg (可缩放矢量图形),如下:查看包体积:查看apk 包体积,可以看到在 xhdpi、xxhpdi、xxxhpdi 分别生成了图片,并且有的比较大。
2023-02-06 20:14:04
431
原创 Android RecyclerView实现ViewPager效果,用LinearSnapHelper
SnapHelper是RecyclerView功能的一种拓展,使RecyclerView滑动行为类似ViewPager,无论怎么滑动最终停留在某页正中间。ViewPager一次只能滑动一页,RecyclerView+SnapHelper方式可以一次滑动好几页,且最终都停留在某页正中间。SnapHelper的实现原理是监听RecyclerView.OnFlingListener中的onFling接口。LinearSnapHelper是抽象类SnapHelper的具体实现。上面的效果只需下面几行代码即可。
2023-01-30 14:48:28
194
原创 Android Glide 4.9 常见方法总结
DrawableImageViewTarget 代替原来的 SimpleTarget。图片会缩放 ,铺满 imageView , 四周会被裁剪。图片保持原来比例,在 imageView 中居中显示。submit 有两个方法。
2023-01-13 17:10:17
540
原创 Android hilt 依赖注入使用详解
的对象都是一个新对象,如果我们要想在 Activity 作用域中实现对象共享,类似于 jetpack 中的 viewModel。如果是 Activity 实例的 context , 需要添加 @ActivityContext。在 android 项目中,但凡一个类要使用 hilt 依赖注入能力,就要在类头部加入。修饰的注入类,在 Activity 类多次申明注入,得到的实例只有一个。如果是 Activity 实例的 context , 需要添加。注解作用在类的构造函数中。申明需要使用的注入类。
2022-12-23 23:13:57
847
2
原创 Android BottomSheetDialogFragment 使用详解,设置圆角、固定高度、默认全屏等
MD风格的底部弹窗,比自定义dialog或popupwindow使用更简单,功能也更强大。其实细分来说,是BottomSheet、BottomSheetDialog、BottomSheetDialogFragment。
2022-11-21 20:15:54
1570
原创 Android DataStore 使用详解
Jetpack DataStore 是一种数据存储解决方案,允许您使用协议缓冲区存储键值对或类型化对象。DataStore 使用 Kotlin 协程和 Flow 以异步、一致的事务方式存储数据。
2022-10-19 11:26:22
2133
原创 Android PorterDuffXfermode使用及工作原理详解
类继承自。在用Android中的Canvas进行绘图时,可以通过使用将所绘制的图形的像素与Canvas中对应位置的像素按照一定规则进行混合,形成新的像素值,从而更新Canvas中最终的像素颜色值,这样会创建很多有趣的效果。当使用时,需要将将其作为参数传给方法,这样在用该画笔paint进行绘图时,Android就会使用传入的,如果不想再使用Xfermode,那么可以执行。这个类中的Porter和Duff。
2022-10-12 18:22:50
841
1
原创 Html第14集:绝对定位
可以看到 box1 开启绝对定位后,box1 脱离文档流,box1 提升层级。box2 向上顶,移动到 box1 的位置。
2022-10-09 16:59:24
83
原创 Html第13集:相对定位
作用:相对于自身原来的位置进行偏移,属性有:top,left,right,bottom。相对定位,首先我们来讲一下position: relative;
2022-10-09 16:06:34
91
原创 Html第12集:外边距重叠
一般是指垂直方向相邻的外边距会发生重叠现象,大多发生在兄弟元素和父子元素之间。外边距都是50,取最大值所以它们之间的间隔也是50。-100的绝对值较大,所以box2向上移动100。-50+50=0,所以他们之间的间距是0。box2是box1的兄弟元素。box2是box1的子元素。
2022-10-09 15:11:44
278
原创 Html第11集:div、span、div 盒子模型
div、span 是没有语义的。他们就是一个盒子(容器),用来装内容。1、在功能方面:div是一个块级元素,它包含的元素会自动换行。而span是行内元素,在它的前后不会换行。span没有结构上的意义,只是单纯的应用样式,其它元素不适合时,就可以使用span元素。span可以作为div的子元素,但div不能是span的子元素,如果出现span中出现div不符合ws3c的页面标准。
2022-10-09 10:58:43
533
原创 Java 数组拷贝
方法其实就是返回一个数组,而这个数组就等于数组array的前 newLength 数。其实内部用了 System.arraycopy 方法。
2022-09-28 10:06:50
186
原创 Html第8集:AJAX Http请求、Get、Post、上传文件、表单
可以在服务器测解决,下面用 srpingboot 举例。如果请求某个接口,出现跨域出错问题。添加 header 使用。方法之后执行,顺序不能错。
2022-08-25 19:57:22
198
原创 Html第7集:debugger调试、Json
debugger 关键字用于停止执行 JavaScript,并调用调试函数。如果没有调试可用,debugger 语句将无法工作。开启 debugger ,代码在第三行前停止执行。这个关键字与在调试工具中设置断点的效果是一样的。
2022-08-25 15:54:20
390
原创 Html第6集:h1、button、input、img、p、br、a
alt : 在浏览器无法载入图像时,替换文本属性告诉读者她们失去的信息。此时,浏览器将显示这个替代性的文本而不是图像。为页面上的图像都加上替换文本属性是个好习惯,这样有助于更好的显示信息,并且对于那些使用纯文本浏览器的人来说是非常有用的。是空标签,意思是说,它只包含属性,并且没有闭合标签。如果把网络关闭,显示的效果就会显示。在 HTML 中,图像由。border 边框。
2022-08-25 10:52:12
103
原创 Html第5集:DOM 事件 、JavaScript 事件
HTML 事件是发生在 HTML 元素上的事情。当在 HTML 页面中使用 JavaScript 时, JavaScript 可以触发这些事件。
2022-08-24 17:58:48
172
原创 Html第4集:对象定义、typeof、instanceof、undefine
!DOCTYPE html > < html lang = "en" > < head > < meta charset = "UTF-8" > < title > 测试 < / title > < script > //定义对象 user = {
2022-08-24 14:14:09
249
原创 Html第3集:script、for循环、while、switch
元素既可包含脚本语句,也可以通过 “src” 属性指向外部脚本文件。标签用于定义客户端脚本,比如 JavaScript。通常用于图像操作、表单验证以及动态内容更改。
2022-08-24 13:59:19
245
原创 Android Glide 3.8 常见方法总结 【圆角、下载、回调】
发现公司的一个项目,glide用的还是3.8版本。总结一下,常见的方法,加速开发,拒绝加班。在几年前,总结过3.7版本的使用方法,
2022-07-30 14:08:09
902
原创 Android 服务动态发现 SPA 之 Auto Service
动态服务发现机制,可以很好的解耦,不必直接依赖接口实现类。ServiceLoader.load每次都会创建一个新对象。生命周期用完即销毁缺点也很明显,要手动往写入文件。有没有一种自动写入的工具,可以解放双手?有的,下面我们就介绍auto-serviceauto-service的优势是,自动的往写入文件,解放了双手,666666我们看一眼这个目录,在build目录可以看到。......
2022-07-18 20:54:19
2239
原创 Android LayoutInflater布局文件解析过程分析
今天在项目中因为LayoutInflater参数使用错误,导致布局中的最外层的宽高都失效。排查好好久,都没有解决,一度怀疑是不是框架的问题。最后发现是LayoutInflater参数使用错误,恍然大悟。
2022-07-18 19:05:36
396
原创 Android 全面剖析SharedPreferences
最近接手了一个项目,由于项目比较老,没有一个好的架构,发现的代码满天飞。比如;随即产生一个疑问,如果我多次调用,那么获取的SharedPreferences实例是一个,还是多个????????直接说答案相同的fileName,不管调用多少次,SharedPreferences都是同一个实例。也就是说SharedPreferences一旦被创建,就会在一个map中保存起来,map的key就是SharedPreferences的fileName。中。...
2022-07-17 18:38:30
232
原创 Android 探究RecyclerView onViewAttachedToWindow 触发时机
所以在特定场景下,可以通过这两个回调来解决少量Item移出屏幕,移进屏幕所需要的工作。答案recyclerView已经有adapter了,又绑定了一个新的adapter,就会执行。当第一次setAdapter的时候,屏幕内所有item会调用。适合做item曝光埋点,但是要注意,这个方法可能会执行多次。方法的话,会触发当前在屏幕中的所有Item的。,屏幕类所有的item会先执行。进来,移出的时候,当然也要。出去,所以对应的自然是。综上,Adapter的。......
2022-07-16 18:08:42
1670
原创 Android 探究View onDetachedFromWindow 触发时机
当 Activity 销毁的时候, 的 handleDestroyActivity 方法会执行,精简版如下:简单说一下,每个方法的含义: 遍历移除所有子View 是 的意思 。在这里其实是 实例 是 是 实例先看看 就是 把 的 置为 null 。 的 原来是, 的意思是:在来看 root 是 ViewRootImpl 实例 是 又因为 没有覆写 , 所以我们要看 的 方法。遍历子view , 调用其 dispatchDetachedFromWindow 方法,然
2022-07-09 00:52:40
1380
原创 Android 探究View onAttachedToWindow 触发时机
我们先从 的 说起。会调用当前 的 通过递归调用,会逐级调用 parent 的 ,最终会走到 的 因为 的 parent 是 ,所以最终会走调用 后续会执行 精简代码如下:调用 方法,从逻辑中我们发现 host 其实就是 。所以就相当于 因为 也是一个 ViewGroup ,并且没有覆写 方法。所以我们直接看 的 方法 的 方法 ,遍历 子view , 然后调用 。发现 的 会调用 。到此 , 已经分析完。...........................
2022-07-04 20:28:25
1141
原创 Android 使用ViewTreeLifecycleOwner获取Lifecycle
是中提供的的一个扩展方法,可以快速地获取一个最近的或者的。通过 将当前 设置到通过 将当前 设置到根通过 将当前 设置到通过 将当前 设置到随着 的普及,我们可能需要在 内部基于 进行 订阅等工作,当嵌套比较深时,使用扩展方法可以避免的层层传递,简化代码.............
2022-07-03 17:04:38
1102
原创 Android ktx使用
Android KTX 是包含在 Android Jetpack 及其他 Android 库中的一组 Kotlin 扩展程序。KTX 扩展程序可以为 Jetpack、Android 平台及其他 API 提供简洁的惯用 Kotlin 代码。简单来说 , ktx 就是:官方地址:https://developer.android.google.cn/kotlin/ktxmaven版本号:https://mvnrepository.com/artifact/androidx.core/core-ktx添加依赖:
2022-07-02 17:33:30
1172
原创 Android View onFinishInflate
的 是一个空方法。我们知道 的 方法,最终会调用 的 。 的 方法,会使用 解析布局,并且把布局添加到 中,可以理解为添加到 中在完成把 添加到 中,会调用
2022-06-20 19:15:57
388
原创 Git 可视化工具 Fork 使用指南
最近遇到一个新项目,经过数年的积累,大概有 30000 个分支,用可视化工具打开直接卡死。由于分支实在是太多了,一般的可视化工具,直接卡死,比如 就直接卡死,测试了很多软件,最终 Fork 脱颖而出,可以完全胜任几万分支的情况。fork: 一款 git 可视化工具官网:https://git-fork.com/下载:https://cdn.fork.dev/mac/Fork-2.18.dmg把文件从 移动到 注意:被选中的 commit 都会被合并到前一个 。所以 合并到 合并结果:Dro
2022-06-05 19:41:28
4113
2
原创 Android中使用 Protobuf
Protobuf,类似于json和xml,是一种序列化结构数据机制,可以用于数据通讯等场景,相对于xml而言更小,相对于json而言解析更快,支持多语言。Protobuf使用 文件来定义数据格式,所以我们首先新建立一个文件,并在文件中填下如下内容:这样我们就定义好了一个基本的Person对象,下面我们对文件中的关键字进行一一说明:syntax:指定proto的版本,protobuf目前有proto2和proto3两个常用版本,如果没有声明,则默认是proto2.package:指定包名。import:导
2022-06-03 22:30:38
2458
原创 Android自定义View Paint
转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/123524086本文出自【赵彦军的博客】文章目录画笔模式画线条画圆画矩形画弧形其他清空画笔样式画笔模式mPaint.setStyle(Paint.Style.FILL); //设置画笔模式为填充STROKE //描边FILL //填充FILL_AND_STROKE //描边加填充实验代码Paint paint = new Paint();paint.setCol.
2022-03-16 15:35:25
3773
原创 Android硬件加速
Android 硬件加速原理Android 硬件加速原理理解Android硬件加速原理的小白文硬件加速控制(Controlling Hardware Acceleration)android提供了以下四个级别的硬件加速控制:ApplicationActivityWindowViewApplication级别在应用的Android清单文件中,把下列属性添加到元素中,能够开启整个应用程序的硬件加速:<application android:hardwareAccelerated=
2022-03-08 11:40:05
4821
原创 Android骨架屏实现方案
Skeletonhttps://github.com/ethanhua/Skeleton依赖引入buildscript { repositories { jcenter() }}allprojects { repositories { jcenter() }}dependencies { implementation 'com.ethanhua:skeleton:1.1.2' implement
2022-03-07 11:30:58
3210
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人