自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

crazychen的专栏

只要有一个人爱我,懂我,愿意等我,我便勇往直前,无所不能。

  • 博客(498)
  • 资源 (25)
  • 论坛 (11)
  • 收藏
  • 关注

原创 二叉树遍历的三种方式

题目描述给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3,[4,2,6],2,...

2018-07-07 16:21:38 1128 1

原创 剑指offer--滑动窗口的最大值

题目描述给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3,[4,2,6],2,...

2018-07-07 15:06:29 492

原创 剑指offer--机器人的运动范围

题目描述地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+5+3+8 = 19。请问该机器人能够达到多少个格子?题意分析:题目是指从坐标0,0开...

2018-06-30 18:38:01 537

原创 使用AspectJ在Android中实现Aop

开题上一篇文章Android Aop预研中介绍了Aop的各种实现方式,并且在最后提到,选择AspectJ作为合适的开发方式。这篇文章通过我自己编写的一个例子,来说明AspectJ的使用。首先要声明,使用AspectJ进行Android的Aop开发,早有例子,一篇写得很好的文章是Aspect Oriented Programming in Android,有需要的朋友可以看译文【翻译】Android中

2016-07-24 16:36:45 15337 3

原创 Android Aop预研

预研目的公司要求,希望我整理一下项目中的log日志,由于当前项目已经很庞大,包含多个自主开发的library,并且由多个开发人员共同完成。不同的同事,打log的方式都不一样,没有同一个的格式,因此我探讨能否使用Aop编程来统一log日志,使用注解的方式来减少大家的开发量,提高效率。Aop编程是一种区别OOP编程的概念,从切面的角度看待问题,这篇文章主要讲述了JAVA开发中常用的Aop开发方式以及他们

2016-07-24 15:26:43 5274 1

原创 go test命令参数问题

go test命令参数问题在使用go test对go代码进行单元测试的时候,遇到关于命令参数的问题,google了一下,没有找到很好的说明,其实就是一些细节而已。问题是这样的,在进行单元测试的时候,我希望输入一些命令行参数来控制程序的运行。 参考go官方文档,只需要在go test后面加上-args和参数就可以了 例如 go test -args -classpath E:\testcase

2016-03-18 15:04:37 7507 1

翻译 Implementing a virtual machine in C(虚拟机C语言实现)

介绍Github上展示了我们将要做的东西,你可以对比项目中的代码以防你遇到任何错误GitHub Repository 这是一篇关于使用C语言建造你自己的虚拟机的文章。我喜欢研究底层应用,例如编译器,解释器,编辑器,虚拟机等。预备知识和提醒在我们继续之前,有一些东西是你必须的:一个编译器 — 我在使用clang3.4,但是你可以使用支持c99/c11的任何编译器编辑器 — 我会建议你使用文本编辑

2016-01-16 01:14:39 3793

原创 sqlzoo练习答案--Self join

stops(id, name)route(num,company,pos, stop)stopsrouteidnumnamecompany pos stop  1、How many stops are in the database.select count(id) from stops2、Find the id value for the stop 'Craiglockhart'select

2016-01-14 16:25:59 7901 2

原创 sqlzoo练习答案--Using Null

teacheriddeptnamephonemobile1011Shrivell275307986 555 12341021Throd275407122 555 19201031Splint2293 104 Spiregrain3287 1052Cutflower321207996 555 6574106 Deadyawn3345 ...deptidname1Computing2Design3En

2016-01-14 15:32:11 4158 1

原创 sqlzoo练习答案--More JOIN operations

Movie DatabaseThis tutorial introduces the notion of a join. The database consists of three tables movie , actor and casting .movieactorcastingididmovieidtitlenameactoridyr orddirector  budget  gross 

2016-01-13 23:54:54 6082

原创 sqlzoo练习答案--The JOIN operation

gameidmdatestadiumteam1team210018 June 2012National Stadium, WarsawPOLGRE10028 June 2012Stadion Miejski (Wroclaw)RUSCZE100312 June 2012Stadion Miejski (Wroclaw)GRECZE100412 June 2012National Stadium,

2016-01-13 15:35:17 9460 2

原创 sqlzoo练习答案--SUM and COUNT

World Country Profile: Aggregate functionsThis tutorial is about aggregate functions such as COUNT, SUM and AVG. An aggregate function takes many values and delivers just one value. For example the fu

2016-01-12 15:43:05 5097

原创 sqlzoo练习答案--SELECT within SELECT Tutorial

This tutorial looks at how we can use SELECT statements within SELECT statements to perform more complex queries.namecontinentareapopulationgdpAfghanistanAsia6522302550010020343000000AlbaniaEurope2874

2016-01-12 14:18:09 11636 1

原创 sqlzoo练习答案--SELECT from Nobel Tutorial/zh

nobel 諾貝爾獎得獎者我們繼續練習簡單的單一表格SQL查詢。這個教程是有關諾貝爾獎得獎者的:nobel(yr, subject, winner)yrsubjectwinner1960ChemistryWillard F. Libby1960LiteratureSaint-John Perse1960MedicineSir Frank Macfarlane Burnet1960MedicineP

2016-01-08 16:18:01 7281 2

原创 sqlzoo练习答案--SELECT names/zh

namecontinentAfghanistanAsiaAlbaniaEuropeAlgeriaAfricaAndorraEuropeAngolaAfrica....name:國家名稱continent:洲份1、你可以用WHERE name LIKE 'B%'來找出以 B 為開首的國家。%是萬用字元,可以用代表任何字完。找出以 Y 為開首的國家。SELECT name FROM world W

2016-01-08 15:24:21 10532

原创 sqlzoo练习答案--SELECT basics/zh

這個教程介紹SQL語言。我們會使用SELECT語句。我們會使用WORLD表格namecontinentareapopulationgdpAfghanistanAsia6522302550010020343000000AlbaniaEurope28748283174112960000000AlgeriaAfrica238174137100000188681000000AndorraEurope468

2016-01-08 15:08:21 4514

原创 一款炫酷Loading动画--加载失败

简介上一篇文章一款炫酷Loading动画–加载成功,给大家介绍了成功动画的绘制过程,这篇文章将接着介绍加载失败特效的制作。 相比成功动画,有了前面的经验,失败动画的过程就显得比较简单了。 动画结构分析首先我们来看失败动画的一张图: 失败动画的状态转移描述如下: 1、加载过程,画蓝色圆环,当进度为100%时,圆环完成 2、从右侧抛出蓝色小方块,小方块沿着曲线到达圆环正上方

2015-12-17 11:43:03 17320 12

原创 一款炫酷Loading动画--加载成功

简介昨天在简书上看到一篇文章,介绍了一个加载动画的实现过程 一款Loading动画的实现思路(一) 只可惜原动画是IOS上制作的,而看了一下,作者的实现思路比较复杂,于是趁着空闲写了一个Android版本,这篇文章将给大家介绍一下实现过程。 首先让我们来看一下动画效果 动画结构分析从上面的gif图中可以看到,这个加载动画有成功,失败两种状态,由于Gif速度比较快,我们再来分别看一张慢图1

2015-12-12 17:23:44 19471 14

原创 ADB使用小结

简介ADB全称Android Debug Bridge,我们在开发过程中经常使用这个工具来操作Android系统。 在使用ADB过程中有一些常识和细节,我们来总结一下。ADB主要功能有: 1、在Android设备上运行Shell(命令行) 2、管理模拟器或设备的端口映射 3、在计算机和设备之间上传/下载文件 4、将电脑上的本地APK软件安装至Android模拟器或设备上AD

2015-12-08 17:49:06 6160 3

原创 Android雷达图(蜘蛛网图)绘制

简介最近因为项目需求,要实现一款雷达图来表示用户的各种成就值 雷达图的绘制很简单,只要思路清晰按部就班的绘制就可以了,其中使用得最多,是路径path类的使用,使用这个类可以让我们更加方便地绘制出正多边形等效果。 效果图如下: 使用方式使用方式很简单,只要在布局文件里面,直接使用这个控件就好了,记得给它设置一个合适的具体的大小。 另外可以控制绘制的是多少边形,通过提供的一些public方法,可

2015-12-03 17:21:55 28882 35

原创 Android制作粒子爆炸特效

简介最近在闲逛的时候,发现了一款粒子爆炸特效的控件,觉得比较有意思,效果也不错。 但是代码不好扩展,也就是说如果要提供不同的爆炸效果,需要修改的地方比较多。于是我对源代码进行了一些重构,将爆炸流程和粒子运动分离。 对于源码,大家可以参考以下链接 链接1 链接2上面两套代码,其实结构都是一样的,但是实现的效果不同(其实就是粒子运动的算法不同)。 本篇文章,将给大家介绍粒子爆炸特效的实现方式,

2015-12-02 16:06:09 35332 39

原创 打造简易NineoldAndroids动画库,深入理解Android动画原理

简介NineoldAndroids是Github上一个著名的动画库,简单来说,NineOldAndroids是一个向下兼容的动画库,主要是使低于API 11的系统也能够使用View的属性动画。 网上已经有一些文章,介绍了这个库的设计,包括类结构和思想,例如 NineOldAnimations 源码解析 NineoldAndroids动画库源码分析 上面两篇文章都比较详细的介绍了NineoldAn

2015-11-18 19:43:17 7353 5

原创 模仿手机QQ红点消除功能

简介手机QQ红点消除的功能大家应该印象很深,我一直奇怪微信为什么不跟进这个功能,毕竟消息太多。 功能图如下: 简单的功能描述是这样的:新消息到来以后,会出现红点,红点被拉扯,在短距离内出现粘连效果,到达一点距离以后,可以扯断粘连,松手消除红点。对于这个功能是怎么实现的呢,我一直很好奇,并且参考了一下两篇文章: Android之实现妙趣横生的粘连布局 手机 QQ 的一键消除红点功能是怎么想出来

2015-11-18 16:19:27 5237 9

原创 ListView的多选模式

ListView的多选需求需求驱动技术,最近在项目中又遇到这样一个需求,简单而言就是:遍历某个文件夹下的所有log文件,然后将它们通过微信发送给别人。 这个功能很容易实现,但是在实现过程中,我希望自己的产品使用起来更加的人性化,所有我添加了多文件压缩打包功能,多选,反选,全选等功能,这样使用者就可以更加合理选择自己需要的log了。 那么问题来了,ListView应该怎么实现多选功能呢? 上下文

2015-11-12 21:51:35 7127 2

原创 TextView中英文排版混乱

TextView问题由来TextView在中英文夹杂的时候,会出现自动断行的情况,相信许多人都碰见过。这是系统的一个Bug,在Android5.0以后被修复了,而5.0以下的还没有见到比较好的解决版本。 参考了网上的方法,有的朋友推荐使用全角和半角转换(没有解决问题),也有的推荐了JustifyTextView这个控件(效果也不理想)。 于是我决定自定义一个TextView来做这件事,勉强解决了

2015-11-11 22:12:00 10519 3

原创 自定义通用Adapter适配ListView GridView

概述相信做Android开发的写得最多的就是ListView,GridView的适配器吧,对于Adapter一般都继承BaseAdapter复写几个方法,getView里面使用ViewHolder模式,其实大部分的代码基本都是类似的。 网上也有一些自定义Adapter的封装,本篇博客的Adapter的可以适应于多种类型的layout,也就是实现对话效果,而且代码和类设计都比较简单。效果图,其中图片

2015-11-07 19:57:25 2840

原创 定制Volley,实现加载本地和资源图片

volley加载网络图片众所周知volley提供了一个ImageLoader类用于网络图片的加载,本质上也是用消息队列的那一套去进行图片请求,只是请求以后做了一些图片本地缓存、缩放、错位处理等内容。 下面我们来看一个简单的加载例子: public RequestQueue requestQueue = Volley.newRequestQueue(mContext);public Imag

2015-11-03 15:12:09 3451 1

原创 在Android Studio上快速导入Eclipse风格

生成自己的风格JAR自己编辑了一款Eclipse风格的程序猿的Android Studio主题编辑方式很简单,就是在setting里面根据Eclipse的风格在这个文章里面,可以下载Eclipse风格的xml文件,大家对应着去修改就可以了然后File-》Export Setting就可以到处settings.jar,以后我们就可以在别的地方使用这个风格了导入Eclipse风格当然,这里我已经做好了一

2015-10-29 14:43:11 2773 2

原创 Android短信拦截机制适配的坑(下)--4.4以上系统,主要是6.0

前一篇文章,Android短信拦截机制适配的坑(上)--4.4以下系统介绍了广播接收的顺序,但是我明确说明在4.4以下系统,那么4.4及以上系统会遇到说明问题呢?首先我们要来了解4.4系统短信的机制的改变,主要是这篇文章http://android-developers.blogspot.com/2013/10/getting-your-sms-apps-ready-for-kitka

2015-10-28 21:50:10 16854 10

原创 Android短信拦截机制适配的坑(上)--4.4以下系统

最近项目遇到短信拦截的问题,新短信到达以后,项目app希望可以提示用户未读短信的数据,并且可以将短信置为已读。这个可能在不同系统中都遇到了问题,并且和其他短信访问的app,例如微信电话本发生冲突,下面内容主要针对Android4.4以下系统,和部分被修改的操作系统,例如小米首先就说和微信电话本冲突的情况,由于微信电话本也要实现上述功能,可是它有一个坑就是,它收到短信以后,就讲短信置

2015-10-28 21:06:14 4339

原创 《TCP/IP详解 卷一:协议》读书笔记--IP选路

9.1、引言9.2、选路的原理9.2.1、简单路由器svr4 % netstat -rnRouting tables Destination                 Gateway                   Flags               Refcnt              Use                Interfac

2015-10-08 21:47:59 2984

原创 《TCP/IP详解 卷一:协议》读书笔记--Traceroute程序

8.2、Traceroute程序的操作它发送一份TTL字段位1的IP数据报给目的主机。处理这份数据报的第一个路由器将TTL值减1,丢弃该数据报,并发回一份超时ICMP报文。这样就得到了改路径中第一个路由器的地址。然后Traceroute程序发送一份TTL值为2的数据报,这样我们就可以得到第二个路由器的地址。继续这个过程直至该数据报到达目的主机。但是目的主机哪怕接受到TTL值为1的IP数据报,也

2015-10-05 15:46:26 2019

原创 《TCP/IP详解 卷一:协议》读书笔记--Ping程序

7.2、Ping程序大多数的TCP/IP实现都在内核中直接支持Ping服务器——这种服务器不是一个用户进程。ICMP回显请求和回显应答报文如图:7.3、IP记录路由选项最大的问题是IP首部中只有有限的空间来存放IP地址。IP首部中的首部长度字段只有4 bit,因此整个IP首部最长只能包括15个32 bit的字(即60个字节)。由于IP首部固定长度为20字节,RR选项用去

2015-10-05 00:35:40 1973

原创 《TCP/IP详解 卷一:协议》读书笔记--ICMP:Internet控制报文协议

6.1、引言类型字段可以有15个不同的值,以描述特定类型的ICMP报文。检验和字段覆盖整个ICMP报文,使用的算法与IP首部检验的算法相同。ICMP的检验和是必需的。6.2、ICMP报文的类型当发送一份ICMP差错报文时,报文始终包含IP的首部和产生ICMP差错报文的IP数据报的前8个字节。这样,接收ICMP差错报文的模块就会把它与某个特定的协议(根据IP数据报首部中的

2015-10-04 17:12:21 1950

原创 《TCP/IP详解 卷一:协议》读书笔记--RARP:逆地址解析协议

5.1、引言具有本地磁盘的系统引导时,一般是从磁盘上的配置文件中读取IP地址。但是无盘机,如X终端或无盘工作站,则需要采用其他方法来获得IP地址。网络上的每个系统都具有唯一的硬件地址,它是由网络接口生产厂家配置的。无盘系统的RARP实现过程是从接口卡上读取唯一的硬件地址,然后发送一份RARP请求,请求某个主机响应该无盘系统的IP地址。5.2、RARP的分组格式RARP分组的

2015-10-04 13:44:55 1981

原创 《TCP/IP详解 卷一:协议》读书笔记--ARP:地址解析协议

4.1、引言当一台主机吧以太网数据帧发送到同一局域网上的另一台主机时,是根据48 bit的以太网地址来确定目的接口的。设备驱动程序从不检查IP数据报中的目的IP地址。4.2、一个例子任何时候我们敲入一下这个形式的命令:% ftp bsdi都会进行以下这些步骤。1)应用程序FTP客户端调用函数gethostbyname(3)把主机名(bsdi)转换32 bit的I

2015-10-04 00:07:41 1630

原创 《TCP/IP详解 卷一:协议》读书笔记--IP:网际协议

3.1、引言不可靠:它不能保证IP数据报能成功地到达目的地。无连接:IP并不维护任何关于后续数据报的状态信息。这也说明,IP数据报可以不按发送顺序接收。3.2、IP首部4个字节的32 bit值以下面的次序传输:首先是0~7 bit,其次是8~15 bit,然后16~23 bit,最后是24~31 bit。这种传输次序称为big endian字节序。由于TCP/IP首部中

2015-10-03 00:07:31 1742

原创 《TCP/IP详解 卷一:协议》读书笔记--链路层

2.2、以太网和IEEE 802封装以太网是当今TCP/IP采用的主要的局域网技术。它采用一种称作CSMA/CD的媒体介入方法,其意思是带冲突检测的载波侦听多路接入。它的速率为10Mb/s,地址为48bit。IEEE802委员会公布了一个稍有不同的标准集,其中802.3针对整个CSMA//CD网络,802.4针对令牌总线网络,802.5针对令牌环网络。这三者的共同特效由802.2标准来

2015-10-02 21:47:19 2472

原创 《TCP/IP详解 卷一:协议》读书笔记--概述

1.2、分层TCP/IP通常被认为四层协议系统链路层:通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡网络层:处理分组在网络中的活动,例如分组的选路(IP、ICMP和IGMP)运输层:主要为两台主机上的应用程序提供端到端的通信(TCP和UDP)应用层:Telnet远程登录,FTP文件传输协议,SMTP简单邮件传输协议,SNMP简单网络管理协议构造互联网最简

2015-09-30 17:14:11 7048

原创 android常见面试题与我自己的回答 (三)

1,ANR产生的原因和处理?ANR的产生需要同时满足三个条件:主线程:只有应用程序进程的主线程响应超时才会产生ANR;超时时间:产生ANR的上下文不同,超时时间也会不同,但只要在这个时间上限内没有响应就会ANR;输入事件/特定操作:输入事件是指按键、触屏等设备输入事件,特定操作是指BroadcastReceiver和Service的生命周期中的各

2015-09-25 13:29:11 1841

制作粒子爆炸特效

#简介 最近在闲逛的时候,发现了一款**粒子爆炸特效**的控件,觉得比较有意思,效果也不错。 但是代码不好扩展,也就是说如果要提供不同的爆炸效果,需要修改的地方比较多。于是我对源代码进行了一些**重构**,将爆炸流程和粒子运动分离。 对于源码,大家可以参考以下链接

2015-12-02

android粒子爆炸

#简介 最近在闲逛的时候,发现了一款**粒子爆炸特效**的控件,觉得比较有意思,效果也不错。 但是代码不好扩展,也就是说如果要提供不同的爆炸效果,需要修改的地方比较多。于是我对源代码进行了一些**重构**,将爆炸流程和粒子运动分离。 对于源码,大家可以参考以下链接

2015-12-04

金尚在线商城项目源码

金尚在线商城项目源码

2014-08-05

php注册登录

php注册登录

2012-12-01

自定义滚轮控件

自定义滚轮控件

2015-12-13

SuperLoadingProgress

#简介 昨天在简书上看到一篇文章,介绍了一个加载动画的实现过程 [一款Loading动画的实现思路(一)](http://www.jianshu.com/p/1c6a2de68753#) 只可惜原动画是**IOS**上制作的,而看了一下,作者的实现思路比较复杂,于是趁着空闲写了一个**Android版本**,这篇文章将给大家介绍一下实现过程。 首先让我们来看一下动画效果 ![这里写图片描述](http://img.blog.csdn.net/20151211230809602) <br><br>

2015-12-12

粒子爆炸特效

#简介 最近在闲逛的时候,发现了一款**粒子爆炸特效**的控件,觉得比较有意思,效果也不错。 但是代码不好扩展,也就是说如果要提供不同的爆炸效果,需要修改的地方比较多。于是我对源代码进行了一些**重构**,将爆炸流程和粒子运动分离。 对于源码,大家可以参考以下链接

2015-12-04

雷达图(蜘蛛网图)

#简介 最近因为项目需求,要实现一款雷达图来表示用户的各种成就值 雷达图的绘制很简单,只要思路清晰按部就班的绘制就可以了,其中使用得最多,是**路径path类**的使用,使用这个类可以让我们更加方便地绘制出**正多边形**等效果。 效果图如下:

2015-12-03

模仿手机QQ红点消除功能

#简介 手机QQ红点消除的功能大家应该印象很深,我一直奇怪微信为什么不跟进这个功能,毕竟消息太多。 功能图如下: ![这里写图片描述](http://img.blog.csdn.net/20151118101649390) 简单的功能描述是这样的:**新消息到来以后,会出现红点,红点被拉扯,在短距离内出现粘连效果,到达一点距离以后,可以扯断粘连,松手消除红点。** 对于这个功能是怎么实现的呢,我一直很好奇,并且参考了一下两篇文章:

2015-11-18

NineoldAndroids

#简介 [NineoldAndroids](https://github.com/JakeWharton/NineOldAndroids)是Github上一个著名的动画库,简单来说,**NineOldAndroids是一个向下兼容的动画库,主要是使低于API 11的系统也能够使用View的属性动画**。 网上已经有一些文章,介绍了这个库的设计,包括类结构和思想,例如

2015-11-14

ListView的多选模式

#ListView的多选需求 需求驱动技术,最近在项目中又遇到这样一个需求,简单而言就是:**遍历某个文件夹下的所有log文件,然后将它们通过微信发送给别人。** 这个功能很容易实现,但是在实现过程中,我希望自己的产品使用起来更加的人性化,所有我添加了**多文件压缩打包功能,多选,反选,全选等功能**,这样使用者就可以更加合理选择自己需要的log了。 那么问题来了,**ListView应该怎么实现多选功能呢?** <br><br>

2015-11-12

TextView自适应

#TextView问题由来 TextView在中英文夹杂的时候,会出现自动断行的情况,相信许多人都碰见过。这是系统的一个Bug,在Android5.0以后被修复了,而5.0以下的还没有见到比较好的解决版本。 参考了网上的方法,有的朋友推荐使用全角和半角转换(没有解决问题),也有的推荐了JustifyTextView这个控件(效果也不理想)。 于是我决定自定义一个TextView来做这件事,勉强解决了问题,但是代价是失去了很多TextView自身拥有的特性,而且TextView自身做了很多缓存和优化的工作,Google强烈不建议我们去修改这个控件。 我们先来看看实现效果:

2015-11-11

通用Adapter

通过对Adapter的简单封装,我们大大减少了自定义Adapter过程中的麻烦。网上实现多布局Adapter的设计,都是以单个布局Adapter为基类,然后提供一个辅助类来实现多布局。

2015-11-07

Volley加载本地图片

volley加载网络图片 众所周知volley提供了一个ImageLoader类用于网络图片的加载,本质上也是用消息队列的那一套去进行图片请求,只是请求以后做了一些图片本地缓存、缩放、错位处理等内容。 下面我们来看一个简单的加载例子:

2015-11-03

settings.jar

在Android Studio上快速导入Eclipse风格

2015-10-29

接收广播的最高优先级

@SuppressLint("NewApi") public class MainActivity extends Activity { SmsReceiver myReceiver; Button btn; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn = (Button) findViewById(R.id.btn); btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { test(); } }); } public void test(){ Cursor cursor = null; String defaultSmsApp = Telephony.Sms.getDefaultSmsPackage(this); Intent intent = new Intent(Sms.Intents.ACTION_CHANGE_DEFAULT); intent.putExtra(Sms.Intents.EXTRA_PACKAGE_NAME, this.getPackageName()); startActivity(intent); try { cursor = getContentResolver().query(Uri.parse("content://sms/inbox"), new String[] { "_id", "address", "read" }, "read = ? ", new String[] {"0" }, "date desc"); if (cursor != null) { ContentValues values = new ContentValues(); values.put("read", "1"); for (cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()) { Log.v("cky", "" + cursor.getInt(cursor.getColumnIndex("_id")) + " , " + cursor.getString(cursor.getColumnIndex("address"))); int res = getContentResolver().update(Uri.parse("content://sms/inbox"), values, "_id=?", new String[] { "" + cursor.getInt(cursor.getColumnIndex("_id")) }); Log.i("cky","geng xin = "+res); } } intent = new Intent(Sms.Intents.ACTION_CHANGE_DEFAULT); intent.putExtra(Sms.Intents.EXTRA_PACKAGE_NAME, defaultSmsApp); startActivity(intent); } catch (Exception e) { e.printStackTrace(); } finally { if (cursor != null) { cursor.close(); cursor = null; } } } }

2015-10-29

CircleIndicator

/** * Created by kaiyi.cky on 2015/8/17. */ public class CircleIndicator extends LinearLayout implements ViewPager.OnPageChangeListener{ private ViewPager mViewPager; ViewPager.OnPageChangeListener mListener; private final static int SCROLL_WHAT = 99; MyHandler myHandler; /** * 滚动间隔时间 */ private int spentTime = 3000; /** * 当前显示的序号 */ private int curIndex = 1; /** * 圆点半径 */ private int circleRadiu = 10; /** * 圆点内边距 */ private int circlePadding = 3; /** * 圆点数目 */ private int circleCount = 0; /** * 滑动方向 * 1为向右,-1为向左 */ private int direction = 1; public CircleIndicator(Context context) { super(context); init(); } public CircleIndicator(Context context, AttributeSet attrs) { super(context, attrs); init();

2015-08-22

SVGPathView

/** * PathView is an View that animate paths. */ public class PathView extends View { /** * Logging tag. */ public static final String LOG_TAG = "PathView"; /** * The paint for the path. */ private Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG); /** * Utils to catch the paths from the svg. */ private final SvgUtils svgUtils = new SvgUtils(paint); /** * All the paths provided to the view. Both from Path and Svg. */ private List<SvgUtils.SvgPath> paths = new ArrayList<SvgUtils.SvgPath>(0); /** * This is a lock before the view is redrawn * or resided it must be synchronized with this object. */ private final Object mSvgLock = new Object(); /** * Thread for working with the object above.

2015-08-17

EventBus代码

public class EventBus { HashMap<Class<?>,ArrayList<Subscription>> subscriptionsByEventType = new HashMap<Class<?>,ArrayList<Subscription>>(); MainThreadHandler mainThreadHandler = new MainThreadHandler(this,Looper.getMainLooper()); AsyThreadHandler asyThreadHandler = new AsyThreadHandler(this); private final static EventBus instance = new EventBus(); public static EventBus getInstance(){ return instance; } private EventBus(){};

2015-08-11

VerticalScrollView

/** * Created by kaiyi.cky on 2015/8/5. * 跑马灯控件 */ public class VerticalScrollView extends ScrollView{ private LinearLayout mLinearLayout; /** * 当前显示的序号 */ private int curIndex = 1; /** * 滚动方向 * 1为向下,-1为向上 */ private int direction = 1; /**

2015-08-09

PullScrollView

/** * Created by kaiyi.cky on 2015/7/24. */ public class PullBlurScrollView extends ScrollView { /**头部**/ private View mHeader; /**主体**/ private View mContentView; /** 模糊图片 **/ private BlurDrawable mBlurDrawable; /** 阻尼系数,越小阻力就越大. */ private static final float SCROLL_RATIO = 0.5f; /** 当前头部状态 */ private State mState = State.NORMAL; /** 头部总高度 */ private int mHeaderHeight; /** 头部可视高 */ private int mHeaderVisibleHeight; /** 头部图片初始顶部和底部. */ private int mInitTop, mInitBottom; /** 头部图片拖动时顶部和底部. */ private int mCurrentTop, mCurrentBottom; /** 首次点击的Y坐标. */ private PointF mStartPoint = new PointF(); /** ScrollView的content view矩形,用于记录content的初始位置情况 */ private Rect mContentRect = new Rect(); /** 是否移动到顶部位置. */ private boolean isTop = false; /** 是否关闭ScrollView的滑动. */ private boolean mEnableTouch = false; /** 是否开始移动. */ private boolean isMoving = false; private enum State { /**顶部*/ UP, /**底部*/ DOWN, /**正常*/ NORMAL } public PullBlurScrollView(Context context) { super(context); init(context,null); }

2015-07-30

DrawerArrowDrawable

/** A drawable that rotates between a drawer icon and a back arrow based on parameter. */ public class DrawerArrowDrawable extends Drawable { /** * Joins two {@link Path}s as if they were one where the first 50% of the path is {@code * PathFirst} and the second 50% of the path is {@code pathSecond}. * 合并两个路径,前50%为路径1,后50%为路径2 */ private static class JoinedPath { private final PathMeasure measureFirst; private final PathMeasure measureSecond; private final float lengthFirst; private final float lengthSecond; private JoinedPath(Path pathFirst, Path pathSecond) { //PathMeasure类用于提供路径上的点坐标 measureFirst = new PathMeasure(pathFirst, false); measureSecond = new PathMeasure(pathSecond, false); lengthFirst = measureFirst.getLength(); lengthSecond = measureSecond.getLength(); }

2015-06-02

CircularProgressButton

package com.example.androidtest.view; import android.annotation.SuppressLint; import android.content.Context; import android.content.res.ColorStateList; import android.content.res.TypedArray; import android.graphics.Canvas; import android.graphics.drawable.Drawable; import android.graphics.drawable.GradientDrawable; import android.graphics.drawable.StateListDrawable; import android.os.Build; import android.os.Parcel; import android.os.Parcelable; import android.util.AttributeSet; import android.util.StateSet; import android.widget.Button; import com.example.androidtest.R; public class CircularProgressButton extends Button { /** * 状态代号 * 0为初始状态,-1失败状态,100为完成状态,50为不明确中间状态 */ public static final int IDLE_STATE_PROGRESS = 0; public static final int ERROR_STATE_PROGRESS = -1; public static final int SUCCESS_STATE_PROGRESS = 100; public static final int INDETERMINATE_STATE_PROGRESS = 50; /** * 背景StrokeGradientDrawable * A Drawable with a color gradient for buttons, backgrounds, etc. * It can be defined in an XML file with the <shape> element. */ private StrokeGradientDrawable background; /** * 环形动画背景 */ private CircularAnimatedDrawable mAnimatedDrawable; /** * 环形进度背景 */ private CircularProgressDrawable mProgressDrawable; /** * ColorStateList对象可以在XML中定义,像color一样使用,它能根据它应用到的View对象的状态实时改变颜色 * 当每次状态改变时,StateList都会从上到下遍历一次,第一个匹配当前状态的item将被使用——选择的过程不是基于“最佳匹配”, * 只是符合state的最低标准的第一个item。 */ private ColorStateList mIdleColorState; /** * 完成状态ColorStateList */ private ColorStateList mCompleteColorState; /** * 失败状态ColorStateList */ private ColorStateList mErrorColorState; /** * 用于根据状态改变drawable * 初始状态背景 */ private StateListDrawable mIdleStateDrawable;

2015-05-30

xlistview代码

/** * @file XListView.java * @package me.maxwin.view * @create Mar 18, 2012 6:28:41 PM * @author Maxwin * @description An ListView support (a) Pull down to refresh, (b) Pull up to load more. * Implement IXListViewListener, and see stopRefresh() / stopLoadMore(). */ package com.example.androidtest.view; import android.content.Context; import android.util.AttributeSet; import android.view.MotionEvent; import android.view.View; import android.view.ViewTreeObserver.OnGlobalLayoutListener; import android.view.animation.DecelerateInterpolator; import android.widget.AbsListView; import android.widget.AbsListView.OnScrollListener; import android.widget.ListAdapter; import android.widget.ListView; import android.widget.RelativeLayout; import android.widget.Scroller; import android.widget.TextView; import com.example.androidtest.R; public class XListView extends ListView implements OnScrollListener { private float mLastY = -1; // save event y /** * 用于下拉后,滑动返回 */ private Scroller mScroller; // used for scroll back private OnScrollListener mScrollListener; // user's scroll listener // the interface to trigger refresh and load more. private IXListViewListener mListViewListener; /** * 下拉头部 */

2015-05-25

datepicker

datepicker源代码. public class NumberPicker extends View { //基本设置 /** * picker宽度 */ private int mWidth; /** * picker高度 */ private int mHeight; /** * 声效 */ private Sound mSound; /** * 是否开启声效 */ private boolean mSoundEffectEnable = true;

2015-05-23

crazy__chen的留言板

发表于 2020-01-02 最后回复 2020-01-02

数据库设计中,会为每个注册用户都新建一张表吗

发表于 2014-04-25 最后回复 2019-09-23

csdn博客被误删除,能恢复吗?

发表于 2015-11-17 最后回复 2017-10-11

八皇后算法问题

发表于 2014-08-08 最后回复 2014-08-08

html5实现文字镜面反转

发表于 2014-05-07 最后回复 2014-08-08

curl抓取frame里面的cookie

发表于 2014-04-24 最后回复 2014-05-07

什么是对象化存储

发表于 2014-04-03 最后回复 2014-04-24

有必要使用数据库保存会话吗?

发表于 2014-04-02 最后回复 2014-04-24

php实现基数排序

发表于 2014-03-01 最后回复 2014-04-02

请教:怎么在微信公众平台模拟登陆上传素材?

发表于 2013-07-30 最后回复 2014-03-01

设置了left但是DOM中left为空

发表于 2013-12-05 最后回复 2013-12-07

空空如也

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

TA关注的人 TA的粉丝

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