声明:转载请务必注明出处,本文代码和主题仅供学习交流,请勿用于商业用途。

引言:最近Android场景桌面开始流行起来了,跟原始的Android桌面相比,场景桌面能逼真的模拟各种自然物体,并且通过点击这些自然物体能进入对应的应用,这大大的丰富、美观了我们心爱的手机桌面,偶尔体验一下,也不枉是一种享受。但这享受的前提是:这个场景桌面必须非常稳定、流畅、主题丰富等。因此,作为开发者而言,任重而道远啊。。。

好了,废话不多说,进入正题,下面我就站在个人开发者的角度,简单的模仿和分析一下场景桌面的设计流程,后续系列文章再为大家详细分解各个模块的功能和实现,敬请期待。首先,还是先来看看效果吧!无图无真相是吧?呵呵~下面两张图片,是两个主题对应的桌面。

  

正文分析:如上图所示,简单的场景桌面大概有3、4页主背景(具体由主题而定),可左右滑动,每个背景页上摆放着各种拟物化的应用小图标,同时为了使桌面"动"起来,我们可在一些小图标中加入动画,比如说上图一中粉色的小浣熊拿着照相机在闪闪光灯,也许你就想到,点击这个相机应该是进入到相机应用了,而且会使桌面更加灵活生动。

从界面方面,我们就只能分析到这里了,下面我们从代码方面作一下简单分析,我们先来看看代码结构:

从代码结构中,我们就知道,这是一个很简单的应用,总共才4个包:

①.com.way.bean:应该不用多说,学过Java的都知道,我这里只有一个类,从安卓原生的Launcher中移植过来的,即应用信息ApplicationInfo.java。

②.com.way.launcher:这里放Application和Activity等类,属于应用的核心部分了,其实主体思路和架构也是来自原生Launcher,只是为了切换我们的需求,改成对应的了。

③.com.way.util:这里放的是工具类,主要是解析xml文件的工具类,为了让我们的桌面能使用各种主题,我们就会很轻易的想到使用xml文件作配置,比如assets目录下的scene_layout.xml文件,就是对应主题的所有配置:桌面背景页、每一页对应的应用图标坐标值、每个应用图标对应的入口、还有某些特定图标的动画等。我们通过解析这个文件,就可以把对应主题drawable目录下的图片准确无误的显示在用户的桌面上。

④.com.way.view:这个包下放了所有我们需要用到的自定义View,本代码中所有自定义View均在来自Android原生系统framework下、原生Launcher应用以及一些开源项目。比如说AnalogClock.java、NumberClock.java等来自framework下,PagedView.java、PagedViewCellLayout.java等来自原生Launcher,PageIndicator.java、TitlePageIndicator.java来自开源项目。所以说,其实做Android项目基本上就是Ctrl+c、Ctrl+v了,真正我写的自定义View就是SceneImageView.java和PagedViewIcon.java,主要是实现了点击图片变暗的点击效果。

⑤.assets目录:这个目录下放的是一套默认的主题,虽然我们的应用支持更换主题,但是,主题资源必须放在SD卡根目录下的,需要单独下载,因为内置在应用中是相当不明智的,会造成编译出来的apk相当大。而且有的用户不一定每个主题都喜欢,所以,为了能够使用更多主题,单独存放主题资源是相当有必要的。

接下来的res目录等,我就不具体分析了,相信做过Android开发的朋友都能看懂。

OK,场景桌面粗略分析就到这里了,欲知后事如何,请听下回分解,O(∩_∩)O哈哈~

源代码奉上:http://download.csdn.net/detail/weidi1989/6197113

7个主题打包奉上:http://download.csdn.net/detail/weidi1989/6197099

(注意:①.本代码为utf-8编码,基于eclipse工程打包,支持3.0以上手机运行,如遇奇葩问题,请留言。

②.本主题为适配480x800手机设计,大屏或小屏手机可能会出现不适配情况,接口也均仅适应本手机,如遇点击应用图标提示未安装此应用,需要更改scene_layout.xml文件中的接口,后续将详细讲解。

③.主题包中有一篇主题设计规范文档,供有兴趣的朋友设计更多的主题,也欢迎有新主题邮件我,3Q。

④.本代码和主题资源仅供学习交流,请勿用于商业用途,否则后果自负。

)

Android之场景桌面(一)的更多相关文章

  1. android如何添加桌面图标和卸载程序后自动删除图标

    android如何添加桌面图标和卸载程序后自动删除桌面图标,这是一个应用的安装与卸载过程对桌面图标的操作,下面与大家分享下具体是如何实现的,感兴趣的朋友可以参考下哈 1:创建图标如下 Intent i ...

  2. Android 点击桌面快捷方式和Notifycation跳转到Task栈顶Activity

    我们一般下载的应用在第一次启动应用的时候都会给我创建一个桌面快捷方式,然后我在网上找了些资料整理下了,写了一个快捷方式的工具类,这样我们以后要创建快捷方式的时候直接拷贝这个类,里面提供了一些静态方法, ...

  3. android 点击桌面图标,打开手机浏览器进入对应的站点

    做一个假的adnroid app.要实现点击桌面图标.打开手机浏览器进入对应的站点,实现方法非常easy import android.app.Activity; import android.con ...

  4. 【转】Android Studio开发应用桌面出现两个或多个图标

    原文链接:http://blog.csdn.net/jia635/article/details/78259699 解决办法: 查找的是不是自己的AndroidManifest中 多个Activity ...

  5. Android AR场景拍照技术实现(有关键源代码)

    ARVR技术交流群:129340649 欢迎增加. AR场景往往给别人留下的印象深刻,假设模型做的炫丽一点,效果将会更好. 那么怎样保存这一美好的情景呢?这篇文章将教你怎样实现AR场景的拍摄以及永久保 ...

  6. Android中的桌面快捷方式

    一.判断是否已有快捷方式 private String getAuthorityFromPermission(Context context, String permission){ if (perm ...

  7. Ubuntu中给eclipse和android studio添加桌面快捷图标

    Ubuntu 12.04 创建应用程序启动项(可在Unity LaucherPad显示) http://www.cnblogs.com/bluestorm/archive/2012/10/12/272 ...

  8. Android 如何去除桌面上下边框暗度逐渐变暗的效果

    前言          欢迎大家我分享和推荐好用的代码段~~ 声明          欢迎转载,但请保留文章原始出处:          CSDN:http://www.csdn.net        ...

  9. Android 仿360桌面小人

    首先自定义FloatsWindowView,用于显示动画小人. import android.annotation.SuppressLint; import android.content.Conte ...

随机推荐

  1. AngelHack China 2013 招组队成员

    AngelHack China 2013 connect me

  2. swift-var/let定义变量和常量

    // Playground - noun: a place where people can play import UIKit //--------------------------------- ...

  3. Vanya and Lanterns

    Description Vanya walks late at night along a straight street of length l, lit by n lanterns. Consid ...

  4. 自绘XP风格菜单

    这是以前写的代码,自绘XP风格的菜单,硬盘坏了后以为没了,最后写的一个软件要自定义风格,“翻箱倒柜”的终于在我可爱的古董机^_^上找到了一个应用的例子.还是把它放到Blog上来,即可共享又可作为备用 ...

  5. gaoyong的干货

    http://blog.163.com/you888@188/blog/static/6723961920169319529515/    1.xe6安卓编程入门教程,一本很好的资料,全是干货,书印刷 ...

  6. Android自学绝佳资料

    本文转自stormzhang老师的博客:http://stormzhang.com/android/2014/07/07/learn-android-from-rookie 首先感谢stromzhan ...

  7. JavaScript移除数组元素

    //数组移除长度方法 var array=[]; array[0]="张三"; array[1]="李四"; array[2]="王五"; ...

  8. Swift - 创建代理协议实现页面间参数传递和方法调用

    在开发中,经常需要用到协议代理模式.比如,进入编辑页面修改数据后,将新数据回传到主界面. 下面通过一个样例来说明协议代理模式,功能如下: 1,主页面有一个标签和一个修改按钮,点击修改按钮会跳转到编辑页 ...

  9. Codeforces 39E What Has Dirichlet Got to Do with That? 游戏+内存搜索

    主题链接:点击打开链接 意甲冠军: 特定 a一箱 b球 不变n (球和箱子都不尽相同,样的物品) 设 way = 把b个球放到a个箱子中的方法数, 若way >= n则游戏结束 有2个人玩游戏. ...

  10. 当try和finally里都有return时,会忽略try的return,而使用finally的return

    今天去逛论坛 时发现了一个很有趣的问题: 谁能给我我解释一下这段程序的结果为什么是:2.而不是:3 代码如下: class Test { public int aaa() { int x = 1; t ...