发博文
个人资料
乡下鱼
乡下鱼
  • 博客等级:
  • 博客积分:158
  • 博客访问:67,352
  • 关注人气:27
访客
加载中…
好友
加载中…
评论
加载中…
留言
加载中…
分类
博文
标签:

杂谈

下面是pixmap的定义



typedef struct _Pixmap {
    DrawableRec         drawable;
    PrivateRec          *devPrivates;
    int                 refcnt;
    int                 devKind;
    DevUnion            devPrivate;
#ifdef COMPOSITE
    short               screen_x;
  &nb
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
标签:

android

aapt

it

工具aapt用来生成apk。然而1.6版本中的aapt有下面一个bug。
假设res/layout目录下,有两个文件:
aaa.xml
bbb.xml

在aaa.xml中可以定义一个widget,假设id = aaa_widget。而在bbb.xml中,可以引用这个widget,不会出现任何错误。

然而,如够颠倒引用顺序,假设bbb.xml中定义了一个widget,id= bbb_widget,然后在aaa.xml中引用这个widget,就会报错:No resource found that matches the given name

其原因就在于aapt在处理xml中的widget resource引用时,竟然不会处理向后索引。第一种情况下,因为aaa.xml排名先于bbb.xml (按字母顺序排序),因此aaa_widget已经被定义,所以不出错。而第二种情况下,因为bbb_widget定义在后面的一个文件bbb.xml,因此在先处理aaa.xml时,这个widget还没有定义,就会报引用出错的错误。

呵呵。

阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
标签:

android

homescreen

it

分类: android
Home screen可以说是一个手机的最重要应用,就像一个门户网站的首页,直接决定了用户的第一印象。下面对home screen做一简要分析。

home screen的代码位于packages/apps/Launcher目录。从文件launcher.xml,workspace_screen.xml可获知home screen的UI结构如下图所示:


整个homescreen是一个包含三个child view的FrameLayout(com.android.launcher.DragLayer)。

第一个child就是桌面com.android.launcher.Workspace。这个桌面又包含三个child。每个child就对应一个桌面。这就是你在Android上看到的三个桌面。每个桌面上可以放置下列对象:应用快捷方式,appwidget和folder。

第二个child是一个SlidingDrawer控件,这个控件由两个子控件组成。一个是com.and
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
标签:

android

message

queue

handler

send

post

it

分类: android
这两天进一步了解了一下Android的message queue, thread, hander,runnable之间的关系。

每个message queue都会有一个对应的handler。handler会向message queue通过两种方法发送消息:send或post。这两种消息都会插在message queue队尾并按先进先出执行。但通过这两种方法发送的消息执行的方式略有不同:通过send发送的是一个message对象,会被handler的handleMessage()函数处理;而通过post方法发送的是一个runnable对象,则会自己执行。

每个带图形界面的应用启动后,都会创建一个主线程,可称之为GUI线程。这个线程自动就会创建一个message queue,来自于系统的消息都会投放到这个message queue里面,并按先进先出的顺序处理。

GUI线程图形界面中的view可通过post方法向GUI线程的message queue投递一个runnable。

对于除GUI线程以外的其他线程,创建时缺省并没有message queue,下面的示例演示了如何创建一个带有message queue 和handler的线程:
 class LooperThread extends Thread 
{ public Handler mHandler;
public void ru
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
标签:

android

graphics

it

http://www.moandroid.com/?p=937中介绍了一些关于Android图形系统的知识。

1 android.view.animation.Interpolator:管理动画过程的速度变化,比如整个动画过程是线性的,加速的,或者减速的,等等。
2 android.widget.Scroller:滚动管理。computeScrollOffset函数计算出当前位置以及是否滚动到边界。
3 android.widget.Gallery:水平方向管理一组child,并可以通过手势来滚动这组child。private class FlingRunnable implements Runnable 具体负责滚动这组child。run()计算当前的位置,并调用trackMotionScroll(delta)更新视图以及设置当前具有焦点的child。
4. Gradient
5. Android的view/widget有两种不同的监听和处理事件的方式。
第一种是对任意一个widget/view, 你都可以通过调用下列函数,setOnClickListener, setOnLongClickListener, setOnFocusChangeListener, setOnKeyListener, setOnTouchListener, setOnCreateContextMenuListener,为其设置一个分别处理click, longClick, focusChange, key, touch, createContextMenu事件的callback函数。

第二种是当派生一个新的widget时,可以重载其父类的事
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
下文来自http://developer.android.com/resources/articles/track-mem.html但需要越墙访问,特摘录在此。

Despite the impressive hardware of the first Android phones (T-Mobile G1 and ADP1) writing efficient mobile applications is not always straightforward. Android applications rely on automatic memory management handled by Dalvik's garbage collector which can sometimes cause performance issues if you are not careful with memory allocations.

In a performance sensitive code path, like the layout or drawing method of a view or the logic code of a game, any allocation comes at a price. After too many allocations, the garbage collector will kick in and stop

阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
标签:

android

browse

source

eclipse

it

分类: android
Pls refer to http://stuffthathappens.com/blog/2008/11/01/browsing-android-source-in-eclipse/

如果能够在eclipse中浏览Android源代码,这对提高阅读源码的效率非常有帮助。根据上面连接,下面是一个简要步骤描述:
1. 安装eclipse 3.4或3.5 (本人使用的是从http://www.eclipse.org/downloads/上下载的3.4.1。3.5版本下面有些步骤没有成功)
2. 安装Android plugin (参见sdk 文档docs/sdk/eclipse-adt.html)
3. 从源码中创建一个项目, (create a project from existing sources), 如为packages/apps/calendar
4. 安装Android源码到这个项目中。
4.1 在eclipse的Window->Preference->Android中,指定sdk location,例如xxx/android-linux-sdk_86
4.2 假设使用的sdk是1.6,则在目录xxx/android-linux-sdk_86/platforms/android-1.6/下创建sources目录
4.3 符号连接 你的源码 ln -s frameworks/base/core/java/android xxx/android-linux-sdk_86/platforms/android-1.6/sources/android
4.4 符号连接其他源码到sources目录下。注意:源码文件所放路径应该与源码文件所属Java包的名字匹配。例如,B
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 

Pls refer to http://www.java-samples.com/showtutorial.php?tutorialid=285. The highlight is:

There will be times when you will want to define a class member that will be used independently of any object of that class. Normally a class member must be accessed only in conjunction with an object of its class. However, it is possible to create a member that can be used by itself, without reference to a specific instance. To create such a member, precede its declaration with the keyword static. When a member is declared static, it can be accessed before any objects of its class are created, and without reference to any object. You can declare both methods and variables to be static. The most common example of a static member is main( ). main( ) is declared as static

Pls refer to http://www.java-samples.com/showtutorial.php?tutorialid=305 for synchronized keyword
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
标签:

android

appwidget

it

分类: android
要了解AppWidget,得先了解Homescreen。
HomeScreen是一个手机的脸面,是一个门户网站的首页,是手机上最为重要的应用。有一个好的homescreen,可以说这个手机已经成功了一半。

开发者当然可以在homescreen上开发很多功能和界面,比如一个时钟,一个天气预报,一个显示当前电池电量,未读短信等状态的状态栏等等。实际上,传统的homescreen也是这样做的。但这样做的弊端有两个:1. homescreen代码过于庞杂,和系统各个子系统都有交互,容易出错,不易维护;2. homescreen不能定制。最终用户可能有不同需求,而预设的功能则限制了用户选择的权力。

AppWidget 的出现主要就解决了这些问题。AppWidget是一个特殊的view,由一个应用(假设应用A)创建和维护,而绘制却在另一个应用上(通常即homescreen)。即应用A负责决定画什么,如一个时钟;而homescreen却负责具体画,即怎么画。如果用一个比喻来形容的话,homescreen和应用A之间的关系就像是一个Browser/Server架构, homesreen 就是一个负责显示的browser,而应用A就是后台的Server。应用A传递RemoteView给homescreen,而homescreen解析并绘制这个RemoteView。这样,不用对homescreen应用做
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
(2009-05-30 11:42)
标签:

android

分类: android
最近博客一直没有更新,还请见谅。
刚刚和韩国社区http://cafe.naver.com/embeddedcrazyboys(主要由三星工程师支持参与)合作开发了一款三星开发版,支持Android 1.5和WinCE 6.0,并附带全部源码。三星公司基于6410的Android手机也即将于年内上市。如果感兴趣,请发email和linuxstb@yahoo.com联系。

阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
  

新浪BLOG意见反馈留言板 不良信息反馈 电话:4006900000 提示音后按1键(按当地市话标准计费) 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

新浪公司 版权所有