![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
源码解析
crazy__chen
只要有一个人爱我,懂我,愿意等我,我便勇往直前,无所不能。
展开
-
Android 异步消息处理机制Looper、Handler、Message三者关系
Looper,Handler,Message三者是我们常常用来再子线程跟新UI的,我们把Message发给Handler,然后,handler调用HandlerMessage()方法,我们在这个方法里面更新UI。那么Looper呢,又是什么,下面我来给大家介绍一下三者的关系。首先要说明的是,每个线程最多只有一个Looper,在线程里面调用Looper.prepare()就是为这个线程设置了一个原创 2015-04-05 19:23:28 · 1202 阅读 · 0 评论 -
Scroller类源码解析及其应用(一)
滑动是我们在自定义控件时候经常遇见的难听,让新手们倍感困惑,这篇文章主要介绍Scroller类的源码,告诉打击这个到底有什么用,怎么使用它来控制滑动。另外,我还会结合一个简单的例子,来看一下这个类的应用。要说明Scroller类,我们往往要从另外两个方法说起,一个是ScrollTo(),一个是ScrollBy()这两个方法我们可以在View的源码看到,我们知道其实每个空间都有滚动条,只是有原创 2015-05-21 21:57:56 · 2002 阅读 · 2 评论 -
chenglei1986/DatePicker源码解析(二)
接上一篇文章chenglei1986/DatePicker源码解析(一),我们继续将剩余的部分讲完,其实剩余的内容,就是利用Numberpicker来组成一个datePicker,代码非常的简单为了实现自定义布局的效果,我们给Datepciker定制了一个layout,大家可以定制自己的layout<LinearLayout xmlns:android="http://schemas.a原创 2015-05-24 15:16:24 · 1725 阅读 · 1 评论 -
volley源码解析(三)--Volley核心之RequestQueue类
上一篇文章给大家说明了Request的内部结构,对于这个类而言,volley让我们关注的主要请求获得响应以后,怎么根据自己的需要解析响应,然后在主线程中回调监听器的方法,至于是怎么获得响应的,线程又是怎么开启的,都跟Request无关。前面已经提到,Request会放在队列里面等待线程的提取,RequestQueue类作为volley的核心类,可以说是连接请求与响应的桥梁。另外,Request原创 2015-06-15 01:46:34 · 3562 阅读 · 3 评论 -
volley源码解析(一)--volley的使用和架构
Volley是一款由Google 推出的 Android 异步网络请求框架和图片加载框架原创 2015-06-15 01:43:40 · 4460 阅读 · 2 评论 -
volley源码解析(二)--Request<T>类的介绍
在上一篇文章中,我们已经提到volley的使用方式和设计的整体思路,从这篇文章开始,我就要结合具体的源码来给大家说明volley功能的具体实现。我们第一个要介绍的类是Request<T>这个一个抽象类,我将Request称为一个请求,通过继承Request<T>来自定义request,为volley提供了更加灵活的接口。原创 2015-06-15 01:44:57 · 3468 阅读 · 1 评论 -
volley源码解析(四)--CacheDispatcher从缓存中获取数据
从上一篇文章我们已经知道,现在要处理的问题就是CacheDispatcher和NetworkDispatcher怎么分别去缓存和网络获取数据的问题,这两个问题我分开来讲。但是首先说明的是,这两个问题其实是有联系的,当CacheDispatcher获取不到缓存的时候,会将request放入网络请求队列,从而让NetworkDispatcher去处理它;而当NetworkDispatcher获原创 2015-06-15 17:33:42 · 2261 阅读 · 1 评论 -
PullScrollView源码解析
PullScrollView是Github上面的一个开源项目,主要用于实现下拉时头部伸缩的效果,项目地址见https://github.com/MarkMjw/PullScrollView大家先来看一下实现的效果图(图侵删)但是由于这个项目的代码比较复杂,而实际上不这样做也可实现效果,我在网上找了另外一篇介绍pullScrollView的文章,写得非常好,本文也只是基于文章http原创 2015-07-30 10:47:29 · 1575 阅读 · 0 评论 -
Android AsyncTask源码解析
AsyncTask是平时我们用于异步线程修改UI的一个类,我们需要继承这个抽象类,添加自己的实现这个类本质上缩减我处理子线程和UI线程的交互过程,隐藏了handler。这里值得一提,我们所见到的,几乎所有异步线程更新UI,本质都是使用了hanlder和主线程进行信息交互,而大多数工具类只是对这个过程进行了封装。为了更加好地理解AsyncTask,本篇文章对AsyncTask的源码进行解析说原创 2015-08-28 14:22:06 · 929 阅读 · 0 评论 -
教你轻松自定义ViewPagerIndicator
ViewPagerIndicator集成分页指示器,其实就是标题栏和ViewPager的联动效果,大家先看一下效果图直观了解:(图侵删)这篇文章将会教大家怎么简单快速地制作自己的ViewPagerIndicator,同时说明制作思路,让大家可以轻易的扩展和定制自己想要的效果。由于文章的主要目的在于介绍整体思路,所以实现的界面效果可能不是很好看,不过大家看过这篇文章以后,一定可以自己原创 2015-08-02 13:20:53 · 4110 阅读 · 3 评论 -
关于压缩工具类ZipCompressor.java的说明
ZipCompressor.java是一个常见的压缩工具类,使用java的内置算法,可以用于压缩文件和文件夹。这个工具类很简单,我们来看一下它的实现。首先我们来看构造函数import java.io.BufferedInputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileO原创 2015-08-03 16:05:48 · 3905 阅读 · 0 评论 -
Maxwin-z/XListView-Android(下拉刷新上拉加载)源码解析(二)
转载请注明出处http://blog.csdn.net/crazy__chen/article/details/45956179源文件下载地址http://download.csdn.net/detail/kangaroo835127729/8736887本文主要是贴出xlistview的源代码和一个使用实例,没有过多讲解使用实例,MainActivitypublic class原创 2015-05-25 21:46:25 · 2435 阅读 · 4 评论 -
Maxwin-z/XListView-Android(下拉刷新上拉加载)源码解析(一)
本次解析的内容,是github上一个用于下拉刷新上拉加载的控件xlistview,这个功能相信大家在开发的过程中会经常用到。控件的源码地址是https://github.com/Maxwin-z/XListView-Android在这个控件之前,我看过一些相同功能的控件,挑选后觉得XListView功能比较完善,而且易于理解。在android-open-project里面,有提到一个Dro原创 2015-05-25 15:28:01 · 3273 阅读 · 2 评论 -
LruCache源码解读
Lrucache是Android4.0以后提供的一个用于缓存的类,这个类抛弃了原有的softReference(软引用)形式,因为android4.0以后虚拟机更倾向与回收软引用,也就是一旦虚拟机发现软引用,就会进行回收,这使得软引用变得不再可靠。Lrucache的源码并不长,内部是使用LinkedHashMap map来存储缓存的键值对,下面我带大家一起看一下lrucache的源码,希望大家原创 2015-04-22 19:01:07 · 1038 阅读 · 0 评论 -
java中的HashMap解析
这篇文章准备从源码的角度带大家分析一下java中的hashMap的原理,在了解源码之前,我们先根据自己的理解创建一个hashMap。先说明一下创建的具体原理是这样的,所谓hashMap,必然是用hash方法来区分不同的key值。学过hash的都知道,我们解决hash冲突的一种方法就是使用散列和桶,首先确定所在的桶号,然后在桶里面逐个查找。其实我们也可以单纯使用数组实现map,使用散列是为了获得原创 2015-04-09 00:32:13 · 1254 阅读 · 0 评论 -
DiskLruCache源码解析
DiskLruCache是google开源的一个本地缓存类,虽然没有成为android的库类,但是非常好用,我个人推荐使用这个类进行缓存。当然也已经有很多人在使用这个类了,但是很多事情,我们不但要知其然,更要知其所以然,这篇文章将带大家一起解读DiskLrucache的源码,看一些大神是怎么写代码的。先来看DiskLrucache的一些基本属性public final class Di原创 2015-04-23 00:34:34 · 2792 阅读 · 1 评论 -
dmytrodanylyk/circular-progress-button源码解析(一)
dmytrodanylyk/circular-progress-button是github上一个开源的按钮控件,这个是链接https://github.com/dmytrodanylyk/circular-progress-button下面是示例图,应该说作为按钮,设计非常的简洁大方,这篇文章就是来介绍一下这个circular-progress-button的源码,让大家明白这么漂亮的控件原创 2015-05-30 23:42:19 · 3635 阅读 · 8 评论 -
ChrisRenke/DrawerArrowDrawable源码解析
转载请注明出处源码下载地址这次解析的控件DrawerArrowDrawable是一款侧拉抽屉效果的控件,在很多应用上我们都可以看到(例如知乎),控件的github地址为https://github.com/ChrisRenke/DrawerArrowDrawable大家可以先来看一下控件的效果这个控件的作者,也写过一篇文章对控件的制作过程做了说明,其中更多的是涉及箭头的原创 2015-06-02 21:51:32 · 3164 阅读 · 1 评论 -
Scroller类源码解析及其应用(二)
接上一篇文章的内容,这篇文章主要是Scroller类的应用,在讲具体实例之前,我还有顺便提一个Scroller的问题。就是fling()方法和startScroll()方法的区别,其实确保已经在上篇文章说得很清楚(注释里面)。fling没有设置起点坐标和终点坐标,而是根据滑动的起始速度来计算最后会到达的坐标位置。在了解scroller的使用之前,我们来看一下调用示意图据原创 2015-05-22 16:45:12 · 1711 阅读 · 2 评论 -
volley源码解析(七)--最终目的之Response<T>
在上篇文章中,我们最终通过网络,获取到了HttpResponse对象HttpResponse是android包里面的一个类,然后为了更高的扩展性,我们在BasicNetwork类里面看到,Volley将其包装成一个Volley自己的对象NetworkResponse另外,在BasicNetwork类中我们也注意到,对HttpResponse包装成NetworkResponse的过程中,使用原创 2015-06-24 00:30:59 · 3135 阅读 · 1 评论 -
volley源码解析(六)--HurlStack与HttpClientStack之争
Volley中网络加载有两种方式,分别是HurlStack与HttpClientStack,我们来看Volley.java中的一段代码if (stack == null) {//如果没有限定stack if (Build.VERSION.SDK_INT >= 9) {//adk版本在9或者以上 stack = new HurlStack(原创 2015-06-23 22:16:29 · 3256 阅读 · 1 评论 -
volley源码解析(五)--NetworkDispatcher从网络中获取数据
上一篇文章当中,我介绍了CacheDispatcher和缓存类Cache是怎么根据request从缓存中获取到数据的,接下来这篇文章,将会介绍网络数据的获取。对比缓存的获取,其实我们也有两个类,一个是NetworkDispatcher,一个是Network,前者是线程,后者是对抽象的网络的实体化。这样的设计方式也是值得我们学习的,因为Network会负责处理网络请求过程中遇到的各种问题,这原创 2015-06-15 21:02:10 · 3011 阅读 · 1 评论 -
chenglei1986/DatePicker源码解析(一)
DatePicker在android其实是有提供的一个控件,相信有不少的人使用过它,但是这个控件的外观我们只能做一些简单的设定(原生的),如果我们有更高需求,希望能自定义我们的datepicker的外观,希望赋予它更多的功能,我们就需要自定义一个datepciker控件。在github上,我发现了一个chenglei1986/DatePicker的项目,可以实现上面的需求。地址是https:/原创 2015-05-23 21:43:43 · 2711 阅读 · 0 评论 -
Android源码IInterface.IBinder,Parcelable的注释翻译
IInterface:/* * Copyright (C) 2006 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the Lic翻译 2015-08-04 14:13:14 · 3803 阅读 · 1 评论