代码改变世界

随笔分类 -  Android

Dip and Sp

2011-01-18 13:42 by RayLee, 277 阅读, 收藏, 编辑
摘要: Historically, programmers always designed computer interfaces in terms of pixels. For example, you might make a field 300 pixels wide, allow 5 pixels of spacing between columns, and define Icons 16-by... 阅读全文

Android Init Language

2011-01-12 10:27 by RayLee, 385 阅读, 收藏, 编辑
摘要: 本文来自Android源码文档,作为启动配置的一个指导。 The Android Init Language consists of four broad classes of statements, which are Actions, Commands, Services, and Options. All of these are line-oriented, consisting of t... 阅读全文

Android media framework - 转

2010-12-29 09:57 by RayLee, 394 阅读, 收藏, 编辑
摘要: 转一文:Understanding the android media framework http://www.cnblogs.com/rxwen/archive/2010/01/04/1713010.html 阅读全文

NDK tips (1)

2010-12-28 14:16 by RayLee, 331 阅读, 收藏, 编辑
摘要: 一个NDK应用程序主要由两部分组成:Java部分和本地实现。本地实现是由C或C++实现的一个动态链接库。ADT自动将动态链接库,资源文件等等打包成apk文档。然后安装该应用。 应用程序运行时会调用System.loadLibrary()加载该动态链接库。那么应用程序怎么查找到该库呢? 通过DDMS – File Explorer, 你发现动态链接库存在两个位置: /system/lib/ ... 阅读全文

Why UI not thread-safe?

2010-12-15 15:39 by RayLee, 638 阅读, 收藏, 编辑
摘要: Android开发中,初学者很容易犯的错误就是在非UI线程中直接更新UI控件,Android将抛出异常。查询SDK文档,给出的解释是“UI is not thread-safe”,只能在UI线程中更新控件。 那你是否明白UI为什么设计成非线程安全? 下面这段摘自“Java Swing”一书,给了一个解释,或许也适合Android UI的设计思想。 As we mentioned above, ... 阅读全文

ListView高级用法

2010-12-13 20:38 by RayLee, 3567 阅读, 收藏, 编辑
摘要: ListView基本用法一文介绍了如何操作数据。本文将重点说明如何更丰富的显示这些数据。上文提到,ListAdapter封装了数据的显示,它为ListView和数据本身之间建起了桥梁。查看SDK文档,ListAdapter定义为接口,实现该接口的类有BaseAdapter,ArrayAdapterT,SimpleCursorAdapter等等。 ArrayAdapterT ArrayAdapter是最常用的一种适配器。其中的每个数据项最常用的显示布局为android.R.layout.simple_list_item_1。查看源码,你发现它仅仅是一个TextView。 simpl 阅读全文

ListView基本用法

2010-12-13 15:10 by RayLee, 848 阅读, 收藏, 编辑
摘要: Android平台定义了ListView控件来显示一系列相关的数据项。对ListView而言,最重要的两方面:数据和显示样式。数据定义了该控件要显示的内容;显示样式定义了如何显示这些数据(文本或图片以及如何排列)。下面将介绍ListView的一些基本使用方法。 运行前,数据集合已知 ListAdapter类封装了数据本身与数据显示的一些实现细节,为开发者定义了一个更加抽象的方式。以最简单的ArrayAdapterT,给出一个例子说明。 UI定义:要使用ListView,xml文件中ListView的定义是必不可少的。  第一步自然是要索引到ListView控件。 如果已知要显示的数 阅读全文

如何安全保存数据

2010-12-10 13:42 by RayLee, 302 阅读, 收藏, 编辑
摘要: Android2.3刚刚发布,在增加了很多特性和API的同时,也给出了一些在新平台上开发需要注意的问题。 “你是否了解你的设备所使用的文件系统?” “你是否考虑过不同的文件系统类型对数据存储的影响?” 面对这些问题,官方给出了一篇博文 http://android-developers.blogspot.com/2010/12/saving-data-safely.html 解释了如何应对各种数据存储情形。 在这里值了提醒的是,当你自己需要读写文件时,你要注意该文讲到的方法。 阅读全文

善用系统自带图标

2010-12-03 14:28 by RayLee, 610 阅读, 收藏, 编辑
摘要: 如果你仅仅是一个programmer,在开发应用程序时是不是常常为寻找合适的图标而烦恼?其实,Android平台提供了一些常用的图标。熟练使用这些图标会使你的应用看起来更专业。 android.R.drawable类定义了一些常用的图标,它们按照类别来分类。 Icons for menu 以ic_menu_开头的图标都是供菜单项使用的。 一个应用程序最常见的三个菜单项可能是“退出”,“关于”,“设置”。 它们与图标的对应关系依次为: “退出”- ic_menu_close_clear_cancel “关于”- ic_menu_info_details “设置”- ic_m 阅读全文

自定义标题栏

2010-12-03 10:25 by RayLee, 609 阅读, 收藏, 编辑
摘要: 应用程序默认的标题栏仅仅是文字显示,过于单调。Android允许自定义标题栏以显示更丰富的内容。下面是实现的步骤: 自定义标题栏布局 创建window_title.xml 值得注意的是,对TextView需要应用style="?android:attr/windowTitleStyle",否则就是普通的字体显示,而不是放大的高亮的标题栏字体显示。应用自定义布局创建好自定义布局后,在Activity初始化时应用该布局来看看最终的效果图吧 阅读全文

善用Android预定义样式

2010-12-02 15:41 by RayLee, 11694 阅读, 收藏, 编辑
摘要: 字体大小 对于能够显示文字的控件(如TextView EditText RadioButton Button CheckBox Chronometer等等),你有时需要控制字体的大小。Android平台定义了三种字体大小。 "?android:attr/textAppearanceLarge" "?android:attr/textAppearanceMedium" "?android:attr/textAppearanceSmall" 使用方法为: android:textAppearance="?android:attr/textAppearanceLarge" android 阅读全文

Understanding User Interface in Android

2010-12-01 16:22 by RayLee, 211 阅读, 收藏, 编辑
摘要: 转载一系列文章 Understanding User Interface in Android - Part 1: Layouts http://mobiforge.com/designing/story/understanding-user-interface-android-part-1-layouts Understanding User Interface in Android - Part 2: Views http://mobiforge.com/designing/story/understanding-user-interface-android-part-2-view 阅读全文

Android source开发环境搭建

2010-11-23 15:07 by RayLee, 1258 阅读, 收藏, 编辑
摘要: 众所周知,Android是开源的。这样就可以下载Android的全部代码,进行编译生成二进制镜象文件。 开发平台 Ubuntu. 工具安装 $ sudo apt-get install git-core gnupg sun-java5-jdk flex bison gperf     libsdl-dev libesd0-dev libwxgtk2.6-dev build-essenti... 阅读全文

Android video recording demo

2010-11-18 13:24 by RayLee, 1181 阅读, 收藏, 编辑
摘要: UI 提供三个功能按钮:‘Start video recording’,‘Stop video recording’和‘Play video’。 Android平台针对视频设计了一个更抽象的控件VideoView。下面是UI的XML 文件。 功能实现附一张截图: 阅读全文

java.lang.OutOfMemoryError: bitmap size exceeds VM budget解决方法

2010-11-09 17:13 by RayLee, 6757 阅读, 收藏, 编辑
摘要: 用BitmapFactory解码一张图片时,有时会遇到该错误。这往往是由于图片过大造成的。要想正常使用,则需要分配更少的内存空间来存储。BitmapFactory.Options.inSampleSize设置恰当的inSampleSize可以使BitmapFactory分配更少的空间以消除该错误。inSampleSize的具体含义请参考SDK文档。例如:如何设置恰当的inSampleSize设置恰当的inSampleSize是解决该问题的关键之一。BitmapFactory.Options提供了另一个成员inJustDecodeBounds。设置inJustDecodeBounds为true后 阅读全文

JNI系列(4):如何访问自定义类对象

2010-10-21 13:51 by RayLee, 3726 阅读, 收藏, 编辑
摘要: JNI规范中仅仅给出了String,Array两种引用类型的访问,那么如果使用了自定义的类,在JNI中该如何访问?如以下代码所示,用户自定义了Student类,创建了实例student,并希望在JNI函数中修改实例student的成员age。 对应的JNI函数:其实思路是一样的,先找到Student类,然后找到’age’的fieldID。 阅读全文

JN系列(3):如何得到JavaVM,JNIEnv接口

2010-10-21 11:49 by RayLee, 11590 阅读, 收藏, 编辑
摘要: 在系列(1)中讲到,Java与native code的操作有两种方式:(1)在Java中加载动态链接库(2)使用JNI Invocation inteface,在native code中创建JVM JavaVM接口 第一种方式,在加载动态链接库的时候,JVM会调用JNI_OnLoad(JavaVM* jvm, void* reserved)(如果定义了该函数)。第一个参数会传入JavaVM指针。 第二种方式,在native code中调用JNI_CreateJavaVM(&jvm, (void**)&env, &vm_args)可以得到JavaVM指针。 两种情况下,都可以用全局变量, 阅读全文

JNI系列(2):jstring操作

2010-10-21 10:33 by RayLee, 6141 阅读, 收藏, 编辑
摘要: 使用JNI时,最常见的操作是将jstring转换成UTF字符串。JNI提供了几个转换函数:GetStringUTFChars, GetStringUTFRegion。 GetStringUTFChars返回一个指向UTF字符串的指针,该函数会分配内存空间存储该字符串,因此使用完后一定要记得调用对应的释放函数ReleaseStringUTFChars释放分配的空间。 GetStringUTFRegion将UTF字符串存储到预分配的内存空间。相比GetStringUTFChars,它没有重新分配内存空间,因此也无需释放。 开发时,根据需要选择适当的函数。 Android源代码大量使用Get 阅读全文

JNI系列(1):基础篇

2010-10-21 08:30 by RayLee, 2053 阅读, 收藏, 编辑
摘要: 由于现在的项目及以后的项目将大量使用JNI调用,故打算做一则系列文章供参考及讨论。本文是关于JNI的基础知识。 JNI是Java代码与本地代码交互的桥梁,有两种方式:(1)在Java中加载动态链接库 (2)使用JNI Invocation inteface,在native code中创建JVM 这种交互是双向的,即Java可以访问本地代码中的变量和函数,本地代码也可以访问Java类的成员和成员方法。 JNI规范给出了一个简单的例子,说明在Windows和Soloris上如何编译,生成及运行JNI代码。 在Windows上,使用cl编译器把本地代码生成dll文件。Soloris上,使用c 阅读全文

AudioRecord的用法,给个简单的Demo

2010-09-28 20:32 by RayLee, 1136 阅读, 收藏, 编辑
摘要: AudioRecord的用法,给个简单的Demo 阅读全文