Android之场景桌面(一)
声明:转载请务必注明出处,本文代码和主题仅供学习交流,请勿用于商业用途。
引言:最近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之场景桌面(一)的更多相关文章
- android如何添加桌面图标和卸载程序后自动删除图标
android如何添加桌面图标和卸载程序后自动删除桌面图标,这是一个应用的安装与卸载过程对桌面图标的操作,下面与大家分享下具体是如何实现的,感兴趣的朋友可以参考下哈 1:创建图标如下 Intent i ...
- Android 点击桌面快捷方式和Notifycation跳转到Task栈顶Activity
我们一般下载的应用在第一次启动应用的时候都会给我创建一个桌面快捷方式,然后我在网上找了些资料整理下了,写了一个快捷方式的工具类,这样我们以后要创建快捷方式的时候直接拷贝这个类,里面提供了一些静态方法, ...
- android 点击桌面图标,打开手机浏览器进入对应的站点
做一个假的adnroid app.要实现点击桌面图标.打开手机浏览器进入对应的站点,实现方法非常easy import android.app.Activity; import android.con ...
- 【转】Android Studio开发应用桌面出现两个或多个图标
原文链接:http://blog.csdn.net/jia635/article/details/78259699 解决办法: 查找的是不是自己的AndroidManifest中 多个Activity ...
- Android AR场景拍照技术实现(有关键源代码)
ARVR技术交流群:129340649 欢迎增加. AR场景往往给别人留下的印象深刻,假设模型做的炫丽一点,效果将会更好. 那么怎样保存这一美好的情景呢?这篇文章将教你怎样实现AR场景的拍摄以及永久保 ...
- Android中的桌面快捷方式
一.判断是否已有快捷方式 private String getAuthorityFromPermission(Context context, String permission){ if (perm ...
- Ubuntu中给eclipse和android studio添加桌面快捷图标
Ubuntu 12.04 创建应用程序启动项(可在Unity LaucherPad显示) http://www.cnblogs.com/bluestorm/archive/2012/10/12/272 ...
- Android 如何去除桌面上下边框暗度逐渐变暗的效果
前言 欢迎大家我分享和推荐好用的代码段~~ 声明 欢迎转载,但请保留文章原始出处: CSDN:http://www.csdn.net ...
- Android 仿360桌面小人
首先自定义FloatsWindowView,用于显示动画小人. import android.annotation.SuppressLint; import android.content.Conte ...
随机推荐
- Delete it
Problem A: Delete it Time Limit: 2 Sec Memory Limit: 64 MB Submit: 99 Solved: 25 Description 克林在 ...
- [置顶] 应广大童鞋的要求提供一个封装模块,直接和ADB 服务进程交互
很多童鞋在用ADB 的时候都是直接启动ADB 的进程,然后通过管道的方式获取输出,这样多个线程同时使用ADB 的时候任务管理器一闪一闪的,是不是很不爽啊,原先介绍过可以直接和ADB 服务进程通信,不用 ...
- VC++ WIN32 sdk实现按钮自绘详解 之二(关键是BS_OWNERDRAW和WM_DRAWITEM)
网上找了很多,可只是给出代码,没有详细解释,不便初学者理解.我就抄回冷饭.把这个再拿出来说说. 实例图片: 首先建立一个标准的Win32 Application 工程.选择a simple Wi ...
- 关于如何解决谷歌Chrome浏览器空白页的问题
谷歌Chrome浏览器突然不打开任何网页,无论是任何站点(如http://www.baidu.com), 还是Chrome浏览器的设置页面(chrome://settings/), 扩展页面 ( ch ...
- KMP poj
题目来自:http://www.cnblogs.com/wuyiqi/archive/2012/01/06/2315188.html KMP算法开始是判断字符串b是否是字符串a的子串,朴素的算法是枚举 ...
- UVA 565 565 Pizza Anyone? (深搜 +位运算)
Pizza Anyone? You are responsible for ordering a large pizza for you and your friends. Each of th ...
- ios点击产生波纹效果
ios点击产生波纹效果 by 伍雪颖 - (void)viewDidLoad { [super viewDidLoad]; RippleView = [[UIView alloc] initWithF ...
- C语言字符串操作函数
1.函数名: stpcpy 功 能: 拷贝一个字符串到另一个 用 法: char *stpcpy(char *destin, char *source); 程序例: #include < ...
- CTreeCtrl结点拖动实现(与后台联动)
原帖及讨论:http://bbs.bccn.net/thread-211413-1-1.html 效果描述:鼠标点击并拖动某一结点可以把它以动到其他结点下.原理:把一个结点机器下面的所有结点在需要释放 ...
- 不用splitter控件 简单实现对mfc对话框的分割的方法
不用splitter控件 简单实现对mfc对话框的分割的方法 直接贴上源代码主要部分吧 这个是基于对话框的工程 进行对话框的分割实现 只是相应了三个消息函数,看一下就会明白的 我空间资源里边有现成的 ...