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

引言:最近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. Canny边缘检測算法原理及其VC实现具体解释(一)

    图象的边缘是指图象局部区域亮度变化显著的部分,该区域的灰度剖面一般能够看作是一个阶跃,既从一个灰度值在非常小的缓冲区域内急剧变化到还有一个灰度相差较大的灰度值.图象的边缘部分集中了图象的大部分信息,图 ...

  2. 如果一个Object对象可能是数组那么如何对其进行迭代

    需求:一个方法传入的参数是Object类型(假设对象为“items”,使用Object类型也是为了使用多态而增加方法复用性),但已知这个Object对象可能是基本类型数组,也可能是对象数组,如何将这个 ...

  3. 深入理解Arrays.sort() (转)

    Arrays.sort(T[], Comparator < ? super T > c) 方法用于对象数组按用户自定义规则排序.官方Java文档只是简要描述此方法的作用,并未进行详细的介绍 ...

  4. 我是如何同时拿到阿里和腾讯offer的

    前言 三月真是一个忙碌的季节,刚刚开学就需要准备各种面试和笔试(鄙视).幸运的是,在长达一个月的面试内推季之后,终于同时拿到了阿里和腾讯的offer,还是挺开心的.突而想起久未更新的博客,就冒昧学一学 ...

  5. Delphi图像处理 -- 最大值

    阅读提示:     <Delphi图像处理>系列以效率为侧重点,一般代码为PASCAL,核心代码采用BASM.     <C++图像处理>系列以代码清晰,可读性为主,全部使用C ...

  6. mysql基础:mysql列类型--时间和日期

    mysql列类型--整型 http://blog.csdn.net/jk110333/article/details/9342283 mysql列类型--字符串http://blog.csdn.net ...

  7. PowerDesigner反projectM连接ySql没有mySql odbc驱动器

    PowerDesignerfang反project连接MySql没有mySql odbc驱动器 需要安装 MySql ODBC驱动器.百度下载mysql-connector-odbc-5.3.4-wi ...

  8. TPL异步并行编程之取消任务

    TPL异步并行编程之简单使用 在上篇随笔里面说明了Task的使用,仅仅是简单使用,有时候把一个任务交给Task去执行,但是呢还是要管理下,比如说:我要叫这个任务停止了,不做了,任务取消了,或者超时了 ...

  9. [置顶] head first 设计模式之----Observer pattern

    浅谈设计模式之----观察者模式      观察者模式也是我们日常程序编写中碰到比较多的一种设计模式.首先,所谓观察者模式定义就是指:在对象之间定义了一对多的依赖,这样一来,当一个对象的状态发生变化的 ...

  10. eclipse如何查看类之间的引用关系

    今天遇到这个问题:mark一点点: 在类名上单击右键.选择Reference->Workingspace快捷克债券Ctrl+Shift+G 版权声明:本文博客原创文章,博客,未经同意,不得转载.