自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

TonyW的专栏

记录在成长路上的一点一滴

  • 博客(47)
  • 资源 (2)
  • 收藏
  • 关注

原创 Java集合详解--什么是Map

引言在很久很久以前,讲过Set的实现原理,讲到Set就是Map的马甲,那么今天我们就来看看Map是如何实现的(本文都基于JDK1.8的版本) 什么是Map Map和Collection有关的几个map的关系图 Map的定义java.utilpublic interface Map<K, V>An object that maps keys to values. A map cannot

2017-08-22 18:45:20 26794 2

原创 Picasso源码解析

Picasso源码解析

2017-08-09 17:00:45 589

原创 Android刮奖效果

使用Xfermode中的PorterDuffXfermode实现我们的刮奖效果 PorterDuffXfermode 这是一个非常强大的转换模式,使用它,可以使用图像合成来控制Paint如何与已有的Canvas图像进行交互。

2017-06-26 22:30:37 815

原创 Android程序猿带你学python第6章--异常处理

错误和异常对于java程序猿来说在熟悉不过了,try,catch用了飞起,在python中也没什么本质上的区别,只不过语法语意上有一些区别 在python中常见的异常有BaseException 所有异常的基类SystemExit 解释器请求退出KeyboardInterrupt 用户中断执行(通常是输入^C)Exception 常规错误的基类StopIteration 迭代器没有更多

2017-06-14 21:01:58 924

原创 Android程序猿带你学python第5章--输入与输出(I/O)

导读 在第0章就说过,程序无非就是输入->逻辑->输出。所以如何处理输入和输出就显得非常重要,常见的输入有控制台输入,函数接受参数输入,常见的输出有控制台输出,文件,数据库等 常见的I/O处理 控制台输入输出>>print("hello")>>s = input("please scan")>>print(s)这个之前已经用过很多次了 数据持久化 1.文件 打开文件>>

2017-06-07 21:34:05 689

原创 Android程序猿带你学python第4章--类

导读 类对于Java同学来说无比熟悉,每个class都是一个类类包括2个部分:属性和方法 属性是用来描述相同对象的静态特征 方法是用来描述相同对象的动态特征

2017-06-05 21:01:09 569

原创 Android程序猿带你学python第3章--函数和方法

在类里的叫做方法在类外的叫做函数

2017-06-01 21:06:08 350

原创 Android程序猿带你学python第2章--逻辑控制

导读 无论多复杂的业务,最后承载他们的逻辑都可以简单的归为以下几类: 算数运算符,比较运算符,逻辑运算符,条件控制,循环迭代。只要理清楚这几类逻辑是如何表达的,那这门语言就可以清晰的呈现出来了

2017-05-31 23:15:57 484

原创 Android程序猿带你学python第1章--基本对象类型

导读学一门语言,最先需要了解的就是这门语言的一些基本类型和数据结构。 在python里有一句非常重要的话,我先写在开头 对象有类型,变量无类型 这句话对于常写java的同学来讲非常别扭,我们通过下面的介绍来深刻体会下弱类型语言的简单和强大 引用句python开发经常讲的话,生命苦短,我用python

2017-05-26 21:31:45 606

原创 Android程序猿带你学python第0章--导读

首先问大家一个问题编程是什么? 我的理解编程就是 input -> 逻辑 -> output 根据输入和输出要求确认中间执行逻辑 承载逻辑的就是不同的编程语言,然后交给解释器,然后转换成计算机能懂得语言进程逻辑运算

2017-05-25 23:37:42 420

原创 如何在AndroidStudio中导出Jar包,并且自定义Exclude文件

作为一个从Eclipse过渡到Android Studio的Android开发,我相信每个人或多或少都有这么一个疑问,Android Studio没什么没有直接export Jar包的功能。在Eclipse中是如此的简便,但作为Ecplise的替代品Android Studio确没有这个功能。网上有很多Gradle的脚本用来执行导出Jar的功能。目前最流行的是task clearJar(type:

2017-05-17 23:01:45 4851

原创 Android APM方案(一)完成代码注入

Android APM方案(一)完成代码注入什么是APMAPM 是Application perfmance monitor的简称, 应用性能监控。在移动互联网对人们生活影响越来越大的今天,App的功能越来越全面,从吃穿住行,到支付开房,全方面覆盖。相同功能的App存在很多竞品,比如携程和艺龙,天猫和京东,网易云音乐和QQ音乐。随之而来的就是App性能的要求越来越高,不能被动的等待用户异常的发生,应该主动监控

2017-05-08 21:10:22 7412 6

转载 Android插件化原理解析——Hook机制之Binder Hook

转载自 http://www.jianshu.com/p/1b8772e4787f weishu的好文 简书作者Android系统通过Binder机制给应用程序提供了一系列的系统服务,诸如ActivityManagerService,ClipboardManager, AudioManager等;这些广泛存在系统服务给应用程序提供了诸如任务管理,音频,视频等异常强大的功能。插件框架作为各个插件的管

2016-10-26 21:43:30 1379

转载 Android插件化原理解析——Hook机制之动态代理

使用代理机制进行API Hook进而达到方法增强是框架的常用手段,比如J2EE框架Spring通过动态代理优雅地实现了AOP编程,极大地提升了Web开发效率;同样,插件框架也广泛使用了代理机制来增强系统API从而达到插件化的目的。本文将带你了解基于动态代理的Hook机制。代理是什么 为什么需要代理呢?其实这个代理与日常生活中的“代理”,“中介”差不多;比如你想海淘买东西,总不可能亲自飞到国外去购物

2016-10-26 21:38:29 728

原创 Java集合详解--什么是Set

简述Set和List一样,也继承于Collection,是集合的一种。和List不同的是,Set内部实现是基于Map的,所以Set取值时不保证数据和存入的时候顺序一致,并且不允许空值,不允许重复值。然后我们来看下Set的继承结构可以看出,Set主要有2个实现方式,一个是TreeSet,另一个是HashSet 这个Set的特点,主要由其内部的Map决定的,可以负责人的说一句,Set就是Map的一个马

2016-10-23 21:09:04 29154 4

原创 Java集合详解--什么是List

简述上章简单介绍了什么是集合,集合有哪几种种类。 在这章中我们主要介绍Collection的其中一种实现方式,List。 什么是List在上一章,我们已经了解了List主要分为3类,ArrayList, LinkedList和Vector。 为了进一步清晰List的结构,我在这手工画了一张图,用于回顾下AbstarctCollection在上一张Java集合详解–什么是集合已经有简单的介绍,它

2016-10-19 22:20:47 48954 7

原创 Java集合详解--什么是集合

什么是集合 集合类存放于java.util包中。 集合类存放的都是对象的引用,而非对象本身,出于表达上的便利,我们称集合中的对象就是指集合中对象的引用(reference)。 集合类型主要有3种:set(集)、list(列表)和map(映射)。通俗的说,集合就是一个放数据的容器,准确的说是放数据对象引用的容器。 有哪些集合 理解这张图之前我们需要补充一点简单的

2016-10-17 22:24:42 33036 3

原创 如何手动完成一次APK打包?----APK编译全过程

身为一个Android工程师,你是否有考虑过一个Android项目工程如何经过编译压缩变成一个APK的呢? 你又是否编写过打包工具完成多渠道打包呢?下面我们来解密如何完成一个APK的打包。1、使用Android SDK提供的aapt.exe生成R.java类文件 2、使用Android SDK提供的aidl.exe把.aidl转成.java文件(如果没有aidl,则跳过这一步)3、使用JDK

2016-09-15 23:38:02 7663 5

转载 String,到底创建了多少个对象?

String,到底创建了多少个对象?String str=new String("aaa"); 这行代码究竟创建了几个String对象呢?答案是2个,而不是3个。由于new String(“aaa”)相当于”aaa”与一个就是创建出来的放在堆时原实例对象,而另一个就是放在常量池中的 “aaa” 对象,当然这里的str本身只是一个引用,放在栈里,用来指向堆中创建出来的对象。常量池(constant

2016-08-22 10:57:40 2502

原创 TextView源码解析-----绘制过程

分析思路一般自定义view都需要满足2个条件,展示我们期望的UI,正确传递或者接收处理点击或者触摸事件。 所以对于TextView的分析从三个地方展开 1.绘制过程 2.事件接收处理3.特殊TextView独有的属性

2016-07-30 23:04:52 11550 1

原创 Http缓存机制

什么是Http缓存缓存缓存,就是把需要的东西存起来,不需要每次都去请求。主要目的减小服务器压力,放到客户端上来讲,还利于节省流量,还能流畅的把UI显示出来,提高了用户体验。对于Http缓存来讲,主要的就是校验缓存的有效性,也就是新鲜度。如果客户端不能及时响应服务端的数据变化,缓存一直不能被更新,那不就是得不偿失了?Http缓存策略1.Expires策略Expires是Web服务器响应消息头字段,在响

2016-07-10 15:07:30 2998

原创 Android如何判断MIUI和魅族手机

最近项目里要对MIUI手机的推送做特殊处理,走小米平台的推送,所以要区分下MIUI,留个笔记,以后用到就可以import java.io.IOException;public final class MIUIUtils {private static final String KEY_MIUI_VERSION_CODE = "ro.miui.ui.version.code";private s

2016-07-05 09:42:27 4299

原创 Android多线程断点续传下载

Android 多线程断点续传下载工具类实现

2016-07-03 22:26:32 623

原创 RelativeLayout源码解析

为什么学习 一直对RelativeLayout如何把xml中的属性转换成子view的真实坐标比较感兴趣,并且网上对RelativeLayout这部分资料比较少,希望将自己对RelativeLayout这部分源码理解写出来,跟大家分享一下。什么是RelativeLayout 中文名叫相对布局,可以指定内部子view之间的相互关系,从而可以绘制出更精确的UI 但是相比于LinearLayout,R

2016-06-25 08:39:16 6647 5

原创 LinearLayout源码解析

为什么学习自从学了Android自定义控件的一些知识,总是处于似懂非懂状态,说都说了上来,自己在项目里封装了一些自定义控件,但是还是缺乏一个很直观的了解。所以去了解学习下Android是如何封装控件的,就从简单的入手,分析下LinearLayout是如何实现的什么是LinearLayout作为最基础的布局,所以从事过Android开发的同学都应该非常了解 中文解释应该叫做线性布局,相比如Relat

2016-06-17 22:52:27 7611 4

转载 从源码了解Volley

1. 功能介绍1.1. VolleyVolley 是 Google 推出的 Android 异步网络请求框架和图片加载框架。在 Google I/O 2013 大会上发布。名字由来:a burst or emission of many things or a large amount at once发布演讲时候的配图从名字由来和配图中无数急促的火箭可以看出 Volley 的特点:特别适合数据量

2016-06-02 22:08:10 492

原创 深入理解异步加载--Handler和Looper源码解析(2)

上一章介绍了一些Handler类和Looper类,其实这些内容网上有一大把,我只不过是做了个笔记,便于以后回忆在这章,会放出一点干货,讲讲别人没讲过的东西。看看这个图和我们的Handler,Looper和MessageQueue模型像不像其实我们的异步加载模型就是从多生产者,单消费者模型里借鉴出来的。我们再看下生产者/消费者 模型的定义: 在实际的软件开发过程中,经常会碰到如下场景:某个模块负责产

2016-05-26 15:09:40 525

原创 深入理解异步加载--Handler和Looper源码解析(1)

这几天由于比较空,仔细读了下Handler,Looper,Message和MessageQueue的源代码,再结合一些现有的资料(比如任玉刚的Android开发艺术探索),深入的理解了一下Android是如何进行线程切换,异步加载的。在介绍之前,首先要对几个主要类进行理解。Looper类Looper类比较简单,主要只有2个操作 public static void prepare() {

2016-05-25 17:11:24 611

原创 便捷的将你的项目作为SDK---用aar代替过时的jar

背景知识 这几天接了一个需求,要把项目整个打包作为SDK给别的公司用 首先想到的就是采用jar包的形式把代码打包,再把资源文件拷进ja包r里,用反射的方式去获取资源id 但是由于时间紧迫,要求当天就要有产出,无奈只能先行百度下,看下有没有什么便捷的方案,无意当中就看到aar包,经过试验完美符合预期,所以写一篇博文用于记录,便于以后回忆使用工具 Android Studio使用说明 首先使用

2016-05-13 14:58:47 3678 2

原创 实现textview最后一行只显示一半的效果

不知道大家有没有接到过这种需求,textview要求最大3行,并且最后一行只显示一半,以省略号结尾一开始觉得很蛋疼,一直没有好的思路,后来想到一种方案,就是用textview的paint可以计算出整个String的需要的宽度stringWidth,并且能计算出textview tvWidth的宽度 就可以推导出一个公式line = stringWidth / tvWidth这个line就是text

2016-04-14 15:56:32 7283 16

原创 简单工厂模式

背景: 我们拥有一间车厂,可以接受奔驰厂商和福特厂商的订单。但由于我们是黑心厂商,发扬我大天朝山寨的特色,给2个厂商的车造成一模一样,造完之后贴个车标就完成了。于是身为厂长的我们就开始改装车厂的流水线。UML图:这是也是我们的施工图。我们需要根据不同的订单厂商,贴不同的车标。interface iCar{ public String getCarName();}public class

2015-12-09 22:44:32 580

转载 How to Write Doc Comments for the Javadoc Tool

How to Write Doc Comments for the Javadoc Tool Javadoc Home PageThis document describes the style guide, tag and image conventions we use in documentation comments for Java programs written at Java So

2015-11-22 21:50:25 1341

原创 返回零长度的数组或者集合,来代替null值

之前在项目开发的时候,一直喜欢在一些public方法中来判断一些条件,如果不满足就return null 比如 public String getSubString(String data, int start, int end){ if(TextUtil.isEmpty(data)){ return null; } return data.su

2015-11-22 21:28:11 942

原创 为你的drawable图片添加监听事件----drawableRight增加监听事件

在android的应用开发中,我认为添加drawable类型的图片非常好用。为TextView或者EditText添加一个drawableLeft图片或者drawableRight图片非常方便,在一些情况下,还能减少布局层数,优化程序性能。比如我们想实现以下效果我们只要给TextView添加drawableLeft图片就好,不要在TextView的外层在嵌套一层布局了但是,有时

2015-11-17 20:59:25 5728 2

转载 Android MVP模式

Android MVP PatternAndroid MVP 模式1 也不是什么新鲜的东西了,我在自己的项目里也普遍地使用了这个设计模式。当项目越来越庞大、复杂,参与的研发人员越来越多的时候,MVP 模式的优势就充分显示出来了。导读:MVP模式是MVC模式在Android上的一种变体,要介绍MVP就得先介绍MVC。在MVC模式中,Activity应该是属于View这一层。而实质

2015-11-15 23:21:36 1331

原创 还不知道当listview数据为空时如何处理吗---------为项目建立一个统一的EmptyView

10月底的时候去网易面试,感觉其他发挥都不错,就listview这块被虐了。回家痛定思痛,开始研究listview的源码,从adapterView开始看起,想到了一个比较有趣的技巧,可以方便的管理我们项目中listview数据为空时EmptyView。废话不多说,先来看看EmptyView关于Empty的机制,就是当listview的getCount为0的时候,就显示EmptyView

2015-11-07 20:06:15 3361 1

转载 JVM堆模型

转载自:http://uule.iteye.com/blog/1894724JVM堆(Heap)= 新生代(Young) + 旧生代(Tenured)新生代(Young)= Eden区 + Survivor区  http://blog.csdn.net/jollyant/article/details/5647141http://

2015-10-28 20:59:52 562

原创 android内核剖析 创建窗口过程读书笔记

在介绍窗口创建之前,先要介绍几个Android Framework中比较重要的概念,和后面的事件分发等一系列都有很重要的关系ActivityThread类:首先ActivityThread并不是一个线程,它所在的线程就是Adnroid的UI线程,Activity的实例化,looper的实例化,都在ActivityThread的main()入口完成Activity:这个就不多介绍了,APK的

2015-10-19 21:10:09 568

转载 Android 事件分发机制详解--真正的解析

Android 事件分发机制详解首页分类标签留言关于订阅转自http://stackvoid.com/details-dispatch-onTouch-Event-in-Android/感觉这篇博文真正封分析了android的事件分发,比很多CSDN的博客专家分析了到位,所以特此转发,供大家参考网上很多关于Android事件分发机制的解释,大多数描述的都不够清晰,没有吧

2015-10-18 10:25:39 798

原创 android内核剖析 Context理解读书笔记

Context在Android开发中相当重要,也相当常见。我们在Activity的开发过程当中,在需要用到Context的时候,一般都会使用this,比如在调用getResource的时候,我们其实是this.getResource在Fragment的开发当中,我们一般需要context的时候,会调用getActivity()但不同Activity的context得到的resource

2015-08-31 22:14:12 733

杭电851数据结构2001到2016历年真题

杭电851数据结构2001到2016历年真题 每一年都有

2016-11-12

Android多线程断点续传下载

Android多线程断点续传下载工具类

2016-07-03

空空如也

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

TA关注的人

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