
Android
文章平均质量分 84
leehong2005
这个作者很懒,什么都没留下…
展开
-
Android 实现 WheelView
我们都知道,在iOS里面有一种控件------滚筒控件(Wheel View),这通常用于设置时间/日期,非常方便,但Android SDK并没有提供类似的控件。这里介绍一下如何Android实现WheelView。这是很通用的一个控件,而且提供了很灵活的API,现在分享给各位看官。原创 2013-02-28 20:51:52 · 65360 阅读 · 75 评论 -
Android java.lang.NoClassDefFoundError的一种解决方法
在开发过程中,遇到一个这样的问题:java.lang.NoClassDefFoundError: android.support.v4.util.SparseArrayCompat,这个问题很奇怪,JAR包也有了,编译也通过了。但就是运行时出现类找不到的问题。NoClassDefFoundError这种错误一般就是对应的类,没有被包含在对应的APK里面。是不是对应的android-support-原创 2013-07-22 12:06:16 · 67451 阅读 · 19 评论 -
Android ListView那些事
ListView是我们在开发Android程序时用得比较多的一种widget,通常用来展示多条数据,这里,我对ListView的一些功能点作一个简单介绍。1. Cache color hint默认情况下,Android中的View的背景都是透明的,这是一个合理的设计,但是,当渲染到屏幕上时,这会引入许多的计算,因为所有的child的背景是透明的,这就意味着当ListView绘制它的chil原创 2013-03-05 12:40:46 · 5306 阅读 · 3 评论 -
用xdelta来制作差分文件
xdelta 是制作二进制文件差分的好工具。有时候,我们的APK安装包特别大,在release时,如果每次都传一下很大的包的话,效率肯定不行,下面我这里推荐一个工具,来生成二进制的差分文件,那就是——xdelta。在Ubuntu场合下:1,安装 $sudo apt-get install xdelta2,制作差分文件$ xdelta delta (Sorce file)原创 2013-06-20 15:48:30 · 6177 阅读 · 1 评论 -
设计UI的基本思路
我们在设计UI时,通常是有一些步骤与原则,下面列出了一些常用的,可能也不是很准确,希望抛砖引玉,让大家对UI设计有一个思路,这里一定要有一个意识,在拿到一个UI设计图的时候,不要马上就想到要怎么怎么实现,而是需要细心分析与设计。1,明确划分与UI相关和与UI无关的部分根据UI的设计图,我们首先要把界面展现的数据先抽出去,只看UI的表现。也就是说,把UI相关的部分抽出来。比如一个界面可能需要原创 2013-06-19 17:08:52 · 5600 阅读 · 2 评论 -
如何保持API的兼容
1,采用良好的设计思路在设计过程中,如果能按照下面的方式来进行设计,会让这个API生命更长久面向用例的设计,收集用户建议,把自己模拟成用户,保证API设计的易用和合理保证后续的需求可以通过扩展的形式完成第一版做尽量少的内容,由于新需求可以通过扩展的形式完成,因此尽量少做事情是抑制API设计错误的一个有效方案对外提供清晰的API和文档规范,避免用户错误的使用API,尤其是避免API(见第原创 2013-06-19 16:43:05 · 3762 阅读 · 0 评论 -
Java中的四种引用
Java中存在四种引用,它们分别是:1. 强引用(StrongReference) 强引用是使用最普遍的引用。如果一个对象具有强引用,那垃圾回收器绝不会回收它。当内存空间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终止,也不会靠随意回收具有强引用的对象来解决内存不足的问题。2. 软引用(SoftReference)如果一个对象只具有软引用,则原创 2013-06-19 16:34:51 · 1908 阅读 · 1 评论 -
XML转义字符
大家关于XML的标准,可以参考W3C的标准文档,或者维基百科。写了个request2XML的方法,每当数据中有'在XML文档中的所有文本都会被解析器解析。只有在CDATA部件之内的文本会被解析器忽略。1,解析数据XML 解析器通常情况下会处理XML文档中的所有文本。当XML元素被解析的时候,XML元素内部的文本也会被解析:This text is also pars原创 2013-06-19 16:10:41 · 4260 阅读 · 0 评论 -
Android XML解析器的问题
最近在项目中遇到了一个解析XML的问题,我们是用android自带的DOM解析器来解析XML的,但发现了一个android的问题,那就是在2.3的SDK上面,无法解析像, 等字符串。尽管我们从服务器端返回的数据中,应该是不能包含这样的字符,应该使用转义,但有时候,由于历史原因,导致服务器端不能作这样的修正,所以这样的问只能是在客户端来解决了。下面我就说一说我们是如何解决这种问的。1,现象原创 2013-06-19 15:56:21 · 2156 阅读 · 0 评论 -
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 · 32011 阅读 · 16 评论 -
Android 从一次apk迁移窥看Android JellyBean(4.1)的变化
平台的版本的变化会引入新的特性,和对现有API的优化。对于Android 4.1 (JellyBean)的新特性请参考官方文档android-4.1,由于本文的重点不是对4.1新特性进行介绍,所以暂时省略这部分内容。众所周知对于已有项目的维护,有一项必不可少的工作就是对app进行平台版本的迁移工作,对于身处移动平台的Android更是如此。这期间会碰见许多"莫名其妙"的奇怪问题,下文会结合原创 2013-06-19 12:00:47 · 2506 阅读 · 0 评论 -
Android ListView不响应OnItemClickListener解决办法
有时候,当ListView中的每一个item是自定义的View时,有可能会导致ListView的OnItemClickListener的listener无法调用,请看如下情况:如果你的自定义ListViewItem中有Button或者Checkable的子类控件的话,那么默认focus是交给了子控件,而 ListView的Item能被选中的基础是它能获取Focus,也就是说我们可以通过将Lis原创 2013-06-21 16:39:28 · 22613 阅读 · 3 评论 -
Android 下拉刷新框架实现
一个通用的下拉刷新的框架介绍。前段时间项目中用到了下拉刷新功能,之前在网上也找到过类似的demo,但这些demo的质量参差不齐,用户体验也不好,接口设计也不行。最张没办法,终于忍不了了,自己就写了一个下拉刷新的框架,这个框架是一个通用的框架,效果和设计感觉都还不错,现在分享给各位看官。原创 2013-10-13 23:20:50 · 135996 阅读 · 220 评论 -
Anroid ListView分组和悬浮Header实现
之前在使用iOS时,看到过一种分组的View,每一组都有一个Header,在上下滑动的时候,会有一个悬浮的Header,这种体验觉得很不错,这种效果在Android是没有的,iOS的SDK就自带这种效果。这篇文章就介绍如何在Android实现这种效果。原创 2014-01-27 12:26:55 · 51103 阅读 · 18 评论 -
Android tcpdump抓包应用实现
Android应用很多时候都会涉及到网络,在请求网络出错时,我们可以通过抓包来分析网络请求,返回的数据等,通常我们是用tcpdump这个工具来抓包,再通过wireshark工具来分析生成的文件,关于tcpdump的使,可以从网上查一下,有很多介绍,比如:http://www.cnblogs.com/likwo/archive/2012/09/06/2673944.html。关于如何用wiresha原创 2014-03-05 13:27:36 · 11112 阅读 · 14 评论 -
Android 关于OOM的解决方案
在Android平台上面,应用程序OOM异常永远都是值得关注的问题。通常这一块也是程序这中的重点之一。这下我就如何解决OOM作一点简单的介绍。 首先,OOM就是内存溢出,即Out Of Memory。也就是说内存占有量超过了VM所分配的最大。 怎么解决OOM,通常OOM都发生在需要用到大量内存的情况下(创建或解析Bitmap,分配特大的数组等),在这样的一种情况下,就可能出现O原创 2012-10-10 15:21:42 · 73565 阅读 · 9 评论 -
强大的Doxygen工具使用手册
张三:假如我们自己开发了一个类库,怎么做一个方便阅读的文档呢?李四:一个方法一个方法地写呗,就像写Excel文档一下。张三:啊,你out了,这多慢呀。为什么不玩玩doxygen工具,它能帮你生成文档?李四:这么爽,什么东东,给说讲讲。1. Doxygen, what?Doxgen就是大名鼎鼎的文档生成工具,而且是免费开源的,它使用非常方便,能提取C++,Java,Obj原创 2013-06-20 16:13:32 · 21124 阅读 · 1 评论 -
Android ColorDrawable那些事
今天在开发过程中遇到一个很蛋痛的问题,最终发现是系统的问,值得总结一下。前提我在实现一个基于Adapter的LinearLayout的时候,想在第一个View中间绘制一个间隔线(Divider),接收一个Drawable对象,这是前提。在绘制间隔线的时候,我的代码是这样的: private void drawVerticalDividers(Canvas canvas) {原创 2014-01-16 14:42:13 · 21659 阅读 · 1 评论 -
Android WebView的Js对象注入漏洞解决方案
Android webview注入JS对象引发的安全漏洞,恶意的JS脚本可以读取到SDcard上面的任何文件,本文给出了这种漏洞的一种解决方案。原创 2013-09-30 11:01:16 · 85477 阅读 · 35 评论 -
Android 常用命令
要想通过命令行的形式使用Android命令,一般情况是把ADK 下面的tools目录的路径加入到环境变量中,如何设置环境变量,大家可以查阅相关资料,这里不用说明了。在这里列出一些常用的命令,聊以备忘。1,android命令如果直接在cmd里面输入android命令,就会把Android SDK and AVD Manager调出来,通过这个界面可以对已经存在的Virtual Devic原创 2013-02-25 12:18:34 · 1290 阅读 · 0 评论 -
Android 使用Ant编译Android 工程
如何编译Android 工程?关于如何编译Android 工程在这篇官方文档这里中解释的比较清楚, 太多的详细的解释我就不说了,RTFM。我需要说的是我们既可以让IDE替你完成编译的编译工作,也可以使用命令行的方式编译工程。什么? 命令行? 是不是太老土了? No! 我们总有情况是使得IDE不能完成编译工作。什么情况呢?在你的资源文件十分庞大的情况下,IDE 就罢工了,怎么原创 2013-06-21 16:49:09 · 5336 阅读 · 0 评论 -
Android debug.keystore的密码
在Eclipse里面编译生成的APK中有一个签名的,它默认的key是debug.keystore,它默认的路径是:C:\Users\\.android\debug.keystore这个key的密码是:android ================================================================我们可以输入如下命令来查看其原创 2013-06-19 12:17:18 · 76695 阅读 · 3 评论 -
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 · 6936 阅读 · 1 评论 -
Android gallery 3D效果
在看了iOS上面的CoverFlow后,感觉效果真的不错,就想在android上面实现一个,这个程序在网上参考了一此核心的代码,当然我添加了一些其他的东西,废话不多说,先看效果,不然就是无图无真相。 Demo下载地址:GalleryFlow其实实现这个效果很简单,下面作一个简单的介绍一,创建倒影效果这个基本思路是:1,创建一个源图一样的原创 2012-10-14 21:20:27 · 39793 阅读 · 31 评论 -
Activity启动过程
这篇文章就要想讲一讲Activity的启动过程,首先声明一点,关于Activity的启动过程,我研究得不是很深入,也是参考了网上有资料,然后看了一下Android底层的源码。我们都知道,要启动一个Activity是很容易的,Context#startActivity(Intent)就行了,这个Activity就显示出来了。但是它内部是如何调用这些Activity的生命周期函数的?如果创建Act原创 2012-10-10 14:47:02 · 6763 阅读 · 1 评论 -
Android Service的用法
最近研究了一个android的service,现在做一下总结。 其实要了解service,我建议不要去到网上看,因为什么呢。网上好多的写的东西都是你抄我,我抄你,都差不多。我建议直接看android的官方文档,只要仔细看了,差不多都能理解,而且官方文档上面还有一些sample。下面我们来一起总结,我打算从以下几个方面来介绍service。1、什么是Service2、S原创 2012-03-13 13:49:19 · 8500 阅读 · 0 评论 -
Android工程Debug证书过期解决方案
一,问题概述:在导入一个app甚至新建一个app提示如下错误:Error generating final archive: Debug certificate expired on 11-1-01下午12:57! Unknown Android Packaging Problem二,原因分析:android 要求所有的程序必须有签名,否则就不会安装该程序。在我们开发过程中,原创 2012-03-03 16:24:24 · 2445 阅读 · 0 评论 -
Android XML解析器的问题
最近在项目中遇到了一个解析XML的问题,我们是用android自带的DOM解析器来解析XML的,但发现了一个android的问题,那就是在2.3的SDK上面,无法解析像, 等字符串。一,问题现象我们解析的代码是:DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilde原创 2012-03-01 18:22:08 · 2188 阅读 · 1 评论 -
Android中的绘制机制
我们知道,其实Android系统的绘制几乎都是在底层完成(调用Native的方法,可参考Canvas类),这里,我主要是想讲一讲我对于Android在framework这一层的绘制机制。不会涉及到太多底层的东西,这一块目前我也没做过多深入的研究。一,View如何绘制View#draw方法,提供了一个最基本的绘制机制,子类通常不需要重写这个方法。我们可以通过查看其源码,在View的draw里原创 2012-03-01 18:23:41 · 12191 阅读 · 6 评论 -
ViewGroup为什么不会调用onDraw
正常情况下,我们重写LinearLayout的onDraw方法,它是不会被调用的,这篇文章就来分析一下原因和解决方法。 一,现象 android:id="@+id/ll_absolute" android:orientation="vertical" android:layout_width="fill_parent" android:layou原创 2012-03-01 18:23:24 · 25662 阅读 · 13 评论 -
Android 中的防锯齿
在Android中,目前,我知道有两种出现锯齿的情况。 1)当我们用Canvas绘制位图的时候,如果对位图进行了选择,则位图会出现锯齿。 2)在用View的RotateAnimation做动画时候,如果View当中包含有大量的图形,也会出现锯齿。 我们分别以这两种情况加以考虑。一,用Canvas绘制位的的情况。 在用Canv原创 2012-03-01 18:21:49 · 4387 阅读 · 2 评论 -
自定义ProgressBar的Spinner图片
很久没有更新博客了,前一段时间实在是太忙了,经过一段时间,又有不少新的收获。今天我总结一下实现自定义ProgressBar的Spinner图片,其实这个功能很简单的,只是觉得有时候想要快速实现这种需求时,还不一定能马上做出来,今天就记在这里,算是一个笔记吧。ProgressBar它提供了void setIndeterminateDrawable(Drawabled)方法来设置Spinner原创 2012-03-01 18:21:21 · 4711 阅读 · 0 评论 -
Android 程序框架设计
这篇文章主要内容来自于之前我讲的一个PPT文档,现在将其整理如下。欢迎指正。以下的内容都是来自于我自身的经验,欢迎大家多提自己的建议。1、一些概念模式的定义:每个模式都描述了一个在我们的环境中不断出现的问题,然后描述了该问题的解决方案的核心。通过这种方式,你可以无数次地使用那些已有的解决方案,无需在重复相同的工作。什么是设计模式?设计模式是在某种特别的情况下,针对某种问原创 2013-01-23 18:33:25 · 48184 阅读 · 42 评论 -
Java创建GUID
GUID是一个128位长的数字,一般用16进制表示。算法的核心思想是结合机器的网卡、当地时间、一个随即数来生成GUID。从理论上讲,如果一台机器每秒产生10000000个GUID,则可以保证(概率意义上)3240年不重复。实现代码如下:public class GuidCreatorUtil{ /** * The value before MD5 */原创 2013-02-25 12:13:24 · 4294 阅读 · 0 评论 -
Android onTouchEvent, onClick及onLongClick的调用
针对屏幕上的一个View控件,Android如何区分应当触发onTouchEvent,还是onClick,亦或是onLongClick事件?在Android中,一次用户操作可以被不同的View按次序分别处理,并将完全响应了用户一次UI操作称之为消费了该事件(consume),那么Android是按什么次序将事件传递的呢?又在什么情况下判定为消费了该事件?搞清楚这些问题对于编写出能正原创 2013-02-25 12:08:55 · 1075 阅读 · 0 评论 -
Android 中的消息循环简介
这里有三个很重要的概念:1,Looper默认的工作线程是没有与之关联的消息循环,可以通过Looper类来运行消息循环。进入消息循环后,该消息循环会一直处理消息,直接退出消息循环。调用Looper.prepare()方法来创建消息循环,调用Looper.loop()方法来开始消息循环。下面代码示例了如何实现一个带有消息循环的线程类,这个线程类关联了一个Handler。原创 2013-06-19 12:13:25 · 3727 阅读 · 1 评论 -
Android 吸入动画效果详解
1,背景吸入(Inhale)效果,最初我是在iOS上面看到的,它是在Note程序中,用户可能添加了一页记录,在做删除时,它的删除效果是:这一页内容吸入到一个垃圾框的图标里面。请看下图所示:===============================================================================这里,我要介绍原创 2013-06-19 11:50:12 · 24039 阅读 · 27 评论 -
Android 3D旋转动画效果
这篇文章主要介绍一下如何实现View的3D旋转效果,实现的主要原理就是围绕Y轴旋转,同时在Z轴方面上有一个深入的缩放。演示的demo主要有以下几个重点:1,自定义旋转动画2,动画做完后,重置ImageView先看一下程序的运行效果:1,自定义动画类这里实现了一个Rotate3dAnimation的类,它扩展了Animation类,重写applyTra原创 2013-06-19 10:35:39 · 23548 阅读 · 3 评论 -
Android 异步链式调用设计
本文讨论一下异步链式调用的设计与实现。考虑如下情况:情况1:访问网络(或其他耗时的事情)。通常的做法是:1、显示一个ProgressDialog对话框,提示用户。2、启动工作线程来执行耗时操作。3、发送消息到关联到主线程的Handler里面,关闭对话框。情况2:从网络下载一个zip文件,下载完成之后,询问用户是否执行解压操作。通常的合理做法:1、显示一个Pr原创 2013-06-19 12:35:12 · 6722 阅读 · 14 评论 -
Android 画图板程序实例(SketchPad)
最近没什么事情,写过一个画图板的DEMO(sketchpad),发出来与大家分享。功能说明:1、能画线(Pen),能擦除(Eraser),清除(Clear)。2、Undo,Redo功能。3、保存,加载笔迹(Stroke)。4、画笔颜色。5、画板背景色。6、画笔,橡皮大小。7、选择画景图片。如何需要source,请与我联系:leehong2005@163.co原创 2012-03-08 23:35:01 · 12771 阅读 · 73 评论