迁移到 www.trinea.cn @Android @Java @性能优化 @开源,滴滴国际化项目 Android 端演进

11 2012 档案

摘要:本文主要介绍如何利用ViewPager、Fragment、PagerTabStrip实现多页面滑动效果。即google play首页、新浪微博消息(at、评论、私信、广播)页面的效果。ViewPager+Fragment组合为google推荐方式,比TabActivity+Activity的效率高的多,示例工程即代码见ViewPager Demo。 1、添加android support包 因为上面的几个类都是在android support包中才提供,我们先添加包。 在Eclipse->Window->Android SDK Manager,选择列表中Extras->Android Support Library进行安装。下载完后在android-sdk\extras\android\support目录下,这里我们选择v4版本,进入v4目录,拷贝其中的android-support-v4.jar文件到工程的libs目录(若没有新建)下即可,编译时ADT会自动将其导入项目中。 2、新建ViewPager的layout,内容如下 ViewPager用来管理layout并 阅读全文
posted @ 2012-11-23 19:44 Trinea 阅读(18119) 评论(5) 推荐(0)
摘要:在使用ViewPager添加android-support-v4.jar后提示如下错误 11-15 21:01:21.725: E/AndroidRuntime(32431): Caused by: java.lang.ClassNotFoundException: android.support.v4.view.ViewPager in loader dalvik.system.PathClassLoader[/system/framework/com.google.android.maps.jar:/mnt/asec/com.trinea.android.demo-2/pkg.apk] 我是通过项目 -> 属性 -> Java Build Path -> Add External JARs添加了android-support-v4.jar包的,后属性 -> Java Build Path -> Remove该jar,直接将jar包复制到项目的libs目录下即可。因为项目libs下的jar包会自动导入项目,不需要手动导入。 阅读全文
posted @ 2012-11-16 19:04 Trinea 阅读(12623) 评论(1) 推荐(0)
摘要:本文主要介绍Android开发中如何直接查看sqlite数据库中的数据以及sqlite3的常用命令。 2、实时查看sqlite数据 只需三条命令 (1) 进入AVD的shell模式 adb shell (2) 进入数据库目录查看数据库 cd /data/data/package_name;ls 其中的package_name为应用的包名 (3) 操作数据库 sqlite3 dbName 进入sqlite命令行模式,输入.tables查看所有表,输入select * from tabelName查看某个表的所有数据 3、sqlite3的常用命令 .tables 显示所有表 .quit 退出 .read FileName 执行FileName中的sql 标准的sql语句也可以用,但必须用分号结束,如下 select语句; delete语句; update语句; insert语句; 阅读全文
posted @ 2012-11-16 19:02 Trinea 阅读(17115) 评论(1) 推荐(1)
摘要:本文主要介绍读书<<Don't Make Me Think>>的读书笔记以及Chrome设计中的Don't Make Me Think1、<<Don't Make Me Think>>读书笔记2、Chrome设计中的Don't Make Me Think(1)、功能强大的地址栏大家是否记得Don't Make Me Think中提到主页上的搜索举得雅虎的例子,用户在雅虎的搜索框中直接粘贴了url进行搜索企图在这个框内完成所有的互联网操作。现在Chrome的地址栏就做到了,集搜索栏、地址栏于一身,可直接跳入某 阅读全文
posted @ 2012-11-15 23:05 Trinea 阅读(599) 评论(0) 推荐(0)
摘要:本文主要介绍如何为自定义的View添加属性以及属性的类型。 1、添加自定义View的属性文件 在res/values中新建attrs.xml文件,定义名为myViewDefinedAttr的属性列表,这个name命名也可以用下划线形式。name会在下面第二步中使用。 2、自定义View中获取属性值。 3、调用自定义View。 4、自定义属性的类型。 format表示的属性类型可以为boolean, string, integer, dimension, float, reference, color, fraction, enum, flag及其混合。 阅读全文
posted @ 2012-11-14 20:08 Trinea 阅读(11840) 评论(1) 推荐(1)
摘要:本文主要介绍如何在Android中引入地图及并对地图进行相应的操作。包括如何申请Google Map API密钥、如何创建包含地图的项目、地图的功能使用(地图缩放、设置视图、定位到自己的位置、添加标记、获得屏幕坐标的位置、双击放大、位置搜索即经纬度位置及屏幕像素坐标和具体地址的转换、监听某个位置)、google map和百度地图API的差别。 1、申请Google Map API密钥。2、新建项目,Build Target选择Google APIs而不是Android API。 3、编写代码 3.1 layout中添加MapView。 3.2 AndroidManifest.xml文件添加权限。 4 map功能 4.1 地图缩放;4.2 设置视图;4.3 定位到自己的位置;4.4 添加标记;4.5 获得触摸的位置;4.6 双击放大;4.7 位置搜索即经纬度位置、屏幕像素坐标和具体地址的转换;4.8 监听某个位置。 5、google map和百度地图API的差别 在定位、缩放上API几乎没有区别但在搜索、路线、覆盖物图层方面区别巨大,百度地图开发的API较多,可以方便的 阅读全文
posted @ 2012-11-14 19:20 Trinea 阅读(10372) 评论(0) 推荐(1)
摘要:以前写的一个工程中调用了google map的api,今天在AVD中运行却始终提示如下错误: [2012-11-14 17:54:38 - AndroidDemo] Installation error: INSTALL_FAILED_MISSING_SHARED_LIBRARY [2012-11-14 17:54:38 - AndroidDemo] Please check logcat output for more details. [2012-11-14 17:54:38 - AndroidDemo] Launch canceled! 但在手机端运行确实正常。后发现是创建的AVD target错误。编辑AVD将target由android x.x改为google apis xx即可。 对于引入google map的工程需要: a. 创建时项目的target选择google apis,而不是android x.x。项目创建完成后也可以通过属性-Android-target修改 b. AndroidManifest.xml文件的applicat 阅读全文
posted @ 2012-11-14 18:48 Trinea 阅读(2754) 评论(0) 推荐(0)
摘要:本文主要介绍在Android开发中如何利用wifi进行应用调试以及其原理。 1、要求 手机必须root过,手机和电脑必须都联网且在同一局域网内。 2、步骤 a、手机端启动adbd服务 在手机端打开终端,可使用软件终端模拟器或BetterTerminal,通过下面命令启动服务 su setprop service.adb.tcp.port 5555 stop adbd start adbd 这时到手机的设置->系统->网络里查看手机ip地址多少,如192.168.1.193 b、在PC端打开命令行,输入 adb connect 192.168.1.193 阅读全文
posted @ 2012-11-13 20:34 Trinea 阅读(4483) 评论(0) 推荐(0)
摘要:本文主要介绍PendingIntent的作用和举例以及和Intent的区别 1、PendingIntent作用 根据字面意思就知道是延迟的intent,主要用来在某个事件完成后执行特定的Action。PendingIntent包含了Intent及Context,所以就算当前程序结束,PendingIntent依然有效,可以在其他程序中使用。 常用在通知栏及短信发送系统中 PendingIntent一般作为参数传给某个实例,在该实例完成某个操作后自动执行PendingIntent上的Action,也可以通过PendingIntent的send函数手动执行,并可以在send函数中设置OnFinished表示send成功后执行的动作。 2、PendingIntent举例 a. 系统通知栏 b. 短信系统举例 3、Intent和PendingIntent的区别 阅读全文
posted @ 2012-11-09 22:07 Trinea 阅读(7511) 评论(0) 推荐(1)
摘要:本文主要介绍Parcelable和Serializable的作用、效率、区别及选择。 1、作用 从上面的介绍可知 Serializable的作用是为了保存对象的属性到本地文件、数据库、网络流、rmi以方便数据传输,当然这种传输可以是程序内的也可以是两个程序间的。 而Android的Parcelable的设计初衷是因为Serializable效率过慢,为了在程序内不同组件间以及不同Android程序间(AIDL)高效的传输数据而设计,这些数据仅在内存中存在,Parcelable是通过IBinder通信的消息的载体。 从上面的设计上我们就可以看出优劣了。 阅读全文
posted @ 2012-11-09 20:14 Trinea 阅读(18802) 评论(2) 推荐(1)
摘要:本文主要介绍Intent和Intent Filter的概念及作用、Intent的结构、两种类型Intent、 Intent和Intent Filter 的匹配规则、利用Intent调用其他常见程序。 1、Intent和Intent Filter的介绍及作用 Intent是抽象的数据结构,包含了一系列描述某个操作的数据,使得程序在运行时可以在程序中不同组件间通信或启动不同的应用程序。Intent Filter顾名思义就是Intent的过滤器。 2、Intent结构 3、两种类型的Intent 显式Intent和隐式Intent。 4、Intent和的匹配规则。 5、利用Intent调用其他常见程序,发送短信、打电话、发送邮件、拍照、浏览网页、查看联系人 阅读全文
posted @ 2012-11-09 20:01 Trinea 阅读(6305) 评论(0) 推荐(0)
摘要:本文主要介绍BroadcastReceiver的概念、使用、生命周期、安全性、分类、特殊的BroadcastReceiver(本地、粘性、有序、粘性有序广播) 1、概念介绍及两种注册方式的区别 2、使用举例 3、生命周期 4、安全性 5、分类 普通和有序广播 6、特殊的BroadcastReceiver a. LocalBroadcastManager本地广播 b. Sticky Broadcast粘性广播 c. OrderedBroadcastReceiver有序广播 d. StickyOrderedBroadcast粘性有序广播 阅读全文
posted @ 2012-11-09 19:41 Trinea 阅读(13754) 评论(1) 推荐(3)
摘要:在Android Service介绍中我们对长时间运行的服务、应用内交互的服务进行了相关介绍,本文主要介绍使用Service进行应用间的交互。示例APK见:TrineaAndroidDemo.apk。1、介绍Android使用AIDL来完成进程间通信(IPC),AIDL全程为Android Interface Definition Language。在服务需要接受不同应用多线程的请求时才需要使用AIDL,如果是同一个应用内的请求使用Binder实现即可,见应用内交互的服务;如果只是应用间通信而不是多线程处理的话使用Messenger,当然这两种情况也可以使用AIDL。本地进程和远程进程使用AI 阅读全文
posted @ 2012-11-08 23:48 Trinea 阅读(7980) 评论(0) 推荐(1)
摘要:本文主要介绍Service的概念及作用、使用(包括长时间运行的服务、应用内交互的服务、应用间交互的服务的分别举例、生命周期、使用场景)、特殊的Service。代码地址AndroidDemo@GoogleCode 1、概念及作用 由于ANR对Activity和BroadcastReceiver响应时间的限制(Activity对事件响应不超过5秒,BroadcastReceiver执行不超过10秒),使得在其中都不适合执行较耗时操作,这样像网络、数据库、复杂计算这类耗时操作的执行就需要一个组件来承担。Service作为Android四大组件之一,其功能之一就是耗时操作的执行,主要功能如下: a. 执行需要长时间运行的操作 b. 应用内或应用间数据通信 阅读全文
posted @ 2012-11-08 23:42 Trinea 阅读(12226) 评论(1) 推荐(5)