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

引言:最近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. 六款常用的linux C/C++ IDE

    摘要: 一.AnjutaAnjuta是一个多语言的IDE,它最大的特色是灵活,同时打开多个文件,内嵌代码级的调试器(调用gdb),应用程序向导(Application wizards)可以方便的帮助你 ...

  2. 例解 autoconf 和 automake 生成 Makefile 文件

    本文介绍了在 linux 系统中,通过 Gnu autoconf 和 automake 生成 Makefile 的方法.主要探讨了生成 Makefile 的来龙去脉及其机理,接着详细介绍了配置 Con ...

  3. Swift - 一步步教你使用SpriteKit创建开发游戏项目

    一,什么是SpriteKit SpriteKit是苹果公司官方出品,用于制作2D游戏的框架.这个框架具备了图形渲染和动画的功能.可以使图像或者精灵(sprite)动 起来.SpriteKit的渲染方式 ...

  4. Linux账号管理(二)

    再次声明,整理此系列Linux博客,主要目的不是介绍各种命令,而是去探索命令背后的理论. 本篇主要介绍用户的创建与删除. 创建用户主要用到useradd命令,在用此命令时可以指定各种参数.一般默认就可 ...

  5. Eclipse + PyDev 无法导入模块

    下载后的包,在python IDLE 都可以导入这些模块,但是在Eclipse里面需要我们自己添加路径 需要导入的模块,在那个路径下,就在这里添加路径即可,其他的同理.

  6. Q10Ⅱ 双核 - 产品中心 - 海美迪

    海美迪Q系列视频文明书 Q10Ⅱ 双核 - 产品中心 - 海美迪

  7. Java中ArrayList和LinkedList差别

    一般大家都知道ArrayList和LinkedList的大致差别: 1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构.  2.对于随机訪问get和set.A ...

  8. Android 3d云标签

    watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbWluZ3l1ZV8xMTI4/font/5a6L5L2T/fontsize/400/fill/I0JBQk ...

  9. 【Dev Club 分享】腾讯验证码的十二年

    源:http://mp.weixin.qq.com/s?__biz=MzA3NTYzODYzMg==&mid=2653578147&idx=3&sn=94a8f8f8b4a23 ...

  10. [Android学习笔记]try-catch

    private boolean test() { boolean result = true; String str = null; try { Log.d("test",&quo ...