无业游民

千里之行始于足下

导航

2013年4月18日

Objective-C动态特性

摘要: 1. 动态类型,自不必多说,我们通常所定义的id类型即为动态类型,任何对象队可以被id指针所指,只有到运行时再将相应的id类型转换为静态类型,才可以调用静态类型所对应的方法。2. 动态绑定,能使程序直到执行时才确定对应对象调用的实际方法。 这里面有一个关键的IMP类型,这个是对应实现方法在内存中的地址(Implementation缩写)。动态绑定我们需要把objc/runtime.h加到源文件中。#import <objc/runtime.h>Objetive-C中的Method结构 struct objc_method{ SEL method_name;//方法名 ... 阅读全文

posted @ 2013-04-18 18:05 PeterHuang 阅读(1698) 评论(0) 推荐(1) 编辑

2013年3月20日

iOS学习笔记之QuartzCore框架

摘要: iOS设备给用户视觉反馈其实都是通过QuartzCore框架来进行的,说白了,所有用户最终看到的显示界面都是图层合成的结果,而图层即是QuartzCore中的CALayer。 通常我们所说的视图即UIView,并不是直接显示在屏幕上,而是在创建视图对象的时候视图对象会自动创建一个层,而视图对象把要显示的东西绘制在层上,待到需要显示时硬件将所有的层拷贝,然后按Z轴的高低合成最终的显示结果。 CALayer本质上是一块包含一幅位图的缓冲区,由视图创建的层为隐式层,而手动创建的层称为显示层。 如果要在iOS上能够有良好的用户体验,动画的过渡效果是必不可少的,而所有的动画效果都是通过CAAn... 阅读全文

posted @ 2013-03-20 23:43 PeterHuang 阅读(9082) 评论(1) 推荐(2) 编辑

2013年3月19日

iOS学习笔记之CoreGraphics框架

摘要: 很多时候,当你需要设计更高级的UI或者是减少设计师的工作量的时候,我们就需要用代码自行绘制UI,而自行绘制UI就需要用到CoreGraphics这个框架(OpenGL更高阶,目前还没达到这个水准)。 CGContext类,相当于Android里面的Canvas,使用UIGraphicsGetCurrentContext()获取当前CGContext的引用CGContextRef。我们在每一次的绘制之前都应该保存下原来的状态,待绘制完成后再恢复回原来的状态。所以CGContextSaveGState(ctx);… CGContextRestoreGState(ctx);都应该成对的出现,在... 阅读全文

posted @ 2013-03-19 18:21 PeterHuang 阅读(2633) 评论(0) 推荐(2) 编辑

iOS的touchEvent的消费过程

摘要: 在iOS系统中,一共有三种类型的Event, 分别是touch events, motion events和remote-control events。touch events是用户触摸屏幕时触发的事件,motion events是用户移动设备时触发的事件,remote-control events是用户通过配件触发的事件(如耳机等线控或锁频时线控等)。我们用的最多,交互最多的当然就是touch ... 阅读全文

posted @ 2013-03-19 00:00 PeterHuang 阅读(1273) 评论(0) 推荐(3) 编辑

2013年3月18日

Android的touchEvent的消费过程

摘要: 现在的移动设备,最最主流的交互方式就是手指触摸屏幕了啦,当然语音输入,传感器识别也是移动终端上常用的交互方式。要想写好移动端的程序,了解操作系统如何处理触摸事件的整个过程是至关重要的。大家都知道ViewGroup类是继承View类的,也就是说ViewGroup其实也是一个View,但ViewGroup的主要功能当然是作为一个容器,可以装载其它的View。写应用层程序,大多数时候我们只关心我们的View是如何来处理一个TouchEvent的就行了,当然要深入了解操作系统的触摸事件消息读取队列对于提升我们的编程境界会更有帮助(目前我是没有这个境界的)。先来说说我们的应用程序布局,大多数情况下根节点 阅读全文

posted @ 2013-03-18 14:44 PeterHuang 阅读(1492) 评论(1) 推荐(2) 编辑

查词系统的设计

摘要: 假如你现在正在做一款词典软件,你手头拥有的资源只有从一个大数据库里面导出来的词条,你需要怎样组织这些词条,才能做到你所设计的查词软件即能够内置词库,又能够扩展词库,用户每次输入时都需要有下拉提示,并且在数据量很大的情况下查询速度不能太慢呢?一个比较笨拙的方法当然就是,把所有词条放到一个数据库里面,每次用户查词的时候,使用”select * from wordtable where word like ?”查询,当数据量很小的时候是能够满足需求的,但是当数据量大到一定程度以后,查询的速度会越来越慢,这种方法的时间复杂度是为O(n)的。当时我做第一版的时候,就是用如上的方法做的,作为新手,也不管那 阅读全文

posted @ 2013-03-18 02:22 PeterHuang 阅读(431) 评论(0) 推荐(0) 编辑

2012年7月14日

Android多渠道打包工具

摘要: 鉴于Android市场众多,基于各种利益考虑,以及未来app能够更有针对性的投放市场,肯定是要监测每个渠道的数据的。如果通过eclipse每次修改下渠道名,然后再导出包,如果有十多个渠道要分发,那就得打十多个包,这无疑是很费力的,程序员的精力不应该过多的耗费在这些琐碎重复的事情上。这些琐碎重复的事情能用机器来做最好就让机器来做。我是一个比较懒的人,不乐意做琐碎重复的事情。几个月前,在网上找了好久,也没发现有能够进行批量多渠道打包的工具,就想着琢磨自己写一个。以前在外包公司做测试的时候学过一些批处理命令和perl脚本,不过忘得差不多了,但是网上搜了下立马就能回忆起怎么用。经过了三四个晚上的奋战, 阅读全文

posted @ 2012-07-14 12:33 PeterHuang 阅读(13220) 评论(18) 推荐(3) 编辑

2012年5月1日

命令行编译android程序,欢迎探讨命令行如何使用proguard混淆优化代码

摘要: 以下是本人写的一个打包Android apk的批处理程序,实在不晓得应该在哪一步、以及如何添加proguard来混淆及优化代码。网上查了下,proguard混淆优化普通的java程序是在生成了jar以后,然后通过命令:java -jar proguard.jar @config,@config是配置文件,会根据配置文件生成混淆优化后的jar.但是Android 项目并没有生成jar包,只是在生成了.class字节码文件以后通过dx工具打包成了一个.dex文件,而且我看了proguardgui程序,里面一共就支持jar,war,ear,zip等文件格式,我该如何使用proguard呢?或者还有更 阅读全文

posted @ 2012-05-01 03:24 PeterHuang 阅读(2370) 评论(1) 推荐(1) 编辑

2011年11月16日

不要忽视ViewFlipper

摘要: 当我们需要实现多标签页程序的时候,相信很多人首先会想到用TabActivity来解决。没错,TabActivity就是用来解决多标签程序的。但其实,我们真的有必要一定要用TabActivity来解决吗?尤其是当多标签页程序里面嵌套的子Activity又是多标签的时候。这里我要介绍的是我比较钟爱的ViewFlipper。实现多标签页程序的时候,通常都会使用TabHost,然后把TabWidget的visibility属性设置为gone(很多人都觉得原生的tab太丑,且现在大多数的UI都在模仿iPhone上面的UI,tab放在底部),而TabWidget的功能则用RadioGroup来实现。用Ta 阅读全文

posted @ 2011-11-16 22:36 PeterHuang 阅读(2614) 评论(3) 推荐(1) 编辑

2011年11月15日

关于布局的一些使用想法

摘要: 布局这一块,我想使用最多的就是LinearLayout线性布局以及RelativeLayout相对布局了。AbsoluteLayout绝对布局很少用,我只是在初学的时候用了,而且还搞出笑话来了。老板布置的作业,我在我的G3上使用AbsoluteLayout布局,在我的手机上看上去很完美,谁知道面试的时候老板用的是G7,跑起来一看,整个UI都缩在左上角那一块了,老板还半开玩笑的说是不是我的审美有问题啊。LinearLayout布局适合于从左往右顺序排列,或者从上往下顺序排列。RelativeLayout则适用于左右固定,或者上下固定,中间可以扩充满整个布局。在使用LinearLayout的过程中 阅读全文

posted @ 2011-11-15 23:39 PeterHuang 阅读(2225) 评论(2) 推荐(1) 编辑