墨香带你学Launcher之(二)- 数据加载流程
上一篇墨香带你学Launcher之(一)- 概述,我已经介绍了Launcher的布局以及相关的界面跳转,今天我们继续学习,按照计划,我们开始学习Launcher启动之数据加载,主要是图标、Widget和文件夹的加载.
1.基础知识
在介绍加载之前我先介绍一点需要用的相关知识:
Launcher:继承Activity,是桌面的主界面,因此可知,桌面其实就是一个activity,只是和平常的应用不同,他用来显示图标、Widget和文件夹等;
LauncherModel:继承BroadcastReceiver,由此可知他是一个广播接收器,用来接收广播,另外,LauncherModel还主要加载数据;
LauncherProvider:继承ContentProvider,主要是处理数据库操作;
LauncherAppState:单例模式的全局管理类,主要是初始化一些对象,注册广播等.
Compat:兼容包,带有这个后缀的都是做兼容处理的类.
2.默认图标配置
我们在买回新的手机或者第一次安装新的Launcher后,会发现手机的第一页已经有了一些应用的图标和时钟或者天气插件 ...
墨香带你学Launcher之(一)- 概述
从事launcher开发也有一年有余了,虽然时间比较长了,但是由于是团队开发,其他任务也比较多,所以一直对整个项目的完整情况没有很好的了解,今年换了新的公司,依然是做launcher开发,从新搭建工程,因此借助这个机会完整的学习一下launcher的源码,由于之前没有完全接入,因此也没有做详细的笔记,这次从头参与项目开发,也正好做一下详细的笔记和知识梳理,由于公司项目商业性,为避免泄露公司项目内容,因此本系列教程只做双层launcher的详解,后续会教大家来定制自己的launcher。
桌面使用操作
说到launcher,大家也不会陌生,launcher其实就是一个app,从功能上说,是对手机上其他app的一个管理和启动,从代码上说比其他app多了一个属性,就是在AndroidManifest.xml文件中多了一个“”属性,这个属性就是在启动系统或者按Home键时会过滤这个属性,如果系统中只要一个应用具有这个属性,就会直接跳转到这个界面,也就是这个launcher,如果有多个,会弹出选择框让用户选择并且提示用户是否选择默认设置。
首先我们看一下我运行好的launcher效果图, ...
Android、iOS、Mac开源项目推荐
很多新手(包括我在内)在写项目的时候不知道项目框架如何搭建,很多时候计划的很好,但是随着项目大额增大,最后还是写的一塌糊涂,没有条理,结构很烂,导致我们项目问题不断,最近一直总结这个原因,其实是我们脑袋里没有这些东西,没有这些逻辑结构,缺乏框架的思维,对于我们这些经验比较少的,如果想提高,前期要去模仿,这样让自己熟悉人家写代码的框架,熟悉各种框架之后我们大脑中的这些思维就会存在,才能写出好的项目结构。
为了帮助大家能够学习一些好的项目经验,本篇文章给大家介绍一些国内外的比较好的开源项目,让大家有一个好的学习目标。希望对大家有帮助,以后找到更多开源项目也会不断添加。
Android==================================& ...
Android适配浅析
应朋友之邀,介绍一下关于Android适配的问题。
做launcher一年了,最多的就是适配,各种分辨各种尺寸的手机,会出现很多问题,今天就借这个机会总结一下,不一定全面,只是根据自己遇到的情况进行总结。
适配主要包括布局适配,语言适配,还有功能适配。我们遇到做多的就是布局适配问题,其实语言适配问题也主要是影响布局适配,功能适配主要是针对不同厂商出的rom不同导致一些功能调用有所差异,比如相机调用等。
布局适配
要想做好布局适配,首先你要了解几大布局控件的属性和详细使用方法,如果你不了解他的特性就会使用混乱,导致很多问题,布局显示不到位,嵌套太多,导致性能下降等,当然本文不涉及性能问题,只讲适配问题。
在布局适配中我们会总结出一些原则:左右边距统一原则,居中原则,右对齐原则,左对齐原则,均分原则。
1.左右边距统一原则:我在项目开发中,遇到过很多次,同一个应用不同页面边距各不相同,这样在我们切换页面时会发现也没的显示跳动,很不美观,这就是我们设计问题。为了美观,方便观看,应用的内容和手机边框都会有一定的距离,有一些新设计者不注重这个问题,导致同一个界面左右边距不同,同一个应用不同页面 ...
Gradle下导入framework.jar
最近公司项目在做launcher,设计过程中与系统设计到了对接,需要实现一些官方没有的功能,就需要在系统层添加一些接口,然而官方的sdk中没有这些接口,需要导入framework.jar,在eclipse或者idea中都是可以将framwork包放在android.jar前面编译的,但是在gradle中却不支持之前的做法,查了很多资料,都没有找到合适的方案,在最近有朋友提醒的情况下研究出了相关问题,需要在项目根目录下的gradle.build中配置下面信息:
12345678910111213141516171819allprojects { gradle.projectsEvaluated { tasks.withType(JavaCompile) { //放在项目的根目录下 options.compilerArgs.add('-Xbootclasspath/p:framework-x5057.jar') //放在项目app的lib文件夹下// ...
高效Mac(三)面向程序员的交互设计神器:Framer Studio
最近程序开发,对公司设计的交互原型很是感兴趣,但那些工具开发出的交互原型真的无法忍受,就想找一款能搞真是模拟软件的交互工具,功夫不负有心人,终于找到一款非常完美的交互设计工具,相对其他工具来说学习成本较高,但是对于会代码的人来说相对简单,也很有意思,搞了一天还没完全搞定,但是还是忍不住先介绍出来让大家尝尝鲜,下面进入正题。
软件名称:Framer studio
该软件为Mac平台的移动交互原型设计工具,该软件的出现为移动交互设计领域增添了又一款强有力的生产力工具,是由Framer.js建立,一个快速原型技术的开放源码框架。Framer 允许您定义动画和交互作用,在移动设备上运行。
通过该软件,设计师可以快速导入Photoshop或者Sketch里的设计图导入进来,并且该软件具有强大的动画编辑能力,可以快速简单的添加个中动画,使你的交互原型设计更形象。
很不幸,该软件目前只有Mac版本,而且价钱不菲,价值人民币800多元,有钱的朋友可以出手,没钱的朋友要想办法了。
1.欢迎界面:
中间有四个图片,分别有名称:Animate,Drag,Scroll和Page,分别表示动画,拖拽, ...
Android 知识梳理
说明:本篇博客只是一个知识整理,因为网上对于Android的知识介绍足够多,因此我不再写相关文章(主要是因为我写的不如人家好),所以所有文章均来自网络,不贴原文章,只提供连接,因此本文旨在减少你对相关知识的搜索过程,方便查找相关知识。
1.Activity
Activity的生命周期,正常结束和非正常销毁的生命周期和调用函数及其使用方法;
Android Training - 详解Activity生命周期(Lesson 1 - 启动与销毁Activity)
Android Training - 详解Activity生命周期(Lesson 2 - 暂停与恢复activity)
Android Training - 详解Activity生命周期(Lesson 3 - 停止与重启activity)
Android Training - 详解Activity生命周期(Lesson 4 - 重新创建销毁的activity)
Android开发之InstanceState详解
Activity启动模式
Activity启动模式图文详解:standard, single ...
Understand:高效代码静态分析神器详解(一)
之前用Windows系统,一直用source insight查看代码非常方便,但是年前换到mac下面,虽说很多东西都方便了,但是却没有了静态代码分析工具,很幸运,前段时间找到一款比source insight软件还强大的代码静态分析工具,堪称神器–Understand。这款软件具有强大的代码静态分析功能,并且可以绘制各种流程图。另外,Understand拥有Windows版本、mac版本和Linux版本,所以在这三种系统任何一个下面都可以使用。
因为工作太忙,还没有时间详细的研究一下使用方法,只是简单的了解了一下,由于该软件可以帮助你快速的分析代码结构流程,因此我提前分享给大家,希望和大家一起研究,共同学习,下面我针对这个软件做个初步讲解,后续会出详细讲解,由于软件是全英文的所以有问题的地方望大家指出,我会及时更正。
由于安装很简单,在此就不说了,直接进入工程配置讲解。
导入项目导入项目有两种方法,一种是从菜单栏点击File–>New–>Project,另一种是点击下面界面中间的New Project
点击后,会进入到如下界面,你可以更改项目名称为你要导入的项目名称, ...
Android代码推荐(一)
作为第一篇Android代码推荐,先给大家推荐一些很炫的特效代码,让大家增加点开发兴趣。首先介绍一个非常优秀的团队–Yalantis,他们写出了很多动画效果的代码,而且全部公开出来,我们可以直接使用,下面我提供一下连接和效果图,方便大家查找。
ContextMenu
Github地址:https://github.com/Yalantis/Context-Menu.Android效果图:
FlipViewPager.Draco
Github地址:https://github.com/Yalantis/FlipViewPager.Draco效果图:
Phoenix Pull-to-Refresh
Github地址:https://github.com/Yalantis/Phoenix效果图:
Euclid
Github地址:https://github.com/Yalantis/Euclid效果图:
Pull-to-Refresh.Tours
Github地址:https://github.com/Yalantis/Taurus效果图:
Side Menu
Github地址:http ...
高效Mac(二)
上一篇 高效mac(一)介绍了mac中配置终极命令zsh、iTerm、brewhome和git工具,本篇针对这些工具以及其他操作继续介绍,帮你快速开发。
Go2Shell工具在Windows电脑中我们执行git命令只需要在相关项目的文件夹下面右键打开git即可,但是在mac下没有右键打开,如果你想快速打开又不需要输入命令,那你就需要一个工具,就是Go2Shell工具,这个工具现已更新到3的版本了,但是打开会到设置界面,而不是打开命令工具到相关文件夹,因此建议到Appstore下载老的版本,下载安装完成会让你设置默认启动shell工具,可以选择系统自带的Terminal或者自己安装iTerm工具,配置完成之后就可以用Finder工具打开相关文件夹然后点击Go2Shell图标即可启动命令工具。
为了方便也可以将Go2Shell工具图标放置到Finder上面,操作为,按住commend键,用鼠标拖动Go2Shell图标拖动到Finder上方即可,删除也是相关操作。
Manico工具这是一款快速切换App工具,你可以设置要切换的应用,比如Dock栏的应用,或者自定义的应用,不需要再 ...