- 博客(103)
- 资源 (8)
- 收藏
- 关注
原创 Android 下拉刷新框架实现
一个通用的下拉刷新的框架介绍。前段时间项目中用到了下拉刷新功能,之前在网上也找到过类似的demo,但这些demo的质量参差不齐,用户体验也不好,接口设计也不行。最张没办法,终于忍不了了,自己就写了一个下拉刷新的框架,这个框架是一个通用的框架,效果和设计感觉都还不错,现在分享给各位看官。
2013-10-13 23:20:50 135673 220
原创 Android WebView的Js对象注入漏洞解决方案
Android webview注入JS对象引发的安全漏洞,恶意的JS脚本可以读取到SDcard上面的任何文件,本文给出了这种漏洞的一种解决方案。
2013-09-30 11:01:16 84918 35
原创 Android 3D旋转动画效果
这篇文章主要介绍一下如何实现View的3D旋转效果,实现的主要原理就是围绕Y轴旋转,同时在Z轴方面上有一个深入的缩放。演示的demo主要有以下几个重点:1,自定义旋转动画2,动画做完后,重置ImageView先看一下程序的运行效果:1,自定义动画类这里实现了一个Rotate3dAnimation的类,它扩展了Animation类,重写applyTra
2013-06-19 10:35:39 23464 3
原创 Android 实现 WheelView
我们都知道,在iOS里面有一种控件------滚筒控件(Wheel View),这通常用于设置时间/日期,非常方便,但Android SDK并没有提供类似的控件。这里介绍一下如何Android实现WheelView。这是很通用的一个控件,而且提供了很灵活的API,现在分享给各位看官。
2013-02-28 20:51:52 65177 75
原创 Android 程序框架设计
这篇文章主要内容来自于之前我讲的一个PPT文档,现在将其整理如下。欢迎指正。以下的内容都是来自于我自身的经验,欢迎大家多提自己的建议。1、一些概念模式的定义:每个模式都描述了一个在我们的环境中不断出现的问题,然后描述了该问题的解决方案的核心。通过这种方式,你可以无数次地使用那些已有的解决方案,无需在重复相同的工作。什么是设计模式?设计模式是在某种特别的情况下,针对某种问
2013-01-23 18:33:25 47538 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 11059 14
原创 Anroid ListView分组和悬浮Header实现
之前在使用iOS时,看到过一种分组的View,每一组都有一个Header,在上下滑动的时候,会有一个悬浮的Header,这种体验觉得很不错,这种效果在Android是没有的,iOS的SDK就自带这种效果。这篇文章就介绍如何在Android实现这种效果。
2014-01-27 12:26:55 51031 18
原创 Android ColorDrawable那些事
今天在开发过程中遇到一个很蛋痛的问题,最终发现是系统的问,值得总结一下。前提我在实现一个基于Adapter的LinearLayout的时候,想在第一个View中间绘制一个间隔线(Divider),接收一个Drawable对象,这是前提。在绘制间隔线的时候,我的代码是这样的: private void drawVerticalDividers(Canvas canvas) {
2014-01-16 14:42:13 21596 1
原创 Android java.lang.NoClassDefFoundError的一种解决方法
在开发过程中,遇到一个这样的问题:java.lang.NoClassDefFoundError: android.support.v4.util.SparseArrayCompat,这个问题很奇怪,JAR包也有了,编译也通过了。但就是运行时出现类找不到的问题。NoClassDefFoundError这种错误一般就是对应的类,没有被包含在对应的APK里面。是不是对应的android-support-
2013-07-22 12:06:16 67370 19
原创 Android 使用Ant编译Android 工程
如何编译Android 工程?关于如何编译Android 工程在这篇官方文档这里中解释的比较清楚, 太多的详细的解释我就不说了,RTFM。我需要说的是我们既可以让IDE替你完成编译的编译工作,也可以使用命令行的方式编译工程。什么? 命令行? 是不是太老土了? No! 我们总有情况是使得IDE不能完成编译工作。什么情况呢?在你的资源文件十分庞大的情况下,IDE 就罢工了,怎么
2013-06-21 16:49:09 5302
原创 Android ListView不响应OnItemClickListener解决办法
有时候,当ListView中的每一个item是自定义的View时,有可能会导致ListView的OnItemClickListener的listener无法调用,请看如下情况:如果你的自定义ListViewItem中有Button或者Checkable的子类控件的话,那么默认focus是交给了子控件,而 ListView的Item能被选中的基础是它能获取Focus,也就是说我们可以通过将Lis
2013-06-21 16:39:28 22497 3
原创 强大的Doxygen工具使用手册
张三:假如我们自己开发了一个类库,怎么做一个方便阅读的文档呢?李四:一个方法一个方法地写呗,就像写Excel文档一下。张三:啊,你out了,这多慢呀。为什么不玩玩doxygen工具,它能帮你生成文档?李四:这么爽,什么东东,给说讲讲。1. Doxygen, what?Doxgen就是大名鼎鼎的文档生成工具,而且是免费开源的,它使用非常方便,能提取C++,Java,Obj
2013-06-20 16:13:32 20961 1
原创 用xdelta来制作差分文件
xdelta 是制作二进制文件差分的好工具。有时候,我们的APK安装包特别大,在release时,如果每次都传一下很大的包的话,效率肯定不行,下面我这里推荐一个工具,来生成二进制的差分文件,那就是——xdelta。在Ubuntu场合下:1,安装 $sudo apt-get install xdelta2,制作差分文件$ xdelta delta (Sorce file)
2013-06-20 15:48:30 6014 1
原创 如何画各种“图”?
我们在写文档过程中,多多少少都会画一些图来说明程序的功能,这篇文章就来说明一些常用的"图"怎么画。1,画图工具常用的有这么几种Visio:这是很常用的,基本上的图都可以用这个来画。StarUML:这个是一个专用来画UML的图,效果也还可以,我用得比较少。画图板:如果你用画图板也一样能画出效果不错的图,神人也,值得膜拜,不过,这个东西很低效,不推荐。2,类图关于类图的详细信息
2013-06-20 15:40:56 7689
原创 设计UI的基本思路
我们在设计UI时,通常是有一些步骤与原则,下面列出了一些常用的,可能也不是很准确,希望抛砖引玉,让大家对UI设计有一个思路,这里一定要有一个意识,在拿到一个UI设计图的时候,不要马上就想到要怎么怎么实现,而是需要细心分析与设计。1,明确划分与UI相关和与UI无关的部分根据UI的设计图,我们首先要把界面展现的数据先抽出去,只看UI的表现。也就是说,把UI相关的部分抽出来。比如一个界面可能需要
2013-06-19 17:08:52 5542 2
原创 方法与设计
本文主要是从《Java编程思想》上面总结出来的。方法论在你经历整个开发过程时,最重要的一点是:不要迷失。这很容易做到。大多数分析与设计方法论都试图去解决最大型的问题。但是请记住,多数工程并不属于这一范畴,我们通常只需要采取某种方法论所推荐的一个相对较小的子集就可以得到成功的分析与设计。但是某些类型的处理过程,无论它们怎样小或者怎样受限制,通常也都应该采用某种比直接开始编码要好得多的
2013-06-19 17:04:08 1926
原创 如何保持API的兼容
1,采用良好的设计思路在设计过程中,如果能按照下面的方式来进行设计,会让这个API生命更长久面向用例的设计,收集用户建议,把自己模拟成用户,保证API设计的易用和合理保证后续的需求可以通过扩展的形式完成第一版做尽量少的内容,由于新需求可以通过扩展的形式完成,因此尽量少做事情是抑制API设计错误的一个有效方案对外提供清晰的API和文档规范,避免用户错误的使用API,尤其是避免API(见第
2013-06-19 16:43:05 3657
原创 设计模式原则
原则,故名思议则是本质的意思。所谓擒贼先擒王,研究设计模式自然要先了解设计原则, 所有的模式都是在这些原则的基础之上发展起来的,有的是侧重一个,有的是多个都有所涉及。看完设计模式之后,我感觉到每个模式都有这些原则的影子,还渗透 着面向对象的三大属性,也觉得这些原则也都有相通之处,,正是有了他们才使我们由代码工人转为艺术家。下面我来点评一下六大原则,望各位拍砖:1、单一职责原则(Single R
2013-06-19 16:40:28 1698
原创 高绩效团队的建设与管理
北京影响力企业管理有限公司 《高绩效团队的建设与管理》课后心得结合自身团队的状况,我们应该怎么做? 思维:水平思维目的:知行合一心态:自信什么垂直思维什么水平思维什么知行合一1,团队概述------从合力到分力组织与团队的区别好团队的特征积极主动相互协作责任第一竞合共赢是成功团队的习惯2,团队的思想建设------意识决定行动 思想建
2013-06-19 16:38:01 3000
原创 Java中的四种引用
Java中存在四种引用,它们分别是:1. 强引用(StrongReference) 强引用是使用最普遍的引用。如果一个对象具有强引用,那垃圾回收器绝不会回收它。当内存空间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终止,也不会靠随意回收具有强引用的对象来解决内存不足的问题。2. 软引用(SoftReference)如果一个对象只具有软引用,则
2013-06-19 16:34:51 1883 1
原创 XML转义字符
大家关于XML的标准,可以参考W3C的标准文档,或者维基百科。写了个request2XML的方法,每当数据中有'在XML文档中的所有文本都会被解析器解析。只有在CDATA部件之内的文本会被解析器忽略。1,解析数据XML 解析器通常情况下会处理XML文档中的所有文本。当XML元素被解析的时候,XML元素内部的文本也会被解析:This text is also pars
2013-06-19 16:10:41 4231
原创 Android XML解析器的问题
最近在项目中遇到了一个解析XML的问题,我们是用android自带的DOM解析器来解析XML的,但发现了一个android的问题,那就是在2.3的SDK上面,无法解析像, 等字符串。尽管我们从服务器端返回的数据中,应该是不能包含这样的字符,应该使用转义,但有时候,由于历史原因,导致服务器端不能作这样的修正,所以这样的问只能是在客户端来解决了。下面我就说一说我们是如何解决这种问的。1,现象
2013-06-19 15:56:21 2115
原创 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 31916 16
原创 Android 异步链式调用设计
本文讨论一下异步链式调用的设计与实现。考虑如下情况:情况1:访问网络(或其他耗时的事情)。通常的做法是:1、显示一个ProgressDialog对话框,提示用户。2、启动工作线程来执行耗时操作。3、发送消息到关联到主线程的Handler里面,关闭对话框。情况2:从网络下载一个zip文件,下载完成之后,询问用户是否执行解压操作。通常的合理做法:1、显示一个Pr
2013-06-19 12:35:12 6656 14
原创 Android debug.keystore的密码
在Eclipse里面编译生成的APK中有一个签名的,它默认的key是debug.keystore,它默认的路径是:C:\Users\\.android\debug.keystore这个key的密码是:android ================================================================我们可以输入如下命令来查看其
2013-06-19 12:17:18 76369 3
原创 Android 中的消息循环简介
这里有三个很重要的概念:1,Looper默认的工作线程是没有与之关联的消息循环,可以通过Looper类来运行消息循环。进入消息循环后,该消息循环会一直处理消息,直接退出消息循环。调用Looper.prepare()方法来创建消息循环,调用Looper.loop()方法来开始消息循环。下面代码示例了如何实现一个带有消息循环的线程类,这个线程类关联了一个Handler。
2013-06-19 12:13:25 3690 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 6881 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 2465
原创 Android 吸入动画效果详解
1,背景吸入(Inhale)效果,最初我是在iOS上面看到的,它是在Note程序中,用户可能添加了一页记录,在做删除时,它的删除效果是:这一页内容吸入到一个垃圾框的图标里面。请看下图所示:===============================================================================这里,我要介绍
2013-06-19 11:50:12 23911 27
原创 Android ListView那些事
ListView是我们在开发Android程序时用得比较多的一种widget,通常用来展示多条数据,这里,我对ListView的一些功能点作一个简单介绍。1. Cache color hint默认情况下,Android中的View的背景都是透明的,这是一个合理的设计,但是,当渲染到屏幕上时,这会引入许多的计算,因为所有的child的背景是透明的,这就意味着当ListView绘制它的chil
2013-03-05 12:40:46 5284 3
原创 Java Thread 总结
这篇文章的主要内容来自于网络,由我来整理,姑且算是原创吧,但是对于内容的提供者,在此表示感谢。1.线程概述线程是一个程序的多个执行路径,执行调度的单元,依托于进程的存在。线不仅可以共享进程的内在,而且还拥有一个属于自己的内存空间,这段内存空间就是线程栈,是在建立线程时系统分配的,主要用来保存线内部所使用的数据,如线程执行函数中所定义的变量,线程的状态等信息。Java中的多线程是一个抢占
2013-02-28 19:18:44 12146
原创 Windows文件检索之——查询范围
对于检索范围来说,也是比较简单的,根据第一节,我们知道,ISearcherFolderFactory提供了一个方法SetScope,就是让用户传一个IShellItemArray的指针进去。所以,我们主要的工作就是如何来创建IShellItemArray接口指针。1.如何创建IShellItemArrayShell API提供了一个方法,SHCreateShellItemArrayFrom
2013-02-26 13:51:41 3056 1
原创 Windows文件检索之——查询条件
这一节讲如何实现查询条件。我们把查询条件封装成了一个类,SdkQueryCondition,它的本质是对ICondition这个COM接口进行的封装。1.SdkQueryCondition接口下面列出SdkQueryCondition类的公共接口。HRESULT GetCondition(ICondition **ppc);HRESULT SetCondition(LPCWS
2013-02-26 13:46:09 2051
原创 Windows文件检索之——接口设计
这一节我们讲文件检索,主要讲一讲它用到了哪些COM接口和Shell相关知识。这里,我们重点讲一讲它的本质,至于如何利用设计模式的东西去包装,用没用线程等,这里就不用讲了。我们需要的是关注本质。其实对于熟悉Shell的人来说,Search这一部分是比较简单的。我们很幸运,由于之前做的一个项目是仅仅是运行在Windows 7之上的,所以我们这个检索模块可以不用支持Windows 7以下的OS,
2013-02-26 13:29:21 2417 1
原创 C#基本图像处理
最近没事,有网上看到一篇关于图像处理的文章,觉得很好,结合它上面的原理,自己写了一个C#图像处理的例子。这个DEMO的界面的有两个PictrueBox控件,用来显示图片,一个是源图片,一个是经过转换的目标图片,UI下面部分有一些按钮,每个按钮实现一个转换功能。这个DEMO允许用户拖一张图片到源PictureBox中,然后通过这些功能按钮实现图片的效果转换。这些功能有把图片变成黑白、底片、浮雕、锐化
2013-02-26 12:33:58 18484 2
原创 x86程序读取64位系统注册表失败解决方案
在做一个项目时,遇到了这么一种情况,在64位操作系统下(WOW),运行一个x86的应用程序,这个程序会读取注册表项目,读取注册表的代码是一样的,只要不交叉访问就是正确的(32位程序运行在x86平台,64位程序运行在x64平台),最后进行了一番调试,才搞明白失败的原因。 导致原因是这样的,32位与64位两个操作系统版本上的注册表的结构是不一样的,有些键是可以共享的,而有些键是不可以共享
2013-02-26 12:25:28 7689
原创 关于AlphaBlend函数使用时遇到的问题
AlphaBlend函数在使用时,要注意以下几点:1,源图片的宽高只能小于等于实际图片(选入到hMemDC的HBITMAP)的宽高,不然的话就绘制不出来。比如说,实际的HBITMAP的大小是 256 * 256 的,那么你的宽高不能超过 256,不然就绘制不出来。2,源的left和top与源的width和height相加的值也应当要小于等于源图片的宽高。也就是说,如果源top是
2013-02-26 12:22:18 1598
原创 Win32遍历指定路径下的文件(Shell实现)
其实有很多种方法实现遍历指定路径下的文件,最普通的可能就是用FindFirstFile、FindNextFile等API来实现,这种实现方法也可以,但是,如果文件夹时里面有子文件夹的话,用这个方法实现起来就有点麻烦,可能要用递归,而递归这种方式效率是个很大的问题,在这不打算讲这种方法,下面要说的是另一种方式------Windows Shell。 其实用Shell来实现,思路很简
2013-02-26 12:21:19 2441
原创 打开文件夹,并同时选中指定文件
如何用程序打开一个文件,并选中这个文件夹中指定的文件呢?其实这个功能用得很多。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 6547 1
原创 Windows获取所有视频文件的扩展名
有时候,我们想得到当前电脑上面视频类型文件的扩展名,(事实上,不光是视频类型的,还有音乐类型,文档类型的文件的扩展名),我们要怎么实现呢?其实这些信息都是存放在注册表中,包括每种类型的文件的属性选项都是存放在注册表中。下面讲一下如何得到视频类型的文件扩展名(同理也可以得到其实类型的)。 注册表路径: HKEY_LOCAL_MACHINE\\Software\\Micro
2013-02-26 12:16:21 3276
Android 画图板
2013-11-23
Android WheelView Demo源码
2013-11-01
Android下拉刷新框架源码
2013-10-13
PullToRefreshDemo
2013-10-13
WebViewBugDemo
2013-09-30
Image Cache v2.0
2012-10-26
Gallery 3D效果
2012-10-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人