自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小白的博客

刷新存在感,我也是很有成就的

  • 博客(81)
  • 资源 (10)
  • 收藏
  • 关注

原创 关于 VS code 复制一行或者一段代码不能换行的问题

习惯了用 IDE 开发,但是目前在转 web 前段,需要用 VS code 开发,把所有的快捷键修改为 IDE快捷键了,但是发现 Ctrl+D 在复制的时候,不能换行,复制当前行必须xuan'zhong

2021-06-11 10:48:21 2295 1

原创 Activity 源码详解之创建

相信大家对于Activity 的生命周期都不陌生吧,但是你真的知道Activity 的生命周期是在什么时候调用的吗?我当时研究的时候,确实走了弯路了,最后发现如何把生命周期和存取数据的方法联系起来解读,会很方便。如果你们想看原文,就去这里找吧。但是我不会像他那样,上去直接抛出ViewManager、WindowManager 和WindowManagerImpl。一、启动Activi...

2019-08-07 16:59:17 2993

原创 setContentView 源码详解

我们每天都在写 onCreate,然后在 onCreate 中绑定布局,方法就是 setContentView,但是你有没有想过为什么要这么写呢?为什么 setContentView 绑定布局之后,Activity 就能显示出对应的界面呢?这正是我们今天要说的。对于有几年工作经验的都知道在 Android 中 有一个叫做 DecorView 的布局,它的父类是 FrameLayout,它里边包...

2019-08-06 14:55:00 407

原创 AsyncTask 源码详解

感谢鸿神大大提供的资料,本想直接转载的,后来发现有些东西弄的不是太清楚,所以就直接自己总结吧,有兴趣的可以自己看下鸿神的 blog,我这里就不讲Executor 这块的知识了,我又没弄懂,讲出来也是直接 copy 过来的,没意思。进入正题,可能现在大多数人还是在使用 Thread + Handler 来处理线程,或者直接线程池处理,其实我也是这样,毕竟理解起来简单,而且代码也容易写(相对于 ...

2019-07-29 16:40:41 201

原创 ListView 源码分析(一)setAdapter 方法实现

对于一个初学者来说,最需要掌握的技能之一是ListView 加载布局,不管是同一种布局还是不同的布局,又或者是加载头文件或者加载底部文件。这些掌握起来不是很难,而对于一个中级的搬砖的来说,这些就太过于肤浅了,如果不懂他的原理,那你就只能在一个叫做万恶的 Adapter 上各种吃亏了。那么请允许我来带你揭开它的神秘面纱,能力一般,水平有限,有不对的请告诉我。ListView 的用法以及为什么...

2019-07-02 09:53:18 1910

原创 Handler 流程源码解析

用了三四年的 Handler,一直就没有真正理解过Handler 到底是个什么东西,从开始认识它,就一直以为记住Handler 是用来发送和处理消息的;Message是消息,Handler 发送和处理的对象;Looper 是用来管理消息队列的;MessageQueue 是消息队列,仅此而已。我曾经天真的以为我记住这些就能用好了,但是当我遇到了一个让我郁闷的一个 BUG,具体错误信息我忘记...

2019-06-03 17:06:29 353

原创 Activity 四大启动模式,一篇文章就够了。

首先感谢https://blog.csdn.net/mynameishuangshuai/article/details/51491074提供的帮助。话不多说,直接进入正题。啰嗦一句,怎么声明,这个相信只要不是初学者,都是知道的,在Activity 节点下使用 launchMode 属性,进行设置,如下: <activity androi...

2019-05-22 16:33:31 266

原创 Android 系统多媒体(一)- OpenMax 认识

在 Android 结构中,OpenMax IL 通常被当做多媒体引擎插件来使用,Android 最早的多媒体引擎是 OpenCore,后续版本逐渐使用 StageFright 来代替,这两种引擎可以使用 OpenMax 作为插件,主要实现编码/解码(Codec)处理。OpenMax 主要分为三个层次,从上到下分别是 OpenMax DL(OpenMax Development Layer 开...

2019-01-09 16:17:49 1005

原创 Kotlin基础-入门-关键字 const

最近闲着没事,索性研究下路由(ARouter,还有其他的,这这是阿里的路由库)和组件化,顺便再整理组件化项目的时候来玩下 Kotlin,虽然在2016年研究过 Kotlin,但是也挡不住两年没有用过啊,正好闲着,顺便研究下。好了,进入今天的正题,const 这个关键字到底有啥用,用过或者听过 Kotlin 的或多或少的都知道在 Kotlin 中,static 关键字被取消了,已经没有了静态方法...

2018-12-13 14:11:28 464

原创 Android 中的 IPC 方式(六) Binder 连接池和选用合适的 IPC 方法

1. Binder 连接池通过前面几篇文章的介绍,我们知道,不同的 IPC 方式有不同的特点和适用场景。在这篇文章中,我们在介绍下 AIDL,原因是 AIDL 是一种最常用的进程间通信方式,是日常开发中进程间通信的首选,所以我们需要额外强调一下。如何使用 AIDL 我们在前面已经介绍完了,这里在回顾一下它的大致流程,首先创建一个 Service 和一个 AIDL 接口,接着创建一个类继承自...

2018-09-18 16:06:48 217

原创 Android 中的 IPC 方式(五) Socket

Socket 也称为“套接字”,是网络通信中的概念,它分为流式套接字和用户数据报套接字两种,分别对应网络的传输控制层中的 TCP 和 UDP 协议,TCP 协议是面向连接的协议,提供稳定的双向功能,TCP 链接的建立经过“三次握手”才能完成,为了提供稳定的数据传输功能,其本身提供了超时重传机制,因此具有很高的稳定性;而 UDP 是无连接的,提供不稳定的单向连接功能,当然 UDP 也可以实现双向通信...

2018-09-17 16:59:13 513

原创 Android 中的 IPC 方式(四) ContentProvider

ContentProvider 是 Android 中提供的专门用于不同应用间进行数据共享的方式,从这一点来看,它天生就适合进程间通信。和 Messenger 一样,ContentProvider 的底层实现也是 Binder,由此可见,Binder 在 Android 系统中是何等重要。虽然 ContentProvider 的底层是 Binder,但是它的使用过程要比 AIDL 简单的多,这是因...

2018-09-17 13:41:49 238

原创 Android 中的 IPC 方式(三) AIDL

上一篇文章我们介绍了 Messenger 如何来实进程间通信的方法,我们可以发现,Messenger 是以单行的方式处理客户端发来的消息的,如果大量的消息同时发送到服务端,服务端仍然只能一个个处理,如果有大量的并发请求,那么用 Messenger 就不太合适了。同时,Messenger 的作用主要是用来传递消息,很多时候我们可能需要跨进程调用服务端的方法,这个情形用 Messenger 就无法实现...

2018-09-12 17:19:19 222

原创 Android 中的 IPC 方式(二) Messenger

Messenger 可以翻译为信使,顾名思义,通过它可以在不同进程中传递 Message 对象,在 Message 中加入我们需要传递的数据,就可以轻松地实现数据的进程间传递了。Messenger 是一种轻量的 IPC 方案,它的底层实现是 AIDL,下面是 Messenger 的两个构造,从构造方法的实现上我们可以明显看出 AIDL 的痕迹,不管是 Messenger 还是 Stub.asInt...

2018-09-12 15:28:59 162

原创 Android 中的 IPC 方式(一) Bundle 和文件共享

1. Bundle我们知道,四大组件中的三大组件(Activity、Service、BroadcastReceiver)都是支持 Intent 中传递 Bundle 数据的,由于 Bundle 实现了 Parcelable 接口,所以它可以方便的在进程间传输。基于这一点,当我们在一个进程中启动了另一个进程的 Activity、Service 或者 BroadcastReceiver,我肯就可以...

2018-09-11 13:36:31 282

原创 IPC 机制(二)之 IPC 基础概念介绍

在开启本篇文章之前先来说下为什么我们要实现序列化:Android 不同的进程都有自己独立的内存空间,且相互之间不能进行访问。如果像我们平常传一个句柄的方式去传值的话肯定是失败的,因为句柄也是指定内存空间的一个区域。现在进程无法访问目标进程的内存空间,所以句柄传过去也是没有用的。所以我们必须将要传输的数据转换成能够在内存空间流通的形式。这个转化过程就叫做序列化和反序列化。 简单来说是这样的:...

2018-09-07 17:29:58 768

原创 IPC 机制(一)之 Android 中的多进程模式

在正式介绍进程间通信之前,我们必须先要理解 Android 中的多进程模式。通过给四大组件指定 android:process 属性,我们就可以轻松地开启多进程模式,这看起来很简单,但是实际使用过程中却暗藏杀机,1.开启多进程模式正常情况下,在 Android 中多进程是指在一个应用中存在多个进程的情况,因此这里就不讨论两个应用之间的多进程情况了。首先,在 Android 中使用多进程只有...

2018-09-07 10:51:26 368

原创 Android 线程池

提到线程池先说一下线程池的好处,相信读者都有所体会,线程池的优点可以概括为以下三点:(1)重用线程池中的线程,避免因为线程创建和销毁带来的性能开销。(2)能有效控制线程池的最大并发数,避免大量的县城之间互相抢占系统资源而导致的阻塞现象。(3)能够对线程进行简单的管理,并提供定时执行以及指定间隔循环执行等功能。Android 中的线程池的概念来源于 Java 中的 Executor,...

2018-08-28 11:07:34 203

原创 Android 线程(二) HandlerThread 和 IntentService

HandlerThread HandlerThread 继承了 Thread,它是一种可以使用 Handler 的 Thread,它的实现也很简单,就是在 run() 方法中通过 Looper.prepre() 来创建消息队列,并通过 Looper.loop() 来开启消息循环,这样在实际的使用中就允许通过 HandlerThread 来创建 Handler 了。HandlerThread 的...

2018-08-27 18:01:47 164

原创 Andrroid 线程(一) AsyncTask

主线程和子线程主线程是指进程所拥有的线程,在 Java 中默认情况下一个进程只有一个线程,这个线程就是主线程,主线程主要处理界面交互的相关流程,因为用户随时会和界面发生交互,因此主线程在任何时候都必须有较高的响应速度,否则就会产生一种界面卡顿的感觉。为了保持较高的响应速度,这就要求主线程中不能执行耗时操作,这个时候子线程就派上用场了,子线程也叫工作线程,除了子线程以外的线程都是子线程。An...

2018-08-27 16:57:29 240

原创 Android 的消息机制分析(四)之 Handler 的工作原理

Handler 的工作主要包括消息的发送和就收过程,消息的发送可以通过 post 的一系列方法或者 send 的一系列方法来实现,post 的一系列方法最终是通过 send 的一系列方法来实现的,发送一条信息的典型过程如下所示: public final boolean sendMessage(Message msg) { return sendMessageD...

2018-08-23 15:55:30 247

原创 Android 的消息机制分析(三)之 Lopper 的工作原理

在上篇文章中,我们已经介绍了消息队列里的工作原理,本文将分析 Looper 的具体实现,Looper 在 Android 的消息机制中扮演者消息循环的角色,具体来说它会不停地从 MessageQueue 中查看是否有新信息,如果有新消息就会立即处理,否则一直阻塞在那里。首先看下他的构造方法,在构造方法中会创建一个MessageQueue 即消息队列,然后将当前线程的消息队列保存起来,如下:...

2018-08-23 14:38:40 261

原创 Android 的消息机制分析(二)之消息队列的工作原理

消息队列在 Android 中指的是 MessageQueue,MessageQueue 主要包含两个操作,插入和读取,度去操作本身会伴随着删除操作,插入和读取对应的方法分别为 enqueueMessage 和 next,其中 enqueueMessage 的作用是往消息队列中插入一条信息,而 next 的作用是从队列中取出一条信息并从队列中将其删除。尽管 MessageQueue 叫消息队列,但...

2018-08-23 11:16:31 373

转载 必须要理清的Java线程池

作者:骑小猪看流星链接:https://www.jianshu.com/p/50fffbf21b39本文由作者授权发布。1前言本篇文章主要介绍的是Java(Javaee和Android开发都会涉及)中的线程池。线程池不仅是Java多线程编程的重要基础,而且也是Android面试和Javaee面试中,面试官心血来潮突然向你发难的一道面试题(可能他自己也说不清楚道不明白线程池的概念和应用场景,但他们就...

2018-05-17 13:29:52 913

转载 Android适配刘海屏

前言公司最近要适配华为Pro20,没办法 – 。–一、AndroidP的适配方案上来我最先找到的就是AndroidP,就先以这个入手了。 首先看下谷歌给出的api,大致就分为两种。 1.设置全屏模式WindowManager.LayoutParams lp =getWindow().getAttributes();lp.layoutInDisplayCutoutM...

2018-05-07 13:29:58 923

原创 Android 一键退出

有的时候我们的项目需要用到一键退出的功能,但是网上大多数退出功能都是使用一个集合,然后放在基类里边,分别添加每一个 Activity 到集合里边,然后在取出每个 Activity 进行销毁,代码如下: private List&lt;Activity&gt; activityList = new ArrayList&lt;&gt;(); activityList.add(this);...

2018-05-04 11:33:37 202

原创 View 的工作流程(二)

上篇文章我们已经讲解了 View 的 measure 过程,这篇我们来继续分下下边的内容 View 的 Layout 过程和 Draw 过程1. Layout 过程Layout 的作用是 ViewGrrou 用来确定子元素的位置,当 ViewGrrou 的位置被确定后,它在 onLayout 中会遍历所有子元素并调用其 layout 方法,在 layout 方法中,onLayout 方法又会被调用...

2018-04-26 16:38:59 206

转载 Android 主题切换

今日科技快讯昨天,小米董事长、CEO雷军的母校武汉大学召开新品发布会,正式推出小米6X,该机售价1599元起,将于4月27日上午10点线上线下开卖。小米6X采用时下主流的5.99英寸18:9全面屏设计,全金属机身采用“隐形”天线和底部全对称设计,机身厚度为7.3mm,一共有赤焰红、流沙金、冰川蓝、曜石黑以及樱花粉五种配色。作者简介本篇来自 陈小缘 的投稿,分享了他如何一步一步完成炫酷主题动画的过程...

2018-04-26 09:08:23 186

原创 View 的工作流程(一)

measure 过程要分情况来看,如果只是一个原始的 View,那么通过 measure 方法就完成了测量过程,如果是一个 ViewGroup,除了完成自己的测量以外,还会遍历调用所有子元素的 measure 方法,各个子元素在递归去执行这个流程,下面针对两种情况分别分析。1. View 的 measure 过程View 的 measure 过程有由其 measure 方法来完成,measure ...

2018-04-24 17:21:33 459

原创 理解 MeasureSpec

在开始本篇文章之前,我们先看一段代码: @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int expendSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE &gt;&gt; 2, MeasureS...

2018-04-18 18:08:18 2633 4

原创 ViewRoot 和 DecorView 简介

ViewRoot 对应于 ViewRootImpl 类,他是链接WindowManager 和 DecorView 的纽带,View 的三大流程均是通过 ViewRoot 来完成的。在ActivityThread 中,当 Activity 对象呗创建完毕后,会将 DecorView 添加到 Window 中,同时会创建 ViewRootImpl 对象,并将 ViewRootImpl  和 Deco...

2018-04-18 17:42:34 2535 4

转载 背景变色

https://github.com/Moosphan/Eyebrows

2018-04-02 09:11:07 149

原创 事件分发机制(三)—— View 的事件分发机制之源码分析

View 对事件的处理过程要稍微简单一些,注意 View 不包含 ViewGroup,先看下它的 dispatchTouchEvent 方法如下: /** * Pass the touch screen motion event down to the target view, or this * view if it is the target. * ...

2018-03-15 17:55:02 192

原创 事件分发机制(三)—— 顶级 View 的事件分发机制之源码分析

关于点击事件如何在 View 中进行分发,上一篇文章已经做了详细的介绍,这里就不做过多的解释了,下边我们来看顶级 View 是如何进行事件的分发的。首先看 ViewGroup 的点击事件分发过程,其主要实现在 ViewGroup 的 dispatchTouchEvent 方法中。这个方法比较长,我们分段说明。先看下边的代码,很显然,它描述的是当前 View 是否拦截点击事件这个逻辑。 // ...

2018-03-15 16:55:39 154

原创 事件分发机制(二)—— Activity 的事件分发机制之源码分析

1. Activity 对点击事件的分发过程点击事件用 MotionEvent 来表示,当一个点击操作发生时,事件最先传递到当前的 Activity,由Activity 的 dispatchTouchEvent 来进行事件的派发,具体的工作是由 Activity 内部的 Window 来完成的。Window会将事件传递给 decor view,decor view一般就是当前界面的底层容器(即 s...

2018-03-15 14:46:54 657

原创 View事件分发机制(一)

只是做一个总结,其他的下篇文章再讲1. 同一个事件序列是指从手指接触屏幕的一刻开始,到手指离开屏幕的一刻结束,在这个过程中所产生的一系列事件,这个事件序列冲down事件开始,中间有数量不定的move事件,到up事件结束。2. 正常情况下,一个事件序列,只能被一个View拦截且消耗,这一条原因可以参考 3,因为一个元素一旦拦截了某次事件,那么同一个事件序列内的所有事件都会交给这个元素来处理,因此同一...

2018-03-15 11:28:34 183

转载 View的事件分发机制

android事件分发的知识。比如:onTouch和onTouchEvent有什么区别,又该如何使用?为什么给ListView引入了一个滑动菜单的功能,ListView就不能滚动了?为什么图片轮播器里的图片使用Button而不用ImageView?等等……对于这些问题,我并没有给出非常详细的回答,因为我知道如果想要彻底搞明白这些问题,掌握Android事件分发机制是必不可少的,而Android事件

2017-06-01 17:25:17 372

原创 recyclerview封装好的链接

1.自定义上下拉帅新https://github.com/nuptboyzhb/SuperSwipeRefreshLayout  2.x系列的viewhttps://github.com/jianghejie/XRecyclerView3.维护中的viewswipetoloadlayout

2017-05-22 09:30:10 281

原创 仿系统闹钟,实现更新安装之后还可以响铃,开机启动功能需要手机自带开机自启动

忽然飞来一个新的需求,APP的日程安排需要添加一个闹钟提醒,我的天,这是要逆天啊,刚开始做的时候,没想那么多,因为了解的少吗,再加上不知道QQ和微信等已经被厂商加入了白名单,本来想也就是几天的工作量,没想到结果一做就是一星期,感觉脑细胞已经死光,我还能不能知道1+1=3啊在15年使用过一个软件,灵犀语音助手(我不是在打广告,他也不给我钱),他的功能是可以语音定时,告诉他定时时间和需要做的任务,...

2017-04-27 17:21:17 1634

原创 关于rxjava的知识

http://gank.io/post/560e15be2dca930e00da1083http://www.jianshu.com/u/1d5d4cb5f17a

2017-04-13 14:26:27 267

仿淘宝商品属性分类

想要看界面的 http://blog.csdn.net/u010924834/article/details/50353955这是界面效果 我制作的下边的分类效果

2016-12-12

仿QQ聊天界面的相册

需要gradle最低是2.14,没有的可以去下载

2016-11-02

android仿QQ相册滑动多选

android仿QQ相册滑动多选

2016-10-28

仿微信朋友圈图片选择器

之前上传的有错误,麻烦下载这个

2016-10-20

仿微信朋友圈之图片选择器

仿微信朋友圈的图片选择器,留作以后方便使用

2016-10-20

仿微信朋友圈

仿微信朋友圈

2016-10-18

百分比布局percentlayout

百分比布局percentlayout

2016-09-02

QQ第三方登录

已经集成好了shareSDK 直接就可以运行 需要安装QQ客户端

2015-12-02

微信的第三方登录

微信的第三方登录 使用shareSDK

2015-12-02

shareSDK QQ第三方登录

QQ的第三方登录 使用的shareSDK

2015-12-02

空空如也

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

TA关注的人

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