置顶随笔

[置顶]android4.0.3 修改启动动画和开机声音

摘要: 1. Linux 系统启动,出现Linux小企鹅画面(reboot)(Android 1.5及以上版本已经取消加载图片);2. Android平台启动初始化,出现"A N D R I O D"文字字样画面;3. Android平台图形系统启动,出现含闪动的ANDROID字样的动画图片(start)。现在我们说的是第三种方式(基于模拟器):android开机动画叫源码位于frameworks/base/cmds/bootanimation下,这个程序会将/data/local/bootanimation.zip或/system/media/bootanimation.zip里阅读全文

posted @ 2012-03-07 18:05 C'est la vie 阅读(1869) 评论(2) 编辑

[置顶]android 4.0.3最新源码下载编译

摘要: 最新的android4.0源代码公布以后,相信很多人和我一样都跃跃欲试,其实4.0的代码下载和编译和以前的版本差不多,但是有一些小的差别,写下来供不明真相的新手来参考首先,开发环境,google建议在ubuntu10.0.4下,并且最好是64位,既然是为了工作和学习,就尽量按照官方要求的来吧。Python 2.5 -- 2.7 ubuntu10.0.4已经默认安装了,所以不需要安装,其他环境需要安装JDK 6 编译4.0需要jdk 6 ,sdk的编译需要jdk 5Git 1.7 or newer如果你的ubuntu是32位的,请在源码下载后编译前按以下步骤修改:下载完源码后,修改下面四个文件:阅读全文

posted @ 2012-02-27 13:38 C'est la vie 阅读(5424) 评论(2) 编辑

2012年5月29日

APP性能之终端兼容优化分享

摘要: 对于种类繁多Android设备适配. 对开发者来说, 也是除了应用逻辑以外需要重点考虑的一个重要因素. 因为这点将会直接影响到用户对应用的印象和体验. Google对此也出了很多应对措施来解决Android的碎片化. 我也来分享下我平时遇到的性能之终端兼容优化的办法: 1, 多屏幕, 多分辨率 ①这点也许这是开发者遇到的最头疼的问题, 甚至导致某些开发者中途放弃Android, 转...阅读全文

posted @ 2012-05-29 17:22 C'est la vie 阅读(9) 评论(0) 编辑

(原创)滑动按钮,滑动锁的实现

摘要: 先上图:大概就是这种效果,你可以用于滑动解锁,也可以当做个性化的Button来用这个我已经进行了封装,可以直接在xml中进行编写,然后在activity中重写ontouch方法进行button的判断即可,不用你再调整任何东西,滑动什么的都是自动适配的我把这种Button命名为SlidingButton,先看一下代码吧,都是非常简单易用的:package com.test.slidingbutton;import android.content.Context;import android.util.AttributeSet;import android.util.Log;import andr阅读全文

posted @ 2012-05-29 14:33 C'est la vie 阅读(335) 评论(1) 编辑

2012年4月25日

Android Touch事件传递机制解析

摘要: 没事逛论坛,无意间看到了一篇非常不错的帖子,转载如下: 开篇语:最近程序在做一个小效果,要用到touch,结果整得云里面雾里的,干脆就好好把android touch机制好好看了一下,呵呵。。 android系统中的每个ViewGroup的子类都具有下面三个和TouchEvent处理密切相关的方法: 1)public boolean dispatchTouchEvent(Motio...阅读全文

posted @ 2012-04-25 14:20 C'est la vie 阅读(556) 评论(1) 编辑

2012年4月22日

Android偏移动画-转圈的Button

摘要: 以前做项目碰到过一个需求,就是有5个button,这5个button要围绕一个点不停的转动,而且点击不同的button会进行相应的逻辑,比如activity的跳转等.就类似于gallery,但是又有所不同有人会首先想到用偏移动画,但是android的偏移动画只是动画,也就是说你从A点移动B点,看上去是移动过去了,但是点击的事件触发却还是在A点,实际上没有真正的偏移过去,只是欺骗眼睛罢了,但是在android2.2以后api提供了这样的一个方法setPosition(),这个方法的好处是你可以监听动画,假如一段动画完成了你可以动态的得到现在button的位置,然后set进去,这样也可以完成操作,阅读全文

posted @ 2012-04-22 22:01 C'est la vie 阅读(437) 评论(0) 编辑

2012年4月18日

PendingIntent和Intent的区别

摘要: An Intent is something that is used right now; a PendingIntent is something that may create an Intent in the future. You will use a PendingIntent with Notifications, AlarmManager, etc. Notification...阅读全文

posted @ 2012-04-18 17:51 C'est la vie 阅读(273) 评论(0) 编辑

2012年3月29日

Java反射机制

摘要: 一、什么是反射机制 简单的来说,反射机制指的是程序在运行时能够获取自身的信息。在java中,只要给定类的名字, 那么就可以通过反射机制来获得类的所有信息。 二、哪里用到反射机制 有些时候,我们用过一些知识,但是并不知道它的专业术语是什么,在刚刚学jdbc时用过一行代码, Class.forName("com.mysq...阅读全文

posted @ 2012-03-29 12:12 C'est la vie 阅读(551) 评论(8) 编辑

2012年3月15日

cmwap联网失败与移动的推送页

摘要: 我在用j2me和android访问我们自己的服务器时,如果选用cmwap连接是有时候会返回这样的信息(抓包抓的): <?xml version="1.0"?> <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml"> <wml><card><p><do...阅读全文

posted @ 2012-03-15 19:23 C'est la vie 阅读(151) 评论(0) 编辑

2012年3月14日

OOD设计原则之开闭原则(OCP)

摘要: 开闭原则OCP(Open-Close Principle)被称作是OOD的基石,是OOD最重要的原则之一。 这个原则由大师Bertrand Meyer在1988年提出(汗,那个时候恐怕国内还很少人知道OO,甚至计算机为何物):Software entities should be open for extension,but closed for modification。多简单啊?!这个原则的...阅读全文

posted @ 2012-03-14 22:28 C'est la vie 阅读(263) 评论(0) 编辑

2012年3月7日

android4.0.3 修改启动动画和开机声音

摘要: 1. Linux 系统启动,出现Linux小企鹅画面(reboot)(Android 1.5及以上版本已经取消加载图片);2. Android平台启动初始化,出现"A N D R I O D"文字字样画面;3. Android平台图形系统启动,出现含闪动的ANDROID字样的动画图片(start)。现在我们说的是第三种方式(基于模拟器):android开机动画叫源码位于frameworks/base/cmds/bootanimation下,这个程序会将/data/local/bootanimation.zip或/system/media/bootanimation.zip里阅读全文

posted @ 2012-03-07 18:05 C'est la vie 阅读(1869) 评论(2) 编辑

2012年3月6日

情景分析“C语言的const关键字”

摘要: C语言中的const一直是C语言初学者心中的痛,这是因为const在不同位置有不同作用,在不同情景有不同角色。这让初学者摸不清头脑。今天,和大家一起研究一下const,让它的每个角色都“深入人心”!==============================================================================================情景一:最简单的const用法#include<stdio.h>int main(){int const a;a=5;printf("a=%d\n",a);return 0;}如果编阅读全文

posted @ 2012-03-06 20:07 C'est la vie 阅读(155) 评论(2) 编辑

2012年3月4日

让你自己写的Android的Launcher成为系统中第一个启动的,也是唯一的Launcher

摘要: 如果你要定制一个Android系统,你想用你自己的Launcher(Home)作主界面来替换Android自己的Home,而且不希望用户安装的Launcher来替换掉你的Launcher. 我们可以通过修改Framework来实现这样的功能。 这里以Android2.1的源代码为例来实际说明。 1)首先了解一下Android的启动过程。 Android系统的启动先从Zygote开始...阅读全文

posted @ 2012-03-04 16:47 C'est la vie 阅读(373) 评论(0) 编辑

2012年2月29日

Mainifest的加载和解析

摘要: 1:它是在系统启动时,被PackagedManageService这样一个系统级的服务加载(所有应用程序的),解析后映射到共享内存中,供使用时查询。 2:当应用程序启动时,launcher会进行一些系统级别的判断,从而从共享内存中进行取出,进行实例化。 3:当某个应用程序有多个activity或者service时,他会继续从共享内存中查询取出并且进行实例化。阅读全文

posted @ 2012-02-29 23:43 C'est la vie 阅读(172) 评论(0) 编辑

android编译错误及解决方法

摘要: 1.设置编译选项为make -j5 TARGET_ARCH=x86 TARGET_PRODUCT=generic TARGET_SIMULATOR=false TARGET_BUILD_TYPE=release TARGET_OS=linux LOCAL_PRELINK_MODULE=false2.build/core/envsetup.mk 中 91行 设置为x86(该步骤可以省略)3.修改build/tools/dexpreopt目录中Android.mk为Android-arm.mk,不编译该模块(该模块以来与emulator)。make: *** No rule to make tar阅读全文

posted @ 2012-02-29 16:24 C'est la vie 阅读(539) 评论(0) 编辑

2012年2月27日

android process lifecycle 进程等级

摘要: 首先,andorid的内核是linux,ios的内核是unix,他们的线程销毁都是由系统决定的。android的process有5个等级:1、Foreground Process (前台进程)foreground 的优先级最高,他处于前台a 正处于Activity Resume()状态b 正处于与bound服务交互的状态c 正处于服务在前台的状态,(startForeground()被调用)d Service生命周期函数正在被执行(onCreate(),onStart(),onDestroy())e BroadcastReceiver正在执行onReceive()方法杀死Foreground 阅读全文

posted @ 2012-02-27 18:09 C'est la vie 阅读(185) 评论(0) 编辑

Cocoa 编码规范

摘要: > Code Naming Basics 代码命名基础 在面向对象软件库的设计过程中,开发人员经常忽视对类,方法,函数,常量以及其他编程接口元素的命名。本节讨论大多数Cocoa接口的一些命名约定。 >> General Principles 一般性原则 >>> Clarity 清晰性 ● 最好是既清晰又简短,但不要为简短而丧失清晰性 代码 点评 insertObject:atInde...阅读全文

posted @ 2012-02-27 13:40 C'est la vie 阅读(94) 评论(0) 编辑

android 4.0.3最新源码下载编译

摘要: 最新的android4.0源代码公布以后,相信很多人和我一样都跃跃欲试,其实4.0的代码下载和编译和以前的版本差不多,但是有一些小的差别,写下来供不明真相的新手来参考首先,开发环境,google建议在ubuntu10.0.4下,并且最好是64位,既然是为了工作和学习,就尽量按照官方要求的来吧。Python 2.5 -- 2.7 ubuntu10.0.4已经默认安装了,所以不需要安装,其他环境需要安装JDK 6 编译4.0需要jdk 6 ,sdk的编译需要jdk 5Git 1.7 or newer如果你的ubuntu是32位的,请在源码下载后编译前按以下步骤修改:下载完源码后,修改下面四个文件:阅读全文

posted @ 2012-02-27 13:38 C'est la vie 阅读(5424) 评论(2) 编辑

Objective C 类方法

摘要: 一,Objective C 的类方法(class method),即 static 方法,是用 + 修饰的方法。类方法是属于类对象的,所以无需创建类的实例对象我们就可以直接使用它们。使用形式为:[ClassName classMethod];在这里 ClassName 代表的就是一个类对象,而不是作为一种类型。类名只有出现在接收消息的表达式中才代表一个类对象,其他情况下都表示一种类型。二,类方法可以继承自基类,就像普通的类成员方法一样。有一个特别的类方法 + (void) initialize,在类接收到任何消息之前,运行时系统会向类对象发送这个消息,因此我们可以在这个函数里对类对象做一些初始阅读全文

posted @ 2012-02-27 13:36 C'est la vie 阅读(288) 评论(0) 编辑

2012年2月26日

让你的模拟器不再卡:VirtualBox安裝 Android-x86 4.0

摘要: 为什么Android虚拟机比iOS和WP7的虚拟机要慢很多呢?原因如下:1. Android 模拟器模拟的是 ARM 的体系结构(arm-eabi),而 iOS 和 WP7 的模拟器的目标体系结构都是 x86 的,另外 iOS 的模拟器中运行的 App 也是编译为 x86 的。这样一来 Android 模拟器需要做一些额外的二进制翻译工作。 2. Android 模拟器用的是 QEMU 的全系统模式(full system),也就说它模拟时需要启动整个 GUEST 系统,初始化各种模拟设备。相反的,iOS 和 WP7 的模拟器只是 user-mode 的模拟。 3. 在 Android 模拟器阅读全文

posted @ 2012-02-26 16:39 C'est la vie 阅读(1152) 评论(1) 编辑

2012年2月21日

CursorAdapter与CursorFilter机制

摘要: Android为ListView提供了Filter对象,对显示的条目进行过滤。最常见的用法就是Contact中,根据在输入框中输入姓名的字母显示过滤。当然android系统中默认提供的过滤功能非常有限,不支持号码或是其他信息过滤。我曾见过有人为了支持对号码的过滤,就将 Android提供的那套机制屏蔽掉,每当过滤事件发生时,手动起AsyncQueryHander去异步查询。当查询完毕时调用 CursorAdapter.changeCursor更新Cursor。虽然基本上做法没错,流程上也跟Android实现过滤的机制大体相同,但重复了制造轮子的过程,而原有的轮子,只需稍加修改足以满足新的需求。阅读全文

posted @ 2012-02-21 01:39 C'est la vie 阅读(149) 评论(0) 编辑

2012年2月17日

android_launcher的源码详细分析

摘要: 转载请注明出处:http://blog.csdn.net/fzh0803/archive/2011/03/26/6279995.aspx去年做了launcher相关的工作,看了很长时间。很多人都在修改launcher,但还没有详细的文档,把自己积累的东西分享出来,大家一起积累。这份源码是基于2.1的launcher2,以后版本虽有变化,但大概的原理一直还是保留了。一、主要文件和类1.Launcher.java:launcher中主要的activity。2.DragLayer.java:launcher layout的rootview。DragLayer实际上也是一个抽象的界面,用来处理拖动和对阅读全文

posted @ 2012-02-17 10:48 C'est la vie 阅读(134) 评论(0) 编辑

2012年2月11日

ios音频播放

摘要: 在 iPhone 应用或者是游戏的开发过程中,对声音的支持是必不可少的。在我做过的几个应用中,每个都涉及到音效,所以在这里做个简单的归纳,很多都是引用自《iPhone Application Programming Guide》(需要有 Apple ID 才能打开链接),加了一些实际使用的经验。iPhone OS 主要提供以下了几种播放音频的方法:System Sound ServicesAVAudioPlayer 类Audio Queue ServicesOpenAL1. System Sound ServicesSystem Sound Services 是最底层也是最简单的声音播放服务,阅读全文

posted @ 2012-02-11 17:43 C'est la vie 阅读(578) 评论(0) 编辑

delegate和protocol

摘要: iOS开发上对delegate使用广泛。记在这里,如果有新人Google到了,希望能有点帮助。protocol和delegate完全不是一回事,放在一起说,只是因为我们经常在同一个头文件里看到这两个word。protocol和java里interface的概念类似,是Objective-C语法的一部分。定义protocol如下@protocol ClassADelegate- (void)methodA;- (void)methodB;@end那么就是定义了一组函数,这组函数放在一起叫作一个protocol,也就是协议。函数是需要被实现的,所以如果对于class如下@interface Cla阅读全文

posted @ 2012-02-11 14:25 C'est la vie 阅读(101) 评论(0) 编辑

2012年2月8日

iOS中NSArray的过滤

摘要: //找出一个数组NSFileManager*fileManager=[NSFileManagerdefaultManager];NSString*defaultPath=[[NSBundlemainBundle]resourcePath];NSError*error;NSArray*directoryContents=[fileManagercontentsOfDirectoryAtPath:defaultPatherror:&error]//匹配字符串,反回结果,SELF==表示数组中每一个元素NSString*match=@"imagexyz-999.png";阅读全文

posted @ 2012-02-08 17:23 C'est la vie 阅读(55) 评论(0) 编辑

2012年2月3日

iOS 开发之EXC_BAD_ACCESS异常分析(转)

摘要: 一:EXC_BAD_ACCESS异常介绍在调试objective-c程序的过程中,程序crash的现象在所难免,但大部分的错误都能够通过显示的错误原因结合NSLog的方式来解决,比如NSInvalidArgumentException(名字就能看出来是什么错误)等,实在搞不定还有debug这个杀手锏。但唯独EXC_BAD_ACCESS这个异常太难处理了,名字看不出来是什么原因,其他提示也没有,debug都搞不定。先来介绍下EXC_BAD_ACCES:这个异常基本上是内存使用不当造成的,而且90%的错误来源在于对一个已经释放的对象进行release操作。二:分析方法为工程运行时加入 NSZomb阅读全文

posted @ 2012-02-03 16:59 C'est la vie 阅读(128) 评论(0) 编辑

ios iphone开发-内存管理

摘要: 关于所有权所有权是iPhone内存管理的核心思想,对象的所有者负责在使用完对象后进行释放。一个对象可以有多个所有者,当它没有所有者时将被设置为取消分配(deallocation)。创建对象时,所有权通过alloc、new、或者copy的方式建立,之后通过调用retain或者通过Cocoa函数来分配和复制对象的所有权。内存释放有两种方式,一种方法是明确地请求释放对象的所有权,另一种方法则是使用自动释放池(auto-release pool)。所有权的背后是一个和引用有关的运算系统,iPhone SDK的大多数对象使用这个系统,彼此之间建立着很强的引用和参照。当你创建一个对象时,引用值为1,调用一阅读全文

posted @ 2012-02-03 13:04 C'est la vie 阅读(257) 评论(0) 编辑