前言:从毕业到现在已经三年多了,回忆一下这三年基本上没有写过博客,总是觉得忙,没时间写,也觉得写博客没什么大用。但是看到很多大牛们都在写博客,分享自己的东西,所以嘛本着向大牛看齐,分享第一,记录第二的目的开始写一个系列的文章,我会把我做一个项目的详细过程分享给大家,供大家参考和交流。好了,评书开讲!

可能大家做Android机顶盒或者Android电视开发的比较少,这类开发基本上都是基于源码的开发,大家有一个git版本库,大家开发完了编译出来一个版本烧到板子上跑,要编译肯定就要编译环境什么的,google推荐的是在Ubuntu系统上搭建开发和编译环境。

首先要做的事情是环境搭建:

  1. 大家可以装双系统或者用Oracle VM VirtualBox在Windows上安装Ubuntu。安装双系统我这里就不说了,大家可以去网上查一下,这里有一个链接大家可以参考:点击打开链接
  2. 在Windows环境下通过Oracle VM VirtualBox安装Ubuntu请参考:点击打开链接
    我这说一下注意事项:
    (1).必须是Windows7,如果是Windows8可能会出现意想不到的事情,总之就是不想遇到麻烦就用Windows7。
    (2).分配虚拟磁盘空间的时候至少要分配30G,因为你要下载android-sdk就会用上十几G,你要是再下载源码那你至少要分60G的空间。
    (3).安装完系统后一定要安装增强插件,否则窗口无法全屏,安装方法如下图:

    点击红色箭头所指位置,然后在弹出框输入用户密码确认安装,安装完毕重启就可以全屏了。
  3. 配置开发环境:
    (1).配置adb:
    去官网下载android-sdk-linux,下载地址是:http://dl.google.com/android/ + 不同版本的sdk
    例如:下载r20版本
    r20的linux版本:http://dl.google.com/android/android-sdk_r20-linux.tgz
    r20的windows版本:http://dl.google.com/android/android-sdk_r20-windows.zip
    r20的mac版本:http://dl.google.com/android/android-sdk_r20-macosx.zip
    把上面下载的sdk解压到一个目录,比如说是~/software/目录,
    终端执行:sudo gedit ~/.bashrc  
    在最后添加如下内容:
    #set path for android sdk tools
    exportPATH=$PATH:/home/leo/software/android-sdk-linux/tools
    export PATH=$PATH:/home/wuhao/software/android-sdk-linux/platform-tools/
    (2).配置java环境:
    去官网:点击打开链接下载对应版本的jdk,我的是64位系统,所以下载:jdk-7u75-linux-x64.tar.gz
    sudo mkdir  /usr/lib/jvm/
    cd /usr/lib/jvm/
    cp  ~/software/jdk-7u75-linux-x64.tar.gz   ./      
    sudo tar -vxzf  jdk-7u75-linux-x64.tar.gz
    把环境变量配置在用户目录.bashrc文件中是最好的选择,在bashrc里添加:
    sudo gedit ~/.bashrc
    #set java environment
    #JAVA_HOME=/usr/lib/jvm/jdk1.7.0_75
    export JRE_HOME=/usr/lib/jvm/jdk1.7.0_75/jre
    export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
    export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
    重启生效或者source .bashrc生效
    (3).剩下的就是IDE下载和配置了,你可以选用Eclipse或者Android Studio。

Launcher设计

在电视或者机顶盒上做UI开发,首先要考虑电视尺寸都比较大,你的UI展现要能够在电视屏幕上看着大小合适,展现的简洁舒服,别像原生Launcher那样好多小图标看着密密麻麻的,第二个是要方便遥控器操作,焦点导航显示正确,因为你不可能给机顶盒外接一个鼠标模仿触摸操作,那样太不方便。所以大家都会想到类似Windows 8的那种风格。设计大概像是下面的图:
 
产品要求:
(1)在显示第一屏的时候第二屏要在屏幕右侧有一部分显示,并且是缩小显示,在page二显示的时候page一在左侧缩小显示一部分,page三部分显示,page之间切换流畅,图标放大缩小流畅。
(2)在每一个图标上焦点的时候要放大显示,图标周围有阴影或者焦点框之类的突出显示出来,丢焦点的时候还原为正常显示。
(3)图标对应的应用链接可以在xml文件配置。
(4)page个数可以配置,可以通过简单的修改参数去掉某个page。
拿到上面的产品需求你会怎么做呢?我是作如下考虑的:
(1)第一个需求我想到了ViewPager、viewflipper,这两个可以做到page之间切换流畅。
(2)每一个图标抽象出来做成一个View,放大缩小用属性动画可以做到,对应的View xml文件可以自定义属性完成应用链接配置。
(3)灵活添加,删除page需要好好考虑一下代码实现。
 
哎呀,好累,一个周六几个小时就这么过去了,套用《框框日记》里面框框经常说的一句话“多么有意义的一天呀!”。
以上就是我Launcher Metro风格实现的第一篇博文,简单描述了环境配置和设计思路,写的有不足之处还请各位多多包涵和交流,具体代码实现我会在我的下一篇博文中进行讲解,请多多关注!
 

第一时间获得博客更新提醒,以及更多技术信息分享,欢迎关注个人微信公众平台:程序员互动联盟(coder_online)

1.第一时间获得业内十多个领域的原创技术文章

2.对于文章内有疑问可以立即提出问题,第一时间得到回复,以及耐心的解答。

3.可以和原创文章作者成为很好的朋友,拓展自己的人脉资源。

扫一扫下方二维码或搜索微信号coder_online即可关注,我们可以在线交流。

Android Metro风格的Launcher开发系列第一篇的更多相关文章

  1. [转载] Android Metro风格的Launcher开发系列第一篇

    前言:从毕业到现在已经三年多了,回忆一下这三年基本上没有写过博客,总是觉得忙,没时间写,也觉得写博客没什么大用.但是看到很多大牛们都在写博客,分享自己的东西,所以嘛本着向大牛看齐,分享第一,记录第二的 ...

  2. 【转载】Android Metro风格的Launcher开发系列第二篇

    前言: 各位小伙伴们请原谅我隔了这么久才开始写这一系列的第二篇博客,没办法忙新产品发布,好了废话不说了,先回顾一下:在我的上一篇博客Android Metro风格的Launcher开发系列第一篇写了如 ...

  3. Android Metro风格的Launcher开发系列第二篇

    前言: 各位小伙伴们请原谅我隔了这么久才开始写这一系列的第二篇博客,没办法忙新产品发布,好了废话不说了,先回顾一下:在我的上一篇博客http://www.cnblogs.com/2010wuhao/p ...

  4. Android Metro风格的Launcher开发系列第三篇

    前言: 各位小伙伴,又到了每周更新文章了时候了,本来是周日能发出来呢,这不是赶上清明节吗,女王大人发话了,清明节前两天半陪她玩,只留给我周一下午半天时间写博客,哪里有女王哪里就有压迫呀有木有!好了闲话 ...

  5. Android设计和开发系列第一篇:Notifications通知(Develop—API Guides)

    Notifications IN THIS DOCUMENT Design Considerations Creating a Notification Required notification c ...

  6. Android设计和开发系列第一篇:Notifications通知(Develop—Training)

    Develop篇 Building a Notification PREVIOUSNEXT THIS LESSON TEACHES YOU TO Create a Notification Build ...

  7. Android设计和开发系列第一篇:Notifications通知(Design)

    Design篇 Notifications The notification system allows users to keep informed about relevant and timel ...

  8. 任务驱动,Winform VS WEB对比式学习.NET开发系列第一篇------身份证解析(不断更新的WEB版本及Winform版本源码)

    一 本系列培训随笔适用人群 1. 软件开发初学者 2. 有志于转向Web开发的Winform程序员 3. 想了解桌面应用开发的Web程序员 二 高效学习编程的办法 1 任务驱动方式学习软件开发 大部分 ...

  9. 【转载】chromium浏览器开发系列第一篇:如何获取最新chromium源码

    背景:     最近摊上一个事儿,领导非要让写一篇技术文章,思来想去,自己接触chrome浏览器时间也不短了,干脆就总结一下吧.于是乎,本文顺理成章.由于有些细节必需描述清楚,所以这次先讲如何拿到ch ...

随机推荐

  1. dynamic调用时报RuntimeBinderException:“object”未包含“xxx”的定义 错误

    情况如下:两个项目项目A命名空间 Test.PA   匿名类型所在 项目B命名空间 Test.PB 在Test.PB 中通过dynamic关键字调用Test.PA中匿名类型时报上述错误 解决办法 在项 ...

  2. windows环境下mysql忘记密码如何重置

    本文主要是针对mysql重置密码过程中出现“mysqld不是内部命令或外部命令”的问题而写的.网上有很多关于mysql忘记密码了如何找回的文章,但是很多说的都不够详细,特别是还要用到DOS命令,可能这 ...

  3. SpringMVC日期参数自动绑定

    Controller: @RequestMapping("/addUser") public String addUser(User user) { ... } Model: pu ...

  4. [OC Foundation框架 - 1] 常用结构体

    底层封装是使用了typedef定义的结构体 typedef struct _NSString{ xxx xxx } NSString;   1. NSRange 结构体 #注意结构体不是对象 3种定义 ...

  5. Windows下环境变量配置

    JAVA_HOME=C:\Program Files\Java\jdk1.6.0_33   PATH+=%JAVA_HOME%\bin;   CLASSPATH=.;%JAVA_HOME%\lib\d ...

  6. 【Stage3D学习笔记续】山寨Starling(十二):总结和一些没提到的东西

    我们的山寨Starling到这里就告一段落了,不得不说这是一个非常优秀的2D框架,他的设计和架构为后来的许多框架都提供了很好的参考,比如现在正在崛起的Egret,我们的一番解读也只是窥见了Starli ...

  7. Objective-C中的Block(闭包) (轉載)

    来源: 伯乐在线 - 青玉伏案 链接:http://ios.jobbole.com/83229/ 学习OC有接触到一个新词Block(个人感觉又是一个牛气冲天的词),但不是新的概念,不是新的东西.学过 ...

  8. 【转】解决HttpServletResponse输出的中文乱码问题

    http://blog.csdn.net/simon_1/article/details/9092747 首先,response返回有两种,一种是字节流outputstream,一种是字符流print ...

  9. 导出cluster log

    将所有群集节点的日志导出到 clog 目录下: get-clusterlog -destination c:\clog 只导出前10分钟的群集日志: get-cluster -destination ...

  10. ios项目不能再用UDID了

    今天更新项目时,出现 Apps are note permitted to access the UDID and must not use the uniqueIdentifier method o ...