自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

leilifengxingmw的博客

生活有诗和远方,还有她。

  • 博客(109)
  • 资源 (19)
  • 收藏
  • 关注

原创 RecyclerView notifyItemChanged 之后的源码分析

i >= 0;//注释1处,记录动画之后的所有ViewHolder信息 animationInfo,保存到 mViewInfoStore 中//注释2处,之前变化的ViewHolder的动画信息。= null &&!// 保存到 mViewInfoStore 中} else {//变化的ViewHolder,之前的动画信息//注释3处,变化的ViewHolder之后的动画信息添加到 mViewInfoStore 中。

2024-03-28 16:47:33 717

原创 RecyclerView 调用 notifyItemInserted 自动滚动到底部的问题

在我们的例子中,HeadViewHolder 的 position = 0,从 0 开始 notifyItemInserted,会将 HeadViewHolder 向下偏移。然后开始布局的时候,position = 4 的位置 itemType 是正常的ViewHolder,所以 position = 4 的位置布局的是正常的ViewHolder。为什么会结束呢,在我们的例子中,remainingSpace = 2255 ,布局完 144 + Math.abs(-2700),已经大于 2255 了。

2024-03-28 11:49:15 946

原创 RecyclerView notifyItemRemoved 之后的源码分析

注释1处,调用addAnimatingView 方法。注释2处,动画结束。当我们调用Adapter的 notifyItemRemoved 方法的时候,会调用RecyclerView的 requestLayout 方法,然后会调用RecyclerView的 onLayout 方法,然后会调用 RecyclerView 的 dispatchLayout 方法。回到 dispatchLayoutStep1 方法,注释4处,新创建的ViewHolder,满足条件,记录新创建的ViewHolder的动画信息。

2024-03-24 12:15:12 742

原创 2024年,使用平安证券,股票交易手续费

先说下结论:买入股票:会收取和。卖出股票:会收取和。券商佣金:跟具体的券商有关,现在大部分网上开户的应该一般都在,或者更低。如果感觉佣金高了,可以联系券商客服降低佣金。或者更换其他佣金更低的券商。过户费:上海交易所的是成交金额的,这项费用是比较低的。。印花税:是成交金额的,一万块钱收5块。详细的手续费收取规则请查看,但是这个文档最后更新日期是了,有的数据可能不准确,下面用今年(2024年)真实的交易来计算一下各项费用的费率。

2024-03-23 16:13:29 559

原创 RecyclerView notifyItemInserted 之后的源码分析

分析场景:RecyclerView使用线性布局,方向为竖直方向,布局从上到下,宽高都是 MATCH_PARENT。开始就2条数据。然后新插入的1条数据会插入到position=1的位置上。把原来的position=1的数据挤到屏幕之外。

2024-03-20 20:42:01 870

原创 RecyclerView notifyDataSetChanged 之后的源码分析

使用线性布局,方向为竖直方向,布局从上到下。宽高都是MATCH_PARENT。首次设置适配器以后,更改数据(注意,数据的数量没有变化),然后调用。没有手动去滚动RecyclerView。

2024-03-18 19:58:20 899

原创 RecyclerView源码分析之二 滚动时候的ViewHolder的回收和复用

RecyclerView 使用线性布局,方向为竖直方向,布局从上到下。第一次设置 LayoutManager 和 Adapter ,正常显示数据以后,滚动 RecyclerView。**其他注意的点:**在调试过程中发现,GapWorker 的 prefetchPositionWithDeadline 方法干扰到 RecyclerView 的回收和复用过程。有时候会导致 导致 Recycler.mCachedViews的 size变成了3(默认是2)。这个不是主要流程,我们先忽略,有兴趣可以仔细研究研究。

2024-03-18 16:54:14 921

原创 RecyclerView第一次设置LayoutManager和Adapter之后的源码分析

注释2.1处,Note: 注意,当我们在布局里设置 RecyclerView 的宽高为 match_parent 的时候, 这里的 widthMode 和 heightMode 都是 MeasureSpec.EXACTLY,会直接return。注释2处,偏移所有的子View,保证RecyclerView的第一个子View的top坐标就是RecyclerView的top坐标减去RecyclerView的paddingTop。scrollBy 方法的注释1处,注意,这里继续调用fill方法填充子View。

2024-03-16 12:06:57 803

原创 Android 使用.9图 NinePatchDrawable实现动态聊天气泡

Android 使用png动态构建.9图 NinePatchDrawable ,实现动态聊天气泡效果,或者静态聊天气泡效果。

2023-11-07 22:08:33 848 4

原创 如何选择一只股票,待完善。

悟空觉得师傅能力太差,自己亲自上场,直接做跨境物流,每个订单收费很高,一个筋斗十万八千里,一天就可以来回送好几趟。因此,通过与同行业或同类企业的比较,可以更准确地评估企业的资产利用效率。这可能意味着企业的风险较高,因为商誉在一定程度上是有风险的,如未来收入的不确定性和商誉价值的贬值风险。于是,师傅骑着白龙马去送外卖。该指标在实际操作的时候,最好是:选过去8个季度,每个季度的营收增长率都超过15%的公司。同时现金收入比率还可以判断,公司在上下游的话语权和地位,如果你对下游很弱势,那么下游可能会拖欠你的账款。

2023-09-21 09:24:26 117

原创 港股交易相关知识点,待完善

竞价限价盘是有指定价格的买卖盘。指定价格等同最终参考平衡价格或较最终参考平衡价格更具竞争力的竞价限价盘(即指定价格等同或高于最终参考平衡价格的买盘,或指定价格等同或低于最终参考平衡价格的卖盘)或可按最终参考平衡价格进行对盘视乎另一方是否有足够可配对的买卖盘。特别限价盘是没有输入价格的限制,只要沽盘的价格是等于或低于最佳买入价,又或者买盘的价格是等于或高于最佳沽出价。:限价盘是指投资者只可以其指定之价格,买入或卖出证券,卖盘的输入价格不可低于最佳买入价(如有),而买盘的输入价格不可高于最佳卖出价(如有)。

2023-09-07 09:14:58 184

原创 PAGView在RecyclerView中复用Item导致PAGView无法播放的问题

先说解决方法:将版本号升级到大于等于的版本可以解决问题。官方已经修复了这个问题。。低于这个版本都有问题。我们项目中的版本是。

2023-02-08 11:02:55 995

原创 Android 如何改变View的绘制层级

Android 改变View的绘制层级

2022-10-23 11:59:46 4345

原创 Kotlin中 Handler 移除 Runnable 无效

Kotlin Handler 移除 Runnable 无效。

2022-09-26 14:33:53 958

原创 Android Resource是如何获取颜色和图片的

首先扯点别的:上海天气真的是太热了。我们使用的颜色通常有两种,一种是在 文件中定义的普通的16进制的颜色。一种是在 目录下定义的xml格式的颜色文件。这种颜色是一个selector对象。例如: color_list.xml加载颜色,调用 Resources 的 getColor() 方法。注释1处,获取正常的16进制颜色并返回。注释2处,获取在src/main/res/color 目录下定义的xml格式的颜色。调用 ResourcesImpl 的 loadColorStateList 方法。注

2022-07-10 12:12:27 1281

原创 股票相关知识

了解一些理财相关的知识,为实现财务自由奠定基础,哈哈。简书同步发布股票到底是什么1、股票的本质是什么?——股票是股份的凭证,股份是你对某家公司的所有权。2、企业为什么要发行股票?——为了融资来发展公司。3、个人为什么要投资股票?——为了获得收益,包括分红收益,以及股价上涨带来的溢价收益。股票的价格IPO:首次公开募股(Initial Public Offering)是指一家企业第一次将它的股份向公众出售。股价=每股收益×市盈率股价=每股收益 \times 市盈率股价=每股收益×市盈率,即P=E

2022-05-29 19:10:24 750 2

原创 基金相关知识

了解一些理财相关的知识,为实现财务自由奠定基础,哈哈。基金是什么##基金的本质是什么?基金:代表一种委托关系,委托专业机构帮你理财,收益受专业机构的理财能力影响,一般而言,收益小于股票,大于债券,相对应,风险小于股票,大于债券。基金的相关主体有哪些?基金管理公司:就是负责管理基金的公司,他们的工作包括发起设立基金,进行基金运作,帮助投资者获得收益。一个基金管理公司,可以管理多个基金(大点的基金公司,基本上都是好几十个)。投资者:投资者投资于基金,一个投资者可以同时投资于多个(没有限制,

2021-09-21 11:25:00 8498

原创 CardView是怎么实现阴影的?

Build.VERSION.SDK_INT >= 21实现原理Build.VERSION.SDK_INT >= 21,也就是Android版本5.0及以上采用了 Material Design 设计语言,引入了 Z 轴的概念,也就是垂直于屏幕的轴,Z 轴会让 View 产生阴影的效果。Android Material Design 阴影实现所以在Android版本5.0及以上很简单,就是Z轴实现的阴影。但是有一点需要注意,使用CardView的时候,CardView要距离父布局有一定的ma

2021-08-15 15:59:54 2939

原创 CardView是怎么实现圆角的?

源码版本:androidx1.0.0最基本的使用方式,添加了app:cardCornerRadius属性,就可以实现圆角了。app:cardElevation是用来实现阴影效果的,我们暂时不管阴影。Build.VERSION.SDK_INT >= 21实现原理我们先看Build.VERSION.SDK_INT >= 21,也就是Android版本5.0及以上的是如何实现圆角的。先说一下5.0及以上的结论:给CardView设置一个圆角矩形的背景。使用该背景作为轮廓剪裁CardView

2021-08-10 22:45:49 3242

原创 Android属性动画之旋转动画

旋转动画有三种绕着竖直中心线旋转绕着水平中心线旋转绕着中心点平面选择绕着竖直中心线旋转 val rotationYAnimator = ObjectAnimator.ofFloat(ivRotationY, "rotationY", 0f, 360f) rotationYAnimator.duration = 3000 rotationYAnimator.start()角度增加是逆时针方向旋转。注意,如果旋转角度是90度的话,最终View会不可见。当要旋转的View尺寸很小的时候,

2021-08-09 20:57:21 2598

原创 Android 混合模式之 PorterDuffXfermode

注意:在使用PorterDuffXfermode的时候,目标图像(DST)和图像(SRC)混合的操作要在一个新的图层上进行,否则当前的Canvas上的像素会影响混合操作。@Overrideprotected void onDraw(Canvas canvas) { //创建一个新的图层 int layerId = canvas.saveLayer(new RectF(), n...

2020-06-22 09:27:19 1248

原创 Kotlin协程实现原理

为什么需要协程?协程可以简化异步编程,可以顺序地表达程序,协程也提供了一种避免阻塞线程并用更廉价、更可控的操作替代线程阻塞的方法 – 挂起函数。Kotlin 的协程是依靠编译器实现的, 并不需要操作系统和硬件的支持。编译器为了让开发者编写代码更简单方便, 提供了一些关键字(例如suspend), 并在内部自动生成了一些支持型的代码。实现细节Continuation passing styl...

2019-12-08 12:36:17 2515

原创 Java AbstractQueuedSynchronizer(AQS)浅析之一

本篇文章对Java中的AbstractQueuedSynchronizer(AQS)进行分析和学习。若有不正之处请多多谅解,并欢迎批评指正。为叙述方便,下文都以AQS替代AbstractQueuedSynchronizer。使用的Java版本src git:(master) ✗ java -version java version "1.8.0_201"Java(TM) SE Runti...

2019-11-12 08:52:35 223

原创 Java synchronized 关键字实现原理

使用的java版本src git:(master) ✗ java -version java version "1.8.0_201"Java(TM) SE Runtime Environment (build 1.8.0_201-b09)Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode)先说结论:对于同...

2019-11-02 17:35:46 235

原创 Git 使用cherry-pick摘取提交

以前很少使用cherry-pick这个命令,今天研究了一下如何使用cherry-pick摘取提交,便记录一下以便后续查阅。初始git历史如下图所示。现在我们在master分支上开始测试cherry-pick这个提交点上,这个提交点上的commit id是674d60f。cherry-pick 摘取一个提交点git cherry-pick <commit-id>比如说我们现...

2019-11-01 09:16:21 2088

原创 Git重置某些文件到指定版本

简书同步发布 Git重置某些文件到指定版本开始提交历史如下图所示,我是使用source tree 来查看提交历史的。我的目的是将v3版本的 MainActivity.java 和 SecondActivity.kt 重置到v1版本。v1版本MainActivity.java private void mainV1(){ }SecondActivity.kt ...

2019-10-22 23:29:03 2245

原创 getDimension()、getDimensionPixelSize()、getDimenPixelOffset()

简书同步发布简书链接:getDimension()、getDimensionPixelSize()、getDimenPixelOffset()我们在自定义View的时候,通常会指定自定义View的字体大小,然后我们获取字体大小的时候,可以有三个方法供选择。getDimension()getDimensionPixelSize()getDimenPixelOffset()这三个方法的...

2019-09-26 22:34:12 894

原创 Java反转单链表

/** * <p> * Desc:定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的头结点。 * <p> * 测试用例 * 1. head 为null * 2. 只有一个节点 * 3. 正常的链表 * <p> */public static class ListNode { int value; ...

2019-09-22 14:02:15 182

原创 Java实现快速排序算法

快速排序快速排序使用分治法(Divide and conquer)策略来把一个序列(list)分为两个子序列(sub-lists)。步骤为:从数列中挑出一个元素,称为"基准"(pivot),重新排序数列,所有比基准值小的元素摆放在基准前面,所有比基准值大的元素摆在基准后面(相同的数可以到任一边)。在这个分区结束之后,该基准就处于数列的中间位置。这个称为分区(partition)操作。递...

2019-09-22 13:35:36 1451

原创 Android Handler

Handler 实例化–>发送消息–>到处理消息流程。1:Handler 实例化在主线程中实例化 //在主线程创建Handler对象 private Handler handlerMain = new Handler() { @Override public void handleMessage(Message msg) { /

2019-07-27 23:48:00 1334

原创 Android View ViewGroup 的measure过程

首先扯点别的:“光阴似箭,日月如梭”,这句话小学就知道了,随着年龄的增长,越来越觉得如此,人生如白驹过隙。毕业工作快一年了,但是感觉自己Android方面的基础知识还是不扎实,所以看看开发艺术探索,巩固提高自己。View 的measure过程:measure 过程决定了View的宽和高。measure完成以后,就可以通过getMeasuredWidth和getMeasuredHeight来获取...

2019-07-11 22:50:14 1328

原创 看源码之HashMap

先扯点别的:听说拳皇97界的大魔王老K退役了,不知道以后还能不能见到那么犀利的大门。最近感觉自己的拳皇水平有点提升,应该能排到100多线的水平吧。今天记录一下看HashMap源码的过程,感觉HashMap的源码要比ArrayList难一点。所以只看主要流程,不可能每一行代码都搞懂什么意思。先看一下HashMap的继承结构图 HashMap:它根据键的hashCode值存储数据,大多数...

2019-06-23 23:27:19 978

原创 Android Context继承结构图

好久没在csdn写博客了,哈哈。

2019-06-16 18:47:04 745

原创 Android Studio 简单生成so文件并调用

平台:windows IDE :Android Studio 下载好ndk:下载地址 https://developer.android.com/ndk/downloads/index.html第1步:新建一个Android Studio 工程 JniHelloWorld。新建一个MyJni.java文件。 MyJni.javapublic class MyJni

2019-03-31 23:08:24 49018 17

原创 菜鸟看源码之AsyncTask

首先扯点别的:今天是第二天上班,看了看日历已经是2月23号了,2018年还剩9个多月。真是感觉人生如白驹过隙啊。今年自己竟然不知不觉已经26周岁了,趁着还算比较年轻(再过个3,4年这话就不好说了),努力奋斗!今天梳理一下AsyncTask的源码这部分文字叙述摘抄自郭霖老师的博客 Android AsyncTask完全解析,带你从源码的角度彻底理解 先看基本的使用方法:由于AsyncTas...

2019-02-14 09:20:47 327

原创 ThreadPoolExecutor是怎样执行任务的

先扯点别的:最近被公司外派到了嘉定区,新租了一个房子,马马虎虎,每天走路上班大约30分钟。早上8点半上班,下午5点半下班,和以前的作息规律有点不一样,逐渐适应,调整,然后还得把跑步这项运动坚持下来。这篇文章(一天写不完)探索一下Java中的ThreadPoolExecutor的使用,感觉还是挺重要的。如果出去面试能把这个讲清楚,估计能唬住不少面试官,哈哈。 先给出一个简单的使用示例,然后再探...

2018-03-16 23:06:59 4909 2

原创 菜鸟看源码之LinkedBlockingQueue

首先扯点别的:已经不记得上次是什么时候做仰卧起坐的了,现在重新开始锻炼起来,腹肌还是得保持的。但是刚做了两天就感觉小腹酸疼。做20个都得咬牙坚持。明天继续做。今天分析一下LinkedBlockingQueue的源码。LinkedBlockingQueue 是基于链表的阻塞队列,按照先进先出的顺序来排列元素。默认长度可以达到Integer.MAX_VALUE 。也可以指定LinkedBlocki...

2018-03-15 21:45:48 455 1

原创 FastJson在Android中的使用

以前都是使用Gson,从来没使用过FastJson。今天偶尔在一个项目中看到,就简单了解一下。 先交代使用到的两个类User类public class User { private Long id; private String address; public Long getId() { return id; } publi...

2018-03-07 22:16:14 15036

原创 菜鸟看源码之ArrayDeque

先扯点别的:今天上海风不小,现在窗外依然是狂风呜咽,不禁让人想起山科的风。今天分析一下ArrayDeque的源码ArrayDeque的继承关系图 ArrayDeque实现了Deque接口,内部使用一个可调整大小的数组来存放元素。数组没有容量限制,必要的时候数组的容量会增加。ArrayDeque不是线程安全的。不允许添加Null元素。当ArrayDeque 作为一个栈来使用的时候,Ar...

2018-02-27 23:00:02 1884 2

原创 Fragment 懒加载

首先扯点别的:今天买回家的火车票,12306还是没让我失望,果断没有抢到。先买了一个飞机票,然后等着抢明天的火车票,如果抢到了就把飞机票退了,不然就得坐飞机了。今天记录一下 Fragment 懒加载关于Fragment的懒加载有以下两点先声明一下:1.Fragment 的 setUserVisibleHint方法, 只有 Fragment 在 ViewPager 里才会被调用//如

2018-01-15 22:21:57 466

ListView下拉刷新和上拉加载

ListView 实现下拉刷新和上拉加载,两者功能完全独立。下拉刷新使用开源框架 Android-Utral-pull-to-refresh地址https://github.com/liaohuqiu/android-Ultra-Pull-To-Refresh。上拉加载更多实现是重写LisVIew,并不复杂。

2016-08-20

下拉刷新和上拉加载的例子

recyclerView 下拉刷新 上拉加载更多

2016-08-17

Android与html交互的demo

Android与html交互的demo

2016-08-06

fragment嵌套ViewPager

Fragment 嵌套 ViewPager +TabLayout 实现Fragment里面嵌套ViewPager,然后ViewPager里面又包涵几个Fragment.

2016-04-11

蓝牙 简单应用

简单的蓝牙应用,用于从客户端向服务端传递一个字符串。运行环境android studio。使用的时候运行在两台手机上。第一台,修改androidmenifest.xml文件启动ServerActivity作为程序入口。依次点击界面上的两个按钮。第二修改androidmenifest.xml文件启动clientActivity作为程序入口。点击前两个按钮后,输入文字再点击开启客户端按钮

2016-04-10

TabLayout使ViewPager更优雅的滑动切换

TabLayout使ViewPager更优雅的滑动切换。TabLayout是android.support.design.widget库中的一个控件,和ViewPager中结合使用可以让Fragment滑动更优雅,更简单,更流畅。

2016-04-06

listview 简单 用法

listview 的简单用法,包括使用自定义适配器,子项的点击事件和子项的长按弹出删除当前项的AlertDialog

2016-02-29

清除功能 EditText

带清除功能的输入文本框(EditText)

2016-02-03

viewpager fragment

viewPager的简单实用以及如何删除当前的fragment

2016-01-21

volley 上传文件

资源包括volley.jar和三个java文件,用于实现基于volley的文件上传功能。

2016-01-08

安卓 相机 拍照 存储 系统图库

功能:1安卓调用系统相机拍照存储到本地 2 使用系统图库里的图片资源

2016-01-06

android 下拉刷新

该代码的来源是郭霖大神的力作:http://blog.csdn.net/guolin_blog/article/details/9671609 我做了一点修改,在头布局中添加了一个Button,让这个Button不隐藏,点击可以进行相应的操作。刷新的内容仅限于为ListView。但是这种方式给人一个假象,即刷新界面不仅仅是一个ListView,而且还包括一个Button。也就是说可以进行任意界面的刷新(本质是刷新ListView).

2015-12-23

volley 和imageloader 加载网络图片

使用Volley 和 universal image-loader 加载网络图片 综合比较还是使用universal image-loader 加载网络图片比较嗨

2015-12-19

高效加载图片

此代码是郭霖大神的原作,只不过原创中的图片的连接可能不好使,所以在郭大神的另一个项目中找到有效的图片路径, 用于从网上高效加载图片

2015-12-15

音乐播放器

这个上传的音乐播放器,是自己留作备用的,里面有很多的bug,不能联网下载歌词,歌曲,错误一大堆。

2015-11-27

安卓ADT Eclipse的颜色主题

下载压缩文件,将解压后的两个文件夹复制到你的eclipse目录下。例如(D:\adt-bundle-windows-x86-20131030\eclipse)。重启你的eclipse.点击工具栏上的Windows-->Preference-->General-->Appearence-->Color Theme,选择你喜欢的颜色背景就行了。

2015-11-26

HumanWeather

1.HuManWeather是LoverWeather的升级版. 2.实现的功能有3000多个城市的实时天气和未来5-7天的天气情况查询 3.使用的接口k780数据接口 4.亮点1:城市排序和(汉字,拼音)快速检索城市功能 5.亮点2:百度定位功能,自动定位所在城市,并显示天气信息 6.预计增加功能1:可以将天气情况通过微信,qq,短信等分享给好 友 7.预计增加功能2:天气预警通知的功能,PM2.5查询功能 8.Copyright by Human

2015-11-05

ListviewSort_By_A_Z

功能:实现listview首字母根据A_Z排序功能和快速定位的功能。 参考博客: 夏安明的博客: http://blog.csdn.net/xiaanming/article/details/12684155 http://blog.csdn.net/xiaanming/article/details/11066685 陈宇文的博客: http://blog.csdn.net/ziwen00/article/details/5436123 用到的jar包:pinYin4j.jar 整理者:human

2015-10-28

LoveWeather

这是安卓开发的一个天气预报项目,很小。 功能:查看当天的天气,实时天气,未来5-7天的天气情况; 参考资料:《第一行代码》 参考网址:http://blog.csdn.net/toyuexinshangwan/article/details/8194816 开发者:leilifengxingmw

2015-10-12

空空如也

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

TA关注的人

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