Android launcher3 开发初始篇

版本号:1.0

日期:2014.8.26 2014.8.27 2014.11.10

版权:© 2014 kince 转载注明出处

好久没有写博客,也是由于工作比較忙的关系。当然这不是理由,主要是非常多bug要改,而自己的效率又不是非常高。所以把非常多时间都浪费在修复bug上面了。闲话不多说,切入正题。

Launcher3是最新的google官方Launcher。相比Launcher2,它具有更加小巧、流畅、清新等特点。所以选择它作为研究的对象。第一步当然是去下载其源代码。git网址是:https://android.googlesource.com/platform/packages/apps/Launcher3/。

假设没有git工具。能够点击master。
刚好近期lollipop的Launcher源代码也更新了。和之前的Launcher3会有一些差别,只是不大,倒入过程大同小异。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2FuZ2ppbnl1NTAx/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" />

git下载:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2FuZ2ppbnl1NTAx/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" />

压缩包下载:

下载完后解压,文件夹例如以下:

接着导入eclipse。由于Launcher3的某些新特性。须要将build target设置为API level 19(不是必须,为了方便研究起见。Launcher3的源代码最低能够兼容大API16)。然后导入项目所依赖的类库,这个地方分为三种情况,一是导入v4包,手动加入一个libs文件夹,将v4包加进去。二是须要protocol buffers。到https://android.googlesource.com/platform/external/protobuf.git下载,最好打成jar包。然后放在libs文件夹下。

三是加入BackupProtos.java这个类。

能够从上一步中获取。英文好的朋友能够看一下以下的步骤:

Do it yourself

  1. Use Git to pull down the latest Launcher 3 source:

    git clone https://android.googlesource.com/platform/packages/apps/Launcher3

  2. Import existing code into Eclipse (Android Project from Existing Code)
  3. Change the project build target to API level 19
  4. Add Android support libraries
  5. Build protocol buffers JAR from AOSP source. You will actually need to build the protoc binary as well. You need to know how to use ‘make’ have gcc available for the protoc binary, and Maven for the JAR: https://android.googlesource.com/pla…l/protobuf.git
  6. Use protoc binary built from step above to generate the BackupProtos.java file:

    protoc –javanano_out=src/ -I protos protos/backup.proto

  7. Rename the Android package (Android Tools->Rename Application Package) to one of your choice
  8. Add min SDK in a new ‘uses-sdk’ element in AndroidManifest.xml (works down to API level 17 without too many complaints in Lint, obviously stick to 19 to play it safe).
  9. Clean and run. BIND APP WIDGETS error can be ignored

Fabio Lo Brutto:
https://plus.google.com/+FabioLoBrutto/posts/KJeyKMBHVT7

导完后的文件夹结构例如以下:



watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2FuZ2ppbnl1NTAx/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" />

假设想做一个自己的Launcher,那么须要把包名改一下。研究的话就没有必要了。

最后执行,截图例如以下:

关于Launcher最复杂的东西不在于怎样显示应用程序、Widget、文件夹等功能。而是自己定义View方面,由于基本上Launcher的View都是自己定义的。并且代码都非常多。理解起来不是那么简单。

所以说,假设把Launcher里面的自己定义的View掌握了,那么对Launcher也就基本掌握了。

因此,学习重点应该集中在自己定义View上。

今后会持续更新关于Launcher3开发方面的文章,在做Launcher开发的朋友能够一起交流。

时间: 2024-12-15 05:14:12

Android launcher3 开发初始篇的相关文章

Android应用开发提高篇(1)-----获取本地IP

链接地址:http://www.cnblogs.com/lknlfy/archive/2012/02/21/2361802.html 一.概述 习惯了Linux下的网络编程,在还没用智能机之前就一直想知道怎么得到手机的IP地址(玩智能机之前我是不搞手机应用的).好了,得知Android是基于Linux内核的,那么不就可以利用之前学的Linux下的网络编程方法来获取IP了吗?呵呵,其实这是比较底层的方法,在Android上,完全可以利用Java的API来实现,而且实现的代码非常简单.下面的实现只可

Android应用开发进阶篇-场景文字识别

由于研究生毕业项目需要完成一个基于移动终端的场景文字识别系统,虽然离毕业尚早,但出于兴趣的缘故,近一段抽时间完成了这样一套系统.基本的架构如下: 客户端:Android应用实现拍摄场景图片,大致划出感兴趣文字区域,通过socket通信上传服务器端识别; 服务器端:Python server进行socket通信监听,连通后调用文字识别引擎(exe可执行程序),将识别结果返回; 下面是系统运行示例图: 1. 客户端 包含两个Activity,: MainActivity主界面如上图左1,选择拍摄后调

Android JNI开发提高篇

有关JNI的开发技术,我们继续围绕Android平台进行,JNI可以支持C或C++,从目前为止我们写过的JNI代码均为C实现的,即文件名为.C而C++的和这些有什么不同呢? Android平台上的JNI一般使用C还是C++编写呢? Android平台在中间层和大部分的类库的底层使用了C++的开发方式,后缀为.cpp,比如Android Framework.OpenCore.Webkit.SQLite等等.使用C++好处就是可以使用很多库但目前Android不支持STL,我们知道C表示字符串都是字

Android应用开发基础篇(3)-----ListView

链接地址:http://www.cnblogs.com/lknlfy/archive/2012/02/16/2354625.html 一.概述 ListView是一个列表显示控件,它的应用非常广泛,在很多应用程序中都可以看到它的身影,比如来电通,网易新闻等等,特别是QQ.因此非常有必要熟练掌握它. 二.要求 能够利用ListView显示一些内容,如数据.文本,某一行被点击时有相应的提示:能够实现简单的ListView的动态插入和删除. 三.实现 新建工程MyListView,修改/res/lay

Android launcher3 开发环境搭建

版本:1.0 日期:2014.8.26 2014.8.27 2014.11.10 版权:© 2014 kince 转载注明出处 好久没有写博客,也是因为工作比较忙的关系.当然这不是理由,主要是很多bug要改,而自己的效率又不是很高,所以把很多时间都浪费在修复bug上面了.闲话不多说,切入正题. Launcher3是最新的google官方Launcher,相比Launcher2,它具有更加小巧.流畅.清新等特点,所以选择它作为研究的对象.第一步当然是去下载其源码,git网址是:https://an

Android应用开发基础篇(12)-----Socket通信(转载)

转自:http://www.devdiv.com/android_socket_-blog-258060-10594.html 一.概述 网络通信无论在手机还是其他设备上都应用得非常广泛,因此掌握网络编程是非常有必要的,而我觉得socket编程是网络编程的基础.在进入正题之前,先介 绍几点网络知识,一:socket编程有分TCP和UDP两种,TCP是基于连接的,而UDP是无连接的:二:一个TCP连接包括了输入和输出两条独立的 路径:三:服务器必须先运行然后客户端才能与它进行通信.四:客户端与服务

Android应用开发基础篇(12)-----Socket通信

链接地址:http://www.cnblogs.com/lknlfy/archive/2012/03/03/2378669.html 一.概述 网络通信无论在手机还是其他设备上都应用得非常广泛,因此掌握网络编程是非常有必要的,而我觉得socket编程是网络编程的基础.在进入正题之前,先介绍几点网络知识,一:socket编程有分TCP和UDP两种,TCP是基于连接的,而UDP是无连接的:二:一个TCP连接包括了输入和输出两条独立的路径:三:服务器必须先运行然后客户端才能与它进行通信.四:客户端与服

Android应用开发基础篇(4)-----TabHost(选项卡)

链接地址:http://www.cnblogs.com/lknlfy/archive/2012/02/18/2357093.html 一.概述 TabHost是一种用来显示标签的组件,不清楚?看一下来电通这个应用就知道了.这个组件用起来与其他组件不太一样,它需要继承TabActivity这个类,还有它的布局文件与我们平时用的也有些不一样. 二.要求 实现一个具有三个标签的选项卡,每个标签使用不同的布局作为内容,当切换不同的标签时向用户发出提示. 三.实现      声明:这个应用需要用到前面一篇

Android应用开发实例篇(1)-----简易涂鸦板

链接地址:http://www.cnblogs.com/lknlfy/archive/2012/03/03/2378328.html 一.概述 这次要做一个简单的涂鸦板应用,以前在Qt上实现过,突然想到要把它在Android上实现,呵呵,既简单又有趣. 二.实现 新建工程MyWall,修改/res/layout/main.xml文件,在里面添加一个SurfaceView和两个Button,用到了RelativeLayout布局,完整的main.xml文件如下: 1 <?xml version=&qu