自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(19)
  • 资源 (4)
  • 收藏
  • 关注

原创 cocos2d-x实现node圆弧运动

最近在用cocos2d-x做鱼在水池里游动,直线游动比较容易实现,但是要使鱼转弯,绕着圆弧游动就有点难度了,不仅鱼的位置是圆的轨迹点,它的方向也要跟着相应变化,并且要准确控制它是顺时针转还是逆时针。搞了大半天,不断试验不断修改,终于把它封装成一个CCArcBy的action, 以后可以直接拿来用了。 CCArcBy的初始化方法是bool initWithDuration(ccTime

2011-12-15 17:53:40 2525 8

原创 cocos2d-x和objective-c的内存管理

最近在公司做一个掌上青蛙的游戏项目,是采用c++写的cocos2d-x开发的,它是iPhone上cocos2d框架另一个语言版本的实现,最大的优势是能实现跨平台运行,通过简单的修改就可以在android和iPhone上跑了。    因为功能和接口和objective-c版

2011-10-16 22:00:14 3343 1

原创 关于Android的ClassLoader探索

最近突发奇想,想做一个插件框架,就是实现一个微内核,所有扩展功能都通过下载插件加载的方式来实现,原理跟现在用的eclipse差不多。要做到这些动态加载类少不了,就是内核上事先定义好接口,通过网络或其他方式下载的插件要实现这些接口,只要定义好规则,系统就可以使用这些插件了。

2011-08-31 18:46:23 15904 13

原创 对AttributeSet和defStyle的理解

<br />    在通过xml文件构造view组件的时候,往往都要使用到AttributeSet和defStyle这个两个参数,例如Button组件的构造方法Button(Context ctx, AttributeSet attrs, int defStyle)中,ctx会调用obtainStyledAttributes( AttributeSet set, int[] attrs, int defStyleAttr, int defStyleRes)方法获得一个TypedArray

2010-09-28 16:26:00 12602

原创 初步认识view组件焦点切换原理

<br />     这段时间因为自己要实现一套组件焦点切换机制,今天认真研究了一下Android的view组件是如何切换焦点的。Android'view组件的切换的接口是focusSearch(View focused, int direction), 它是通过FocusFinder这个类来实现的,也就是把整个view切换逻辑都搬到了这个类里,这是个好主要,不至于让view过分臃肿(虽然已经很庞大了...)。FocusFinder会首先会通过view的getFocusables(int direction

2010-09-10 16:41:00 5204 1

原创 定义Window进入和退出效果

<br />    看了android的源代码和资源文件,终于明白如何去修改设置Dialog和Activity的进入和退出效果了。设置Dialog首先通过getWindow()方法获取它的窗口,然后通过getAttributes()方法获得window的WindowManager.LayoutParams lp, lp有个公共属性windowAnimations, 只要把要实现的animation的id赋值给它就可以了。问题是这个animation应该怎么写呢,研究发现,窗口进入和退出的效果分别是通过@an

2010-09-06 17:29:00 7597 9

原创 对Canvas和Matrix的理解(2)

<br />    今天终于切切实实弄明白matrix那几个方法的使用了,比如preTranslate, setTranslate, postTranslate这些。以前对它们都是一知半解,以为这几个方法没什么区别,其实还是有很大不同的,最紧要是这几个方法的调用顺序对坐标变换的影响。抽象的说pre方法是向前"生长", post方法是向后"生长",具体拿个例子来说,比如一个matrix调用了下列一系列的方法:<br />     matrix.preScale(0.5f, 1);  matrix.preTra

2010-09-04 15:57:00 8729 4

原创 对View的onMeasure方法理解

<br />   我们知道View在屏幕上显示出来要先经过measure和layout. 在调用onMeasure(int widthSpec, int heightSpec)方法时,要涉及到MeasureSpec的使用,MeasureSpec有3种模式分别是UNSPECIFIED, EXACTLY和AT_MOST, 那么这些模式和我们平时设置的layout参数fill_parent, wrap_content有什么关系呢。经过代码测试就知道,当我们设置width或height为fill_parent时,容

2010-08-28 18:34:00 9049 5

原创 对window和view显示的理解

    很多时候都搞不清window和view之间的关系,今天重新看了一下api和源代码,终于又有多点认识了。其实window没有继承其他类,它是object的直接子类,这和iPhone中window和view的关系不同。window是抽象类,由系统内部实现,我们通常实例化不了。window其实是对view的包装,提供更多的特性,比如标题、进度条等,可通过requestFeature(int id)方法进行设置。    每个activity都包含一个window, 它的内部实现是PhoneWindow, 要

2010-08-26 14:39:00 2020

原创 对View DrawingCache的理解

<br />    View组件显示的内容可以通过cache机制保存为bitmap, 使用到的api有<br />    void  setDrawingCacheEnabled(boolean flag), <br />    Bitmap  getDrawingCache(boolean autoScale), <br />    void  buildDrawingCache(boolean autoScale), <br />    void  destroyDrawingCache()<br />

2010-08-25 15:37:00 13443 2

原创 对ViewGroup touch事件响应的理解

<br />   ViewGroup在接收到touch事件时,通过dispatchTouchEvent(MotionEvent event)把事件分发到子view里. touch事件的起始动作是ACTION_DOWN, viewgroup会调用onInterceptTouchEvent(MotionEvent ev)方法,若返回false才会正式分发事件到子view中,子view也调用dispatchTouchEvent方法,若返回true证明它消费了这个事件, viewgroup会把mMotionTarg

2010-08-17 20:41:00 1685

原创 对Canvas和Matrix的理解

<br />    我们看到的View视图其实最终都是在Canvas这个画板上画出来的,可以想象这个canvas有无限大,只是View组件在绘制时,即父组件调用dispatchDraw(Canvas c)分发给各个子组件绘制时,根据子组件的大小和位置,分别调用canvas的translate(int dx, int dy)和clipRect(int l, int t, int r, int b)方法来设置canvas的当前原点坐标和绘制的可见范围。所以当我们在view组件通过onDraw(Canvas c)

2010-08-06 00:14:00 1900

原创 对View组件touch事件响应的理解

    Android响应View组件的touch事件通常是采用重写onTouch(MotionEvent event)方法,或者是setOnTouchListener()设置listener.View组件的touch事件的响应是通过调用dispatchTouchEvent(MotionEvent event)方法分发的,当touch listener为null或者它返回的结果是false时,就调用onTouch()方法,所以touch listener的优先级要比onTouch()方法的高。当onTouc

2010-08-05 13:08:00 2531

原创 对View组件布局和绘制过程, 以及Drawable绘制的理解

<br />    Android的view组件显示主要经过mesure, layout和draw这三个过程。在mesure阶段里调用mesure(int widthSpec, int heightSpec)方法,这个方法是final不能被重写,在这个过程里会调用onMesure(int widthSpec, int heightSpec)方法。当组件设置好大小后,调用final layout(int l, int t, int r, int b)方法进行布局,在这个过程里会调用onLayout(boole

2010-08-05 12:25:00 6947 3

转载 Android 任务、进程和线程

<br /><br />    关于Android中的组件和应用,之前涉及,大都是静态的概念。而当一个应用运行起来,就难免会需要 关心进程、线程这样的概念。在Android中,组件的动态运行,有一个最与众不同的概念,就是Task,翻译成任务,应该还是比较顺理成章的。<br />Task的介入,最主要的作用,是将组件之间的连接,从进程概念的细节中剥离出来,可以以一种不同模型的东西进行配置,在很多时候,能够简化上层开发人员 的理解难度,帮助大家更好的进行开发和配置。<br /><br />任务<br />   

2010-06-23 18:11:00 1175

原创 对Android进程优先级和Service的理解

<br />     刚才又看了android的官方文档,对它的进程优先级和service理解得更多了。android为了管理内存释放有限的空间,会根据优先级杀掉一些进程,进程优先级越低的优先被清除。从高到低依次为:<br />     1. foreground process<br />     2. visible process<br />     3. service process<br />     4.  background process<br />     5. empty proce

2010-06-23 17:53:00 4131 1

原创 ui组件的接口回调

   最近在做android平台的购彩软件,今天对ui事件实现有点体会,就是应该尽量使用接口监听回调机制,其实android上许多组件都有这方面的接口,当自己定制组件的时候也可以参照这种模式,至于接口的注册可以在XML上声明实现,这样可以有效减少代码量。还有要善于利用XML布局和自定义属性,组件的生成尽可能用XML方式声明,特别是对于那些要设置复杂属性的组件。

2010-04-28 18:13:00 517

原创 Hashtable,HashMap实现原理

    昨天看了算法导论对散列表的介绍,今天看了一下Hashtable, HashMap这两个类的源代码,并参考了网上的一些观点,对它们的实现有了大概的理解。原来hashtable里的key-value还是用数组存储的,数组元素是Entry类型,同一数组索引下储存的实质是一个Entry链表,Entry中的next值指向下一个Entry.当把key-value放进hashtable时,会根据key的

2010-01-27 09:50:00 2127

原创 对Java Enum的理解

1.用enum定义的类型是Enum类的子类,默认为final,可以有属性和方法,但要首先指明它可以表示的一系列的枚举值实例,默认为public static final;2.用enum定义的类型可以独立为一个文件进行编译运行,可以拥有main方法,是一个特殊的类;3.当创建枚举类型实例时,会依次调用定义的各个枚举值构造方法,构造方法不能声明为public或protected;4.可以为每个枚举值的

2008-12-09 12:32:00 448

Java Persistence with Hibernate

Hibernate的官方指定用书,2007版,作者CHRISTIAN BAUER AND GAVIN KING

2010-01-05

Pro Android 2009

学习Android的经典好书,涵盖1.5平台,2009年最新出版, 内容详实丰富,PDF文档相当清晰,比国内教材好多了!

2009-12-18

Pro JSP 4th

学习JSP,Servlet的经典好书, 内容详实丰富,PDF文档相当清晰!

2009-12-18

空空如也

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

TA关注的人

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