自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

永远即等待的专栏

记录自己的点点滴滴

  • 博客(103)
  • 资源 (8)
  • 收藏
  • 关注

原创 Android 下拉刷新框架实现

一个通用的下拉刷新的框架介绍。前段时间项目中用到了下拉刷新功能,之前在网上也找到过类似的demo,但这些demo的质量参差不齐,用户体验也不好,接口设计也不行。最张没办法,终于忍不了了,自己就写了一个下拉刷新的框架,这个框架是一个通用的框架,效果和设计感觉都还不错,现在分享给各位看官。

2013-10-13 23:20:50 135581 220

原创 Android WebView的Js对象注入漏洞解决方案

Android webview注入JS对象引发的安全漏洞,恶意的JS脚本可以读取到SDcard上面的任何文件,本文给出了这种漏洞的一种解决方案。

2013-09-30 11:01:16 84362 35

原创 Android 3D旋转动画效果

这篇文章主要介绍一下如何实现View的3D旋转效果,实现的主要原理就是围绕Y轴旋转,同时在Z轴方面上有一个深入的缩放。演示的demo主要有以下几个重点:1,自定义旋转动画2,动画做完后,重置ImageView先看一下程序的运行效果:1,自定义动画类这里实现了一个Rotate3dAnimation的类,它扩展了Animation类,重写applyTra

2013-06-19 10:35:39 23387 3

原创 Android 实现 WheelView

我们都知道,在iOS里面有一种控件------滚筒控件(Wheel View),这通常用于设置时间/日期,非常方便,但Android SDK并没有提供类似的控件。这里介绍一下如何Android实现WheelView。这是很通用的一个控件,而且提供了很灵活的API,现在分享给各位看官。

2013-02-28 20:51:52 65083 75

原创 Android 程序框架设计

这篇文章主要内容来自于之前我讲的一个PPT文档,现在将其整理如下。欢迎指正。以下的内容都是来自于我自身的经验,欢迎大家多提自己的建议。1、一些概念模式的定义:每个模式都描述了一个在我们的环境中不断出现的问题,然后描述了该问题的解决方案的核心。通过这种方式,你可以无数次地使用那些已有的解决方案,无需在重复相同的工作。什么是设计模式?设计模式是在某种特别的情况下,针对某种问

2013-01-23 18:33:25 47316 42

原创 Android tcpdump抓包应用实现

Android应用很多时候都会涉及到网络,在请求网络出错时,我们可以通过抓包来分析网络请求,返回的数据等,通常我们是用tcpdump这个工具来抓包,再通过wireshark工具来分析生成的文件,关于tcpdump的使,可以从网上查一下,有很多介绍,比如:http://www.cnblogs.com/likwo/archive/2012/09/06/2673944.html。关于如何用wiresha

2014-03-05 13:27:36 10977 14

原创 Anroid ListView分组和悬浮Header实现

之前在使用iOS时,看到过一种分组的View,每一组都有一个Header,在上下滑动的时候,会有一个悬浮的Header,这种体验觉得很不错,这种效果在Android是没有的,iOS的SDK就自带这种效果。这篇文章就介绍如何在Android实现这种效果。

2014-01-27 12:26:55 50968 18

原创 Android ColorDrawable那些事

今天在开发过程中遇到一个很蛋痛的问题,最终发现是系统的问,值得总结一下。前提我在实现一个基于Adapter的LinearLayout的时候,想在第一个View中间绘制一个间隔线(Divider),接收一个Drawable对象,这是前提。在绘制间隔线的时候,我的代码是这样的: private void drawVerticalDividers(Canvas canvas) {

2014-01-16 14:42:13 21541 1

原创 Android java.lang.NoClassDefFoundError的一种解决方法

在开发过程中,遇到一个这样的问题:java.lang.NoClassDefFoundError: android.support.v4.util.SparseArrayCompat,这个问题很奇怪,JAR包也有了,编译也通过了。但就是运行时出现类找不到的问题。NoClassDefFoundError这种错误一般就是对应的类,没有被包含在对应的APK里面。是不是对应的android-support-

2013-07-22 12:06:16 67295 19

原创 Android 使用Ant编译Android 工程

如何编译Android 工程?关于如何编译Android 工程在这篇官方文档这里中解释的比较清楚, 太多的详细的解释我就不说了,RTFM。我需要说的是我们既可以让IDE替你完成编译的编译工作,也可以使用命令行的方式编译工程。什么? 命令行? 是不是太老土了? No! 我们总有情况是使得IDE不能完成编译工作。什么情况呢?在你的资源文件十分庞大的情况下,IDE 就罢工了,怎么

2013-06-21 16:49:09 5281

原创 Android ListView不响应OnItemClickListener解决办法

有时候,当ListView中的每一个item是自定义的View时,有可能会导致ListView的OnItemClickListener的listener无法调用,请看如下情况:如果你的自定义ListViewItem中有Button或者Checkable的子类控件的话,那么默认focus是交给了子控件,而 ListView的Item能被选中的基础是它能获取Focus,也就是说我们可以通过将Lis

2013-06-21 16:39:28 22319 3

原创 强大的Doxygen工具使用手册

张三:假如我们自己开发了一个类库,怎么做一个方便阅读的文档呢?李四:一个方法一个方法地写呗,就像写Excel文档一下。张三:啊,你out了,这多慢呀。为什么不玩玩doxygen工具,它能帮你生成文档?李四:这么爽,什么东东,给说讲讲。1. Doxygen, what?Doxgen就是大名鼎鼎的文档生成工具,而且是免费开源的,它使用非常方便,能提取C++,Java,Obj

2013-06-20 16:13:32 20876 1

原创 用xdelta来制作差分文件

xdelta 是制作二进制文件差分的好工具。有时候,我们的APK安装包特别大,在release时,如果每次都传一下很大的包的话,效率肯定不行,下面我这里推荐一个工具,来生成二进制的差分文件,那就是——xdelta。在Ubuntu场合下:1,安装 $sudo apt-get install xdelta2,制作差分文件$ xdelta delta (Sorce file)

2013-06-20 15:48:30 5899 1

原创 如何画各种“图”?

我们在写文档过程中,多多少少都会画一些图来说明程序的功能,这篇文章就来说明一些常用的"图"怎么画。1,画图工具常用的有这么几种Visio:这是很常用的,基本上的图都可以用这个来画。StarUML:这个是一个专用来画UML的图,效果也还可以,我用得比较少。画图板:如果你用画图板也一样能画出效果不错的图,神人也,值得膜拜,不过,这个东西很低效,不推荐。2,类图关于类图的详细信息

2013-06-20 15:40:56 7655

原创 设计UI的基本思路

我们在设计UI时,通常是有一些步骤与原则,下面列出了一些常用的,可能也不是很准确,希望抛砖引玉,让大家对UI设计有一个思路,这里一定要有一个意识,在拿到一个UI设计图的时候,不要马上就想到要怎么怎么实现,而是需要细心分析与设计。1,明确划分与UI相关和与UI无关的部分根据UI的设计图,我们首先要把界面展现的数据先抽出去,只看UI的表现。也就是说,把UI相关的部分抽出来。比如一个界面可能需要

2013-06-19 17:08:52 5490 2

原创 方法与设计

本文主要是从《Java编程思想》上面总结出来的。方法论在你经历整个开发过程时,最重要的一点是:不要迷失。这很容易做到。大多数分析与设计方法论都试图去解决最大型的问题。但是请记住,多数工程并不属于这一范畴,我们通常只需要采取某种方法论所推荐的一个相对较小的子集就可以得到成功的分析与设计。但是某些类型的处理过程,无论它们怎样小或者怎样受限制,通常也都应该采用某种比直接开始编码要好得多的

2013-06-19 17:04:08 1896

原创 如何保持API的兼容

1,采用良好的设计思路在设计过程中,如果能按照下面的方式来进行设计,会让这个API生命更长久面向用例的设计,收集用户建议,把自己模拟成用户,保证API设计的易用和合理保证后续的需求可以通过扩展的形式完成第一版做尽量少的内容,由于新需求可以通过扩展的形式完成,因此尽量少做事情是抑制API设计错误的一个有效方案对外提供清晰的API和文档规范,避免用户错误的使用API,尤其是避免API(见第

2013-06-19 16:43:05 3586

原创 设计模式原则

原则,故名思议则是本质的意思。所谓擒贼先擒王,研究设计模式自然要先了解设计原则, 所有的模式都是在这些原则的基础之上发展起来的,有的是侧重一个,有的是多个都有所涉及。看完设计模式之后,我感觉到每个模式都有这些原则的影子,还渗透 着面向对象的三大属性,也觉得这些原则也都有相通之处,,正是有了他们才使我们由代码工人转为艺术家。下面我来点评一下六大原则,望各位拍砖:1、单一职责原则(Single R

2013-06-19 16:40:28 1681

原创 高绩效团队的建设与管理

北京影响力企业管理有限公司 《高绩效团队的建设与管理》课后心得结合自身团队的状况,我们应该怎么做? 思维:水平思维目的:知行合一心态:自信什么垂直思维什么水平思维什么知行合一1,团队概述------从合力到分力组织与团队的区别好团队的特征积极主动相互协作责任第一竞合共赢是成功团队的习惯2,团队的思想建设------意识决定行动 思想建

2013-06-19 16:38:01 2978

原创 Java中的四种引用

Java中存在四种引用,它们分别是:1. 强引用(StrongReference) 强引用是使用最普遍的引用。如果一个对象具有强引用,那垃圾回收器绝不会回收它。当内存空间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终止,也不会靠随意回收具有强引用的对象来解决内存不足的问题。2. 软引用(SoftReference)如果一个对象只具有软引用,则

2013-06-19 16:34:51 1848 1

原创 XML转义字符

大家关于XML的标准,可以参考W3C的标准文档,或者维基百科。写了个request2XML的方法,每当数据中有'在XML文档中的所有文本都会被解析器解析。只有在CDATA部件之内的文本会被解析器忽略。1,解析数据XML 解析器通常情况下会处理XML文档中的所有文本。当XML元素被解析的时候,XML元素内部的文本也会被解析:This text is also pars

2013-06-19 16:10:41 4192

原创 Android XML解析器的问题

最近在项目中遇到了一个解析XML的问题,我们是用android自带的DOM解析器来解析XML的,但发现了一个android的问题,那就是在2.3的SDK上面,无法解析像, 等字符串。尽管我们从服务器端返回的数据中,应该是不能包含这样的字符,应该使用转义,但有时候,由于历史原因,导致服务器端不能作这样的修正,所以这样的问只能是在客户端来解决了。下面我就说一说我们是如何解决这种问的。1,现象

2013-06-19 15:56:21 2095

原创 Android 数据库升级解决方案

请考虑如下情况:在数据库升级时,不同版本的数据库,他们定义的表结构完全可能是不一样的,比如V1.0的表A有10个column,而在V1.1的表A有12个colum,在升级时,表A增加了两列,此时我们应该怎么做呢。总体思路1,将表A重命名,改了A_temp。2,创建新表A。3,将表A_temp的数据插入到表A。下面代码列出了更新表的实现,upgradeTables

2013-06-19 14:33:07 31809 16

原创 Android 异步链式调用设计

本文讨论一下异步链式调用的设计与实现。考虑如下情况:情况1:访问网络(或其他耗时的事情)。通常的做法是:1、显示一个ProgressDialog对话框,提示用户。2、启动工作线程来执行耗时操作。3、发送消息到关联到主线程的Handler里面,关闭对话框。情况2:从网络下载一个zip文件,下载完成之后,询问用户是否执行解压操作。通常的合理做法:1、显示一个Pr

2013-06-19 12:35:12 6624 14

原创 Android debug.keystore的密码

在Eclipse里面编译生成的APK中有一个签名的,它默认的key是debug.keystore,它默认的路径是:C:\Users\\.android\debug.keystore这个key的密码是:android ================================================================我们可以输入如下命令来查看其

2013-06-19 12:17:18 76135 3

原创 Android 中的消息循环简介

这里有三个很重要的概念:1,Looper默认的工作线程是没有与之关联的消息循环,可以通过Looper类来运行消息循环。进入消息循环后,该消息循环会一直处理消息,直接退出消息循环。调用Looper.prepare()方法来创建消息循环,调用Looper.loop()方法来开始消息循环。下面代码示例了如何实现一个带有消息循环的线程类,这个线程类关联了一个Handler。

2013-06-19 12:13:25 3674 1

原创 Android getDrawable返回ColorDrawable而不是BitmapDrawable

在Android 2.3.x上面,遇到了一个问题,那就是通过Application Context得到Resources,然后再调用getDrawable(int),得到的是一个ColorDrawable,而不是BitmapDrawable,但是这个id所对应的资源的确是一张图片。1,问题背景 实现代码是这样的:Drawable drawable = CustomApp

2013-06-19 12:08:03 6830 1

原创 Android 从一次apk迁移窥看Android JellyBean(4.1)的变化

平台的版本的变化会引入新的特性,和对现有API的优化。对于Android 4.1 (JellyBean)的新特性请参考官方文档android-4.1,由于本文的重点不是对4.1新特性进行介绍,所以暂时省略这部分内容。众所周知对于已有项目的维护,有一项必不可少的工作就是对app进行平台版本的迁移工作,对于身处移动平台的Android更是如此。这期间会碰见许多"莫名其妙"的奇怪问题,下文会结合

2013-06-19 12:00:47 2419

原创 Android 吸入动画效果详解

1,背景吸入(Inhale)效果,最初我是在iOS上面看到的,它是在Note程序中,用户可能添加了一页记录,在做删除时,它的删除效果是:这一页内容吸入到一个垃圾框的图标里面。请看下图所示:===============================================================================这里,我要介绍

2013-06-19 11:50:12 23788 27

原创 Android ListView那些事

ListView是我们在开发Android程序时用得比较多的一种widget,通常用来展示多条数据,这里,我对ListView的一些功能点作一个简单介绍。1. Cache color hint默认情况下,Android中的View的背景都是透明的,这是一个合理的设计,但是,当渲染到屏幕上时,这会引入许多的计算,因为所有的child的背景是透明的,这就意味着当ListView绘制它的chil

2013-03-05 12:40:46 5267 3

原创 Java Thread 总结

这篇文章的主要内容来自于网络,由我来整理,姑且算是原创吧,但是对于内容的提供者,在此表示感谢。1.线程概述线程是一个程序的多个执行路径,执行调度的单元,依托于进程的存在。线不仅可以共享进程的内在,而且还拥有一个属于自己的内存空间,这段内存空间就是线程栈,是在建立线程时系统分配的,主要用来保存线内部所使用的数据,如线程执行函数中所定义的变量,线程的状态等信息。Java中的多线程是一个抢占

2013-02-28 19:18:44 12106

原创 Windows文件检索之——查询范围

对于检索范围来说,也是比较简单的,根据第一节,我们知道,ISearcherFolderFactory提供了一个方法SetScope,就是让用户传一个IShellItemArray的指针进去。所以,我们主要的工作就是如何来创建IShellItemArray接口指针。1.如何创建IShellItemArrayShell API提供了一个方法,SHCreateShellItemArrayFrom

2013-02-26 13:51:41 2983 1

原创 Windows文件检索之——查询条件

这一节讲如何实现查询条件。我们把查询条件封装成了一个类,SdkQueryCondition,它的本质是对ICondition这个COM接口进行的封装。1.SdkQueryCondition接口下面列出SdkQueryCondition类的公共接口。HRESULT GetCondition(ICondition **ppc);HRESULT SetCondition(LPCWS

2013-02-26 13:46:09 2004

原创 Windows文件检索之——接口设计

这一节我们讲文件检索,主要讲一讲它用到了哪些COM接口和Shell相关知识。这里,我们重点讲一讲它的本质,至于如何利用设计模式的东西去包装,用没用线程等,这里就不用讲了。我们需要的是关注本质。其实对于熟悉Shell的人来说,Search这一部分是比较简单的。我们很幸运,由于之前做的一个项目是仅仅是运行在Windows 7之上的,所以我们这个检索模块可以不用支持Windows 7以下的OS,

2013-02-26 13:29:21 2356 1

原创 C#基本图像处理

最近没事,有网上看到一篇关于图像处理的文章,觉得很好,结合它上面的原理,自己写了一个C#图像处理的例子。这个DEMO的界面的有两个PictrueBox控件,用来显示图片,一个是源图片,一个是经过转换的目标图片,UI下面部分有一些按钮,每个按钮实现一个转换功能。这个DEMO允许用户拖一张图片到源PictureBox中,然后通过这些功能按钮实现图片的效果转换。这些功能有把图片变成黑白、底片、浮雕、锐化

2013-02-26 12:33:58 18343 2

原创 x86程序读取64位系统注册表失败解决方案

在做一个项目时,遇到了这么一种情况,在64位操作系统下(WOW),运行一个x86的应用程序,这个程序会读取注册表项目,读取注册表的代码是一样的,只要不交叉访问就是正确的(32位程序运行在x86平台,64位程序运行在x64平台),最后进行了一番调试,才搞明白失败的原因。    导致原因是这样的,32位与64位两个操作系统版本上的注册表的结构是不一样的,有些键是可以共享的,而有些键是不可以共享

2013-02-26 12:25:28 7626

原创 关于AlphaBlend函数使用时遇到的问题

AlphaBlend函数在使用时,要注意以下几点:1,源图片的宽高只能小于等于实际图片(选入到hMemDC的HBITMAP)的宽高,不然的话就绘制不出来。比如说,实际的HBITMAP的大小是 256 * 256 的,那么你的宽高不能超过 256,不然就绘制不出来。2,源的left和top与源的width和height相加的值也应当要小于等于源图片的宽高。也就是说,如果源top是

2013-02-26 12:22:18 1560

原创 Win32遍历指定路径下的文件(Shell实现)

其实有很多种方法实现遍历指定路径下的文件,最普通的可能就是用FindFirstFile、FindNextFile等API来实现,这种实现方法也可以,但是,如果文件夹时里面有子文件夹的话,用这个方法实现起来就有点麻烦,可能要用递归,而递归这种方式效率是个很大的问题,在这不打算讲这种方法,下面要说的是另一种方式------Windows Shell。    其实用Shell来实现,思路很简

2013-02-26 12:21:19 2393

原创 打开文件夹,并同时选中指定文件

如何用程序打开一个文件,并选中这个文件夹中指定的文件呢?其实这个功能用得很多。1.方法一ShellExecute( NULL, _T("open"), _T("Explorer.exe"), _T("/select, D:\\a.mp3"), NULL, SW_SHOWDEFAULT);打开D盘,并选中a.mp3这个文件。2

2013-02-26 12:19:06 6391 1

原创 Windows获取所有视频文件的扩展名

有时候,我们想得到当前电脑上面视频类型文件的扩展名,(事实上,不光是视频类型的,还有音乐类型,文档类型的文件的扩展名),我们要怎么实现呢?其实这些信息都是存放在注册表中,包括每种类型的文件的属性选项都是存放在注册表中。下面讲一下如何得到视频类型的文件扩展名(同理也可以得到其实类型的)。    注册表路径:    HKEY_LOCAL_MACHINE\\Software\\Micro

2013-02-26 12:16:21 3229

Android 画图板

这个代码是我博客中的源码: http://blog.csdn.net/leehong2005/article/details/7334959 实现的功能也不全,也是两年前的代码了,供大家一个参考。

2013-11-23

Android WheelView Demo源码

类似于ios中的WheelView,滚筒UI,感觉这个DEMO还不错,请各位看官下载吧,enjoy it!!! 不论从设计上,还是代码实现上,都比较独特,我是利用Gallery来实现的,你可能觉得奇怪,Gallery不是横着滑的吗,是,没错,是横着滑,我修改了源代码,让它可以竖首滑。还不去看看

2013-11-01

Android下拉刷新框架源码

这个资源中包含了一个通用的下拉刷新框架源码和demo apk。其实网上有很多下拉刷新的例子,但都不是很共通,特别是以listview添加header或footer居多,这很明显无法应用到GridView这样的布局。基于此,我们参考前辈的代码的基础上,实现了一个还算比较共通的框架,这个框架可以支持ListView, GridView, ScrollView, WebView,严格来说,你可以把任何View放到这个框架中。 另外,一个人的精力总是有限的,虽然我自测过,但也不能完全保证在不同的机型不同的android版本没有问题,所以,如果大家在使用中发现有不爽的地方和bug的话,请报告给我,我的邮箱是: [email protected]。 开源的东西需要大家一起一推动,最终形成一个完善的东西。

2013-10-13

PullToRefreshDemo

这个资源中包含了一个共通的下拉刷新框架代码和相应的demo apk。 这个框架能完美支持listview, webview, scrollview等任何窗口的下拉刷新。它是一个共通的框架。 其实下拉刷新网上有很多例子,但多数都不能很好的共通,而且局限性也很多,以在ListView中添加header或footer为最多,但这样的例子如何应用到GridView中?但我们这个框架就可以,严格来说,你可以把任何的类型的View放到这个框架中。 另外,毕竟一个人的精力是有限的,我虽说做了很多测试,但也不完全没有bug,主要测了listview, scrollview, webview,如果大家在使用的过程中,发现有任何不爽的地方,或是bug,请给我回复给我。开源的东西需要大家一起要推动,最终形成一个良好的东西。 我的邮件是:[email protected]

2013-10-13

WebViewBugDemo

这个demo解决了android 4.2以下的webviwe的注入Js对象的安全漏洞问题。具体的漏洞描述如下: 1,webview加载恶意的html,如果这个html中包含了恶意的js,通过js可能读取到sdcard中的文件。 2,如果注入一个Js接口对象,html中的js可以通过这个注入的对象得到getClass()方法,然后通过反射得到Runtime类,通过调用exec方法来执行一段linux命令。

2013-09-30

Image Cache v2.0

这个demo示例了在listview/gridview中加载图片,不会导致oom。 用到了lrucache。 ====================================== 这一版的代码修正了一个bug —— 导致图片显示不正确。 我之前也上传过一版Image cache,但存在一个bug,也是最近才发现的。所以重新上传一下。

2012-10-26

Gallery 3D效果

这个demo实现了类似iOS上面的CoverFlow功能。 主要有两个功能 1, 实现图片的倒影效果 2,重写gallery的一些方法实现Y轴上的旋转,Z轴上的缩放。

2012-10-15

Image Cache

这个demo示例了在listview/gridview中加载图片,不会导致oom。 用到了lrucache。

2012-10-10

空空如也

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

TA关注的人

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