android常用的adb命令

于 2014年07月10日 发布在 android开发 没有评论 »

(文章出处:http://www.growingwiththeweb.com/2014/01/handy-adb-commands-for-android.html)

 

查看所有已经连接上的设备:

这个命令可以查看所有已经连接上的设备和他的设备ID:

adb devices

如果有多个设备连接到电脑,可以通过 adb -s DEVICE_ID 来指定用哪一个。

 

安装应用:

通过install命令来安装apk文件,-r参数可以重新安装某个应用并保留应用数据。

adb install -r APK_FILE

#举例

adb install -r ~/application.apk

 

卸载应用:

adb uninstall PACKAGE_NAME

#举例

adb uninstall com.growingwiththeweb.example

阅读全文 »

Launcher3分析之拖动图标的流程——放下

于 2014年06月9日 发布在 android开发 一条评论 »

(系列文章点这里)

我们来看下放下的过程,对应的触摸事件是ACTION_UP,我们直接跳到DragController的onTouchEvent。在处理ACTION_UP的时候多调用了一次handleMoveEvent,可能是因为ACTION_UP相对于上一次的时间也会有位置的变化。

up松手的时候会判断是是不是在“扔”图标(通过isFlingingToDelete),如果你用的不仔细的话,可能发现不了这个扔的过程:在说面拖动某个图标,然后快速甩向屏幕上方,就会触发删除的事件。这里检查你是否在扔是通过VelocityTracker来计算的,他会记录每次事件,然后计算出速度,包括X方向和Y方向的。如果不是在“扔”,就会调用放下图标最重要的一个方法,drop方法。
阅读全文 »

Launcher3分析之拖动图标的流程——移动

于 2014年06月3日 发布在 android开发 2 条评论 »

(系列文章点这里)

移动的逻辑还是比较清楚的,因为他抽象出来的模型十分易于理解的。

DropTarget是一个可放置(drop)区域的抽象,也就是我们松开手的时候想要把图标放到某个东西上,这个东西就是DropTarget,实现他的都是View,比如说文件夹,Workspace,删除区等等,你可以通过“ Open Type Hierarchy”来查看哪些类继承了DropTarget接口。下图是他比较重要的几个接口:

droptarget
阅读全文 »

Launcher3分析之拖动图标的流程——按下

于 2014年04月23日 发布在 android开发 7 条评论 »

(系列文章点这里)

拖动图标是Launcher的特色,非常形象地解释了如何改变桌面的布局,让小白用户也可以轻松上手,这背后所做的工作也是把复杂的东西简单化,简单到按下-移动-松开。

今天说一说这个按下的过程是如何产生的。这里说的按是长按,长按就要找到他的长按监听器。在Workspace中addInScreen方法最后,给图标设置的监听器是Launcher对象,他实现了onLongClick方法。

拖动的流程-按下
阅读全文 »

Android Studio试用总结

于 2014年04月22日 发布在 android开发 11 条评论 »

Android Studio是一年前Google I/O上推出的一款Android开发IDE,他基于JetBrains’ IntelliJ IDEA,目前还在preview阶段。增强了布局拖拽和预览功能,使用了新的构建系统Gradle,增加了android相关的重构和quick fix功能。之前听说用Android Studio来构建应用程序的时候会很方便,而且在学习常用Android开源项目的时候看到大部分都提供了对Android Studio的支持,所以就折腾了下,分享点经验给大家。

大多数Android Studio尝鲜者遇到的最大的障碍是Gradle,启动的时候非常慢,他需要从Maven库下东西,网络不稳定,这就坑了,不知道别人怎么解决的,我是翻墙搞的,光这一点就阻止了Android Studio大陆范围内推广,而且多人合作的时候同伴不一定习惯这个东西。网络的问题如果解决后,就需要了解Gradle的构建原理,这也需要费一番功夫的,去年谷歌I/O上有40分钟的视频来说明他是怎么工作的,链接在这里,讲的很清楚,在Linkedin上查到主讲人的头衔是”Tech Lead for the Android SDK at Google”。

你可以新建一个HelloWorld工程感性的认识一下Android Studio的使用。你肯定会在这个过程拿他和Eclipse做对比,很可惜的是,他们的目录结构不像AppCode和Xcode一样目录完全兼容可以相互无缝替换,不能直接import对方的工程,虽然现在Eclipse提供了功能可以把现有项目导出来再导入到Android Studio中,但是这个过程并不是无痛的,也会有些小问题,很麻烦;反过来,要把Android Studio中的项目导出来到Eclipse中,那就是纯属找事了。
阅读全文 »

不要太把学习当回事

于 2014年04月17日 发布在 未分类 6 条评论 »

还在上学的时候,每学一个新东西都要调研很久,比如说要学习新语言了,就会上各大论坛,搜各种社区的资料,比如对c++和java有兴趣,就会搜“我想学习新语言,c++和java哪个有前途?”,等考察了好长时间,终于决定了学习c++,就开始纠结着另外一个问题,“我想学习c++,是《c++编程思想》好还是《c++程序设计语言》好?”,最终决定了哪一本,开始看,一字一句不漏。耗费了很长时间在选择上,好像学习编程是一件轰轰烈烈的事情,等我一字一句弄懂书上的每一个细节,我就可以成为跟作者水平一样的高手。

其实大可不必,没必要把学习某个东西当成太大的事,精心调研精心准备,找一本书就可以动手了,你用来犹豫的时间完全可以完成某个技术的入门。就比如说你想做移动开发,不必纠结是android好还是iOS好,直接动手搭建开发环境,跑一个HelloWorld出来,看看他们各自的开发流程都是什么样子的,随便翻看一本相关的书籍,了解进阶时需要学习的东西。这样有感性的体验和对学习成本的估量之后,选择自然而然就有了。看的越重,走的越慢。

Launcher3的启动流程(二)

于 2014年04月10日 发布在 android开发 2 条评论 »

(系列文章点这里)

在启动流程的上一篇之中,Launcher的onCreate方法做了一些准备工作。下面就要LoaderTask上场了。

LoaderTask (1)

Activity.onCreate在接近结尾的地方调用了mModel的startLoader方法,他把LoaderTask对象放到了工作线程中。
阅读全文 »

细说ItemInfo

于 2014年03月28日 发布在 android开发 没有评论 »

(系列文章点这里)

要理解ItemInfo,就要先理解桌面有哪几种东西,即有哪几种Item。

  • 小工具:就是AppWidget,时钟小工具,天气小工具,等等。
  • 快捷方式:快速启动应用的图标,一个应用可以有多个重复的快捷方式,workspace和hotseat上的都是快捷方式
  • 文件夹:可以把多个快捷方式放到一块的,用来分类,减少屏幕空间占用。

这些东西都一些共同的,可以抽象出来的东西,有自己的宽度和高度,都有所在的位置和第几等等,而ItemInfo就是抽象出来的东西,打开ItemInfo.java,其中包含的就是这些特征,然而,最关键的是ItemInfo对象和数据库记录是一一对应的。其中有个id的成员,代表的就是数据库中ID。

对于不同的item,ItemInfo也有不同的子类,小工具对应的是LauncherAppWidgetInfo,他增加了小工具的信息(查android文档:AppWidgetProviderInfo);快捷方式对应的是ShortcutInfo,他增加了启动一个Activity所需的Intent信息;文件夹对应的是FolderInfo,他增加了文件夹是否打开的标签,文件夹内图标的信息等等。

ItemInfo的成员有几个值得说说:
阅读全文 »

Launcher3的启动流程(一)

于 2014年03月23日 发布在 android开发 7 条评论 »

(系列文章点这里)

Launcher3作为一个用户经常使用,常驻内容的应用,运行时维护着许多信息,而这些信息都需要在开机的时候加载完,今天就来分析下Launcher3是怎样一步一步启动的。

如果你手里还没有源码,请点击这里,编译并让他在你的手机上运行。然后打开Eclipse,一步步跟着走。

在启动Launcher这个Activity之前,先看下桌面的LauncherApplication吧,任何一个组件(Component)启动之前都会启动他的。代码只有寥寥几行。

LauncherAppState我们在上一篇博客里面说过,主要用来初始化对象,注册广播接收器等等,这些都在他的构造方法里面完成了。这里监听的广播有应用的安装、卸载和更新,SD卡上应用的可用或不可用,地区变化和配置变化等等。接收应用安装更新什么的广播,都是为了方便实时更新桌面上的图标,如果用豌豆荚安装了应用会在桌面上马上显示出来,这都是这些个广播接收器在发挥作用。需要注意的是贯穿始终的LauncherModel就是在这个构造方法里初始化的。

准备工作做好了,就开始启动Launcher Activity。Activity的启动从onCreate开始查找。
阅读全文 »

Launcher3中的常用类

于 2014年03月21日 发布在 android开发 一条评论 »

(系列文章点这里)

除了上一篇博客中布局需要用到的几个类,还有一些类是我们在代码中随时可能遇见的。

LauncherModel:从名字我们可以看出他跟数据有关系的,保存了桌面运行时的状态信息,也提供了读写数据库的API,他有一个内部类LoaderTask,桌面启动从数据库中读取数据并把图标和小工具添加上去的时候用的就是他。

BubblTextView:图标都是基于他,不过奇怪的是,他是继承自TextView,我之前一直以为是一个线性布局,上面放图片,下面放文字。

DragController:DragLayer只是一个ViewGroup,具体的拖拽的处理都放到了DragController中。

LauncherAppState:单例模式,主要在启动的时候用,他初始化了一些对象,并且注册了广播监听器和ContentObserver。

DragView:在拖动图标的时候跟随手指移动的View就是他。

DragSource,DropTarget:跟拖拽相关的接口,DragSource表示图标从哪里被拖出来,DropTarget表示图标可以被拖到哪里去。

Folder:文件夹打开时候那个view。

FolderIcon: 文件夹图标。

LauncherProvider:数据库类,Launcher3使用了SQLite,数据库文件保存在/data/data/包名/databases/launcher.db 下,有兴趣的同学可以把这个东西拷贝出来,用SQLite的工具看看里面都是怎么保存的。

ItemInfo:运行时保存了桌面上每个项目的信息,包括图标在第几屏,第几行第几列,高度宽度等信息,每一个ItemInfo对象都对应着数据库中的一条记录。在Launcher3源码路径下,会有很多以Info结尾的类,这些类都是ItemInfo的子类,具体代表了桌面上的某个项目。比如说FolderIcon和FolderInfo是对应的,BubbleTextView和ShortcutInfo是对应的,AppWidgetHostView和LauncherAppWidgetInfo是对应的。有了对应关系,可以这样通过view获取ItemInfo对象:

ItemInfo info = (ItemInfo)bubbletextview.getTag();

这样这里的info其实就是ShortcutInfo对象了。

之后我会专门写一篇讲解数据库、ItemInfo相关的博文,敬请期待

第 2 页,共 10 页12345...10...最旧 »